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