Я запускаю службу traefik с systemd и использую поставщика файлов для балансировки нагрузки на кластер шлюза Ceph Rados и несколько других служб. У меня traefik установлен на 3 серверах таким образом, при этом keepalived перемещает связанный IP-адрес между серверами. Все это работает отлично.
Теперь у меня также есть настройка роя докеров с этими тремя серверами, настроенными в качестве менеджеров роя, и я настраиваю поставщика траэфик роя докеров, и все выглядит хорошо с панели инструментов traefik, за исключением того, что он фактически не может подключиться к службам, работающим в рое.
Я знаю, что это проблема сети, но я не уверен, как я должен справиться с этим с помощью docker swarm, когда traefik не работает в том же docker swarm. (Раньше я без проблем использовал traefik в качестве контейнера). Я знаю, что могу сделать так, чтобы службы открывали порт, а затем подключались к этому порту с хоста, но мне кажется, что это нарушит предложение обнаружения службы, если мне придется вручную настроить их в traefik.
Вот мой сервис docker-compose, с которым я тестирую
version: "3.6"
services:
server:
image: nginx:alpine
deploy:
replicas: 1
update_config:
order: start-first
labels:
- "traefik.http.routers.test1.rule=Host(`test1.fotosearch.com`)"
- "traefik.http.services.test1.loadbalancer.server.port=80"
- "traefik.http.routers.test1.tls.certResolver=letsencrypt"
- "traefik.http.routers.test1.entrypoints=https_1g"
- "traefik.http.routers.test1.service=test1"
- "traefik.http.routers.test1.tls=true"
- "traefik.docker.network=ingress"
- "traefik.enable=true"
ports:
- target: 80
protocol: tcp
published: 80
mode: ingress