Тайм-аут соединений маршрутизации Docker Swarm - PullRequest
0 голосов
/ 14 мая 2018

У меня есть две машины с Ubuntu 16.04 LTS, на которых я установил Docker 18.03.1-ce.Я создал рой между двумя хостами, который в основном работает (я могу развернуть сервисы, и они появляются и т. Д.).Единственная проблема заключается в том, что я не могу подключиться к опубликованным портам служб через какие-либо IP-адреса узлов, как описано несколько раз в документации Docker, если служба не запущена на этом конкретном узле.

Другими словами, если служба развернута на узле A и прослушивает порт 9000, я не могу подключиться к узлу B на порту 9000 и получить доступ к этой услуге;время соединения истеклоЕсли я пытаюсь подключиться к другому порту, скажем, к порту 9001, я получаю сообщение «Отказано в соединении», что означает, что входящая сеть как минимум прослушивает на порту 9000, и я могу проверить это с помощью netstat.

Обе эти машины находятся в одной физической сети, и брандмауэры отключены (ufw status говорит Status: inactive).

Входная сеть отображается на обоих узлах:

nodeA $ docker network ls
NETWORK ID          NAME                      DRIVER              SCOPE
345229fb3285        bridge                    bridge              local
09758f66413a        docker_gwbridge           bridge              local
3bf43f750513        host                      host                local
fq3cc4bfawp3        ingress                   overlay             swarm
9dbe769a1420        none                      null                local
kk67tdjc96vo        portainer_agent-network   overlay             swarm
m8fholkq3tmy        portal_default            overlay             swarm

nodeB $ docker network ls
NETWORK ID          NAME                      DRIVER              SCOPE
f8a837effb76        bridge                    bridge              local
e4521f7a132a        docker_gwbridge           bridge              local
312d6e547ec5        host                      host                local
fq3cc4bfawp3        ingress                   overlay             swarm
85da22f22522        none                      null                local
kk67tdjc96vo        portainer_agent-network   overlay             swarm

И docker network inspect fq3 показывает, что у меня есть три контейнера в сети, один из них ingress-endpoint, а два других - мои собственные, и он показывает оба узла в Peers.

Если службапубликует порт 9000, и в результате оба узла прослушивают порт 9000, почему я могу подключиться только к порту 9000 на узле A (там, где работает контейнер), а время соединения истекло на узле B?

Как я могу диагностировать, почему входящая маршрутизация не работает, как описано?

...