Предполагая, что вы запускаете службу, доступную на порту 80 в глобальном
режиме, входящий трафик будет поступать на порт 80 для любого данного узла / хоста, а затем будет обрабатываться локально экземпляром, работающим на этом узле. ?
Альтернативой может быть то, что нагрузка Swarm балансирует трафик на один из запущенных экземпляров, независимо от того, на каком узле он работает.
После того, как я немного поэкспериментировал с этим, оказалось, что этого можно достичь с помощью следующей конфигурации.
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 на каждом узле в кластере, и трафик будет обрабатываться непосредственно этим сервисом.