假设您在模式下运行在端口 80 上公开的服务global
,那么任何给定节点/主机的端口 80 上的入口流量是否会由该节点上运行的实例在本地处理?
另一种方法是,Swarm 将流量负载平衡到其中一个正在运行的实例,而不管它在哪个节点上运行。
答案1
经过我自己的一些实验后,似乎可以通过以下配置来实现。
version: '3.2'
services:
traefik:
image: [image]
ports:
- target: 80
published: 80
protocol: tcp
mode: host
deploy:
mode: global
endpoint_mode: dnsrr
重要部分是:
- 必须将版本设置为才能支持
3.2
该部分格式。ports
- 对于每个暴露的端口,设置
mode
为host
- 在
deploy
部分中,设置mode
为global
和endpoint_mode
到dnsrr
。
这将直接在集群中每个节点的 80 端口上公开服务,并且流量将由该服务直接处理。