Как использовать DNS в Docker для ссылки на все реплицированные контейнеры по одному DN? - PullRequest
1 голос
/ 01 ноября 2019

У меня есть стек микросервисов, работающих на одном хосте. Стек в основном состоит из 2 php веб-серверов без сохранения состояния и базы данных mysql с сохранением состояния. Я использую файл .env для импорта предопределенных имен контейнеров в файлы конфигурации php при выполнении команды docker-compose up. Контейнеры взаимодействуют друг с другом, используя предопределенные имена DNS вместо IP-адресов. Это работает, когда в стеке работает только один экземпляр каждого микросервиса.

Однако я хочу выполнить миграцию, чтобы перейти на Docker Swarm. будет несколько экземпляров каждого контейнера, которые будут динамически вращаться, и каждый из них получит уникальное DNS-имя;это нарушает мое разрешение DNS и, следовательно, нарушает мои службы, так как контейнеры больше не могут взаимодействовать друг с другом (они не могут разрешить IP-адреса друг друга через DNS-имя).

Что такое де-факто способ справиться с этим?

1 Ответ

0 голосов
/ 02 ноября 2019
  • При переходе на Docker Swarm вы будете иметь дело с сервисами Docker Swarm.
  • Службы могут иметь несколько реплик. Каждая реплика будет иметь уникальный виртуальный IP-адрес. Но это не проблема, потому что каждый сервис может общаться с другим сервисом по имени сервиса.
  • Имя службы зарегистрировано в DNS докера Входная сеть .

Например, java-сервис [stack_name]_app может подключаться к сервису [stack_name]_db по своему имени .

Балансировщик нагрузки Swarm Docker отправит запросы в репликиДБ службы в стратегии Round Robin.

И не имеет значения, сколько существует копий службы БД. Сервис может динамически увеличиваться / уменьшаться.

...