Как открыть весь док-рой кластер для внешнего мира через публичный IP? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь внедрить кластер контейнерных приложений в производство, используя докер в режиме роя.

Позвольте мне описать очень минималистичный сценарий.Все, что у меня есть, это просто 5 aws-ec2 экземпляров.Ни одному из этих узлов не назначен общедоступный IP-адрес, а всем частным IP-адресам назначена часть подсети.

Например,

Узлы диспетчера

  • 172.16.50.1
  • 172.16.50.2

Рабочие узлы

  • 172.16.50.3
  • 172.16.50.4
  • 172.16.50.5

С помощью описанной выше инфраструктуры создали рой докеров с IP первого узла (172.16.50.1) в качестве - advertise-addr , чтобы остальные 4 узла присоединились к рому как администратору или рабочему со своими соответствующими токенами.

Я не хотел перегружать узлы диспетчеразаставляя их выполнять роль рабочих узлов тоже.(Это хорошая идея или недоиспользование ресурса?).

Поскольку узлы по 4 ядра, я размещаю 9 реплик моего веб-приложения, которые распределены на 3 рабочих узлакаждый из которых работает с 3 контейнерами, на которых размещается мое веб-приложение.

Теперь, имея в виду эту настройку, как мне следует разоблачить весь док-рой-кластер с VIP (виртуальным IP) для внешнего мира?для потребления?

пожалуйста, подтвердите мои следующие мысли:

1.Должен ли я иметь классическую настройку балансировщика нагрузки, такую ​​как сохранение обратного прокси-сервера на основе httpd или nginx или haproxy, которому назначен публичный IP-адрес, и заставить его балансировать нагрузку на 5 вышеупомянутых узлов, где развернут наш docker-swarm?

Один недостаток, который я вижу здесь, заключается в том, что вышеуказанный обратный прокси-сервер будет Single Point of Failure ?Любые идеи, как это может быть сделано отказоустойчивым / высокодоступным?я должен попробовать решение AnyCast?

2.Переходя к AWS ALB / ELB, который будет направлять трафик к вышеуказанным 5 узлам, где находится наш рой.

3.Если вам нужно сохранить отдельный балансировщик нагрузки, то для чего же в действительности используется балансировка нагрузки и обнаружение сервисов docker-swarm?

на что отвечает docker swarmпредоставить 1 виртуальный IP-адрес или имя хоста внешним клиентам для доступа к службам в кластере swarm?

Docker-swarm много говорит о наложенных сетях, но не уверен, как это относится кмоя проблема разоблачения кластера через VIP для клиентов в интернете.Должны ли мы всегда держать балансировщик нагрузки в курсе IP-адресов узлов, которые присоединяются к рою докеров позже?

, пожалуйста, пролите немного света!

1 Ответ

0 голосов
/ 11 июля 2019

При дальнейшем чтении я понимаю, что оверлейная сеть, которую мы создаем в узле менеджера роя, служит только для связи между контейнерами.

Единственное отличие от других сетевых режимов, таких как bridge, host, macvlan, заключается в том, что другие обеспечивают связь между контейнерами на одном хосте, а Overlay-сеть облегчает связь между контейнерами, развернутыми в разных подсетях. то есть, мульти-хостовая контейнерная связь.

с этим знанием в качестве главы, чтобы показать рой миру через один публичный IP-адрес, назначенный распределителю нагрузки, который будет распределять запросы по всем узлам роя. Это только мое понимание на высоком уровне.

Это то место, где мне нужны ваши данные и мысли, пожалуйста ... объясните отраслевой стандарт, как это обрабатывается?

...