Кластер Docker Swarm Hosts
Вероятно, это простой вопрос, но мне интересно, как другие это делают.
У меня есть кластер Docker Swarm Mode с 3 менеджерами. Допустим, у них есть IP
- 192.168.1.10
- 192.168.1.20
- 192.168.1.30
Я могу получить доступ к своему веб-контейнеру через любой из IP-адресов, через внутреннюю сетку маршрутизации и т. Д. Но если хост не работает с IP-адресом, я получаю доступ к своему веб-контейнеру, и я, очевидно, больше не буду маршрутизироваться в контейнер. Поэтому мне нужна какая-то отдельная запись DNS или что-то, что указывает на активный адрес в моем кластере.
Как вы, ребята, делаете это? Должен ли я добавить все три IP-адреса как записи A в DNS? Или есть балансировщик нагрузки / обратный прокси-сервер перед кластером?
Я полагаю, что существует более одного решения, было бы приятно услышать, как другие решили это:-)
большое спасибо
1 ответ
Предполагая, что ваш веб-сервер был запущен примерно так:
docker service create --replicas=1 -p 80:80 nginx:alpine
Кластер будет пытаться перепланировать одну реплику, если реплика отключится по любой причине. Имея только одну реплику, вы можете испытывать некоторое время простоя между удалением старой задачи и появлением новой задачи в другом месте.
Частично целью разработки функции сетки маршрутизации было упрощение конфигурации балансировки нагрузки. Поскольку в моем примере все члены кластера прослушивают порт 80, ваш балансировщик нагрузки может быть просто настроен на прослушивание всех трех ips. Предполагая, что балансировщик нагрузки может правильно определить, что один узел вышел из строя, задача будет перенесена куда-то в кластер, и любой из двух оставшихся узлов сможет маршрутизировать трафик через сетку маршрутизации.