Network placement of Docker managers and workers
I have a classic segmented network (a DMZ network and an internal LAN network with a router/firewall in between) and a Docker Swarm cluster compound by 3 nodes, all managers (Dm).
The way we have currently placed the docker manager nodes is this (look at the "Dm's" in the DMZ):
| / \
Internet: \|/ |
----------------------------------------------------
DMZ : Dm Dm Dm
----------------------------------------------------
LAN : (some non containerized backend services)
Я хотел узнать о реальной выгоде инвестирования в расширение этого единого кластера за счет дополнительных узлов в качестве рабочих (Dw) в DMZ и перемещения менеджеров (Dm) внутри локальной сети, например:
| / \
Internet: \|/ |
----------------------------------------------------
DMZ : Dw Dw
----------------------------------------------------
LAN : Dm Dm Dm + (some non containerized backend services)
Мое обоснование для изменения:
- Как уже упоминалось, избегайте наличия узлов менеджера докеров в DMZ, вместо этого переместите ваших менеджеров во внутреннюю локальную сеть и поместите 2 рабочих в DMZ.
- Разместите контейнеры обратного или прямого прокси в рабочих узлах, чтобы они, как обычно, слушали запрос в DMZ; Поместите серверы приложений или NoSQL-кэширование в менеджеры, чтобы они были во внутренней локальной сети, как обычно.
- Даже если вы добавляете два дополнительных узла (рабочих в демилитаризованной зоне), по причинам высокой доступности не используйте менее 3 управляющих узлов. Если они делают наоборот: добавьте больше рабочих узлов во внутреннюю локальную сеть, чтобы ваши менеджеры вообще не запускали какой-либо контейнер.
Имеют ли мои очки смысл? Если все в порядке, согласны ли вы с предыдущим опытом (так вы используете Docker Swarm)? Есть потенциальные проблемы?