Використання приватних фізичних мереж у режимі Докер-рій


11

Я працюю над виробничою установкою з Docker в режимі рій (використовуючи Docker 17.03.1-ce). Буде задіяно 2 центри обробки даних. В обох центрах обробки даних всі машини мають як приватний IP, так і приватний (локальний до центру даних) IP в приватній мережі, тому буде 2 приватних мережі.

Посилання на спрощену схему візуалізації налаштування

Мережевий трафік через приватні мережеві інтерфейси безкоштовний, тоді як трафік через загальнодоступний інтерфейс не відбувається після деякого обмеження (і це повільніше), тому де можливо, я б вважав за краще мережевий трафік переходити через приватний інтерфейс.

Тепер, з того, що я розумію (я думаю), весь трафік між вузлами Докера в режимі рій буде проходити через той самий мережевий інтерфейс, який використовується для спілкування з майстрами рій, який у моєму випадку повинен бути загальнодоступним, щоб зробити багатопотокові мережі можливо. Однак найчастіше очікуваний трафік буде знаходитися між вузлами в одних і тих же постійних центрах, і було б дуже добре, якби Докер міг якось маршрутизувати трафік через мої приватні мережі, якщо вихідні та цільові вузли трапляються в одній приватній мережі.

Боюся, що це може бути неможливим, оскільки майстри рою не знають про ці приватні мережі та IP-адреси, які мають у них вузли.

Я можу придумати одне рішення - встановити VPN і розгорнути рій поверх цього, але це додає додаткової складності, і я віддаю перевагу чистому рішенню рій Докер.


Оновлення : як запропоновано в коментарі, основою для рішення може бути використання iptables для маршрутизації вихідного трафіку на приватні IP-адреси замість публічних. Однак, якщо я хотів би це зробити, моєю наступною проблемою буде те, як керувати всіма цими правилами. Маючи 10 серверів в постійному струмі, мені знадобиться 10 * 9 = 90 з них для маршрутизації всього можливого локального трафіку через приватну мережу. Я можу уявити, можливо, існує якийсь інструмент, який міг би допомогти з таким завданням, або я міг би створити його, але, можливо, є набагато простіший спосіб зробити це.


1
Ви можете використовувати iptables, щоб переписати ip призначення братів і сестер у тому ж центрі обробки даних до їх ips приватної мережі. Також це повинно бути на сервері за замовчуванням не так;)
n00b32

Так, ще кілька копань привели мене до такого ж висновку. Це, мабуть, буде зайвим, мені дійсно потрібен інструмент, щоб зробити це для мене автоматично (переписати всі IP-адреси між усіма вузлами кластера / DC). Зрештою, для N вузлів мені знадобляться (N-1) ^ 2 правила iptables.

Відповіді:


1

(Напевно, це має бути коментар, але поки не можна коментувати)

Оскільки ви не можете використовувати імена хостів та / або DNS для завантаження кластеру, я не бачу способу змусити кластерні обмінні дані плотів у правильній неметеріальній мережі, але я бачу, що ви можете використовувати ім'я інтерфейсу. Цікаво, що в документах роя не вказано, але проблема показує, що повідомлення про помилку очікує IP або інтерфейс.

Цікаво, чи можете ви встановити учасників кластеру для реклами за допомогою імені приватного інтерфейсу, щоб ви отримували максимум трафіку потрібним способом.

Не можу перевірити себе зараз, але буду наступного тижня, оскільки я можу зіткнутися з подібною проблемою для майбутнього проекту.


Дякую, будь ласка, повідомте мене, якщо ви дізнаєтесь що-небудь наступного тижня. Проблема, з якою ви пов’язані, стосується "старого" функціонування рою Docker, тоді як я використовую (і радив би вам скористатися) новий режим рою Docker, який є вбудованим і не вимагає зовнішнього зберігання ключів / цінностей.
Еде
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.