Использование частных физических сетей в режиме роя Docker

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

Link to simplified diagram visualizing setup

Сетевой трафик через интерфейсы частной сети является бесплатным, в то время как трафик через общедоступный интерфейс не превышает определенного предела (и он медленнее), поэтому, где это возможно, я бы предпочел, чтобы сетевой трафик проходил через частные интерфейсы.

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

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

Одно из решений, которое я мог придумать, - это настроить VPN и развернуть рой на кроме того, но это добавляет дополнительную сложность, и я бы предпочел чистое решение Docker Swarm.


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

11
задан 26 April 2017 в 10:15
1 ответ

(Вероятно, это должен быть комментарий, но пока не могу комментировать)

Поскольку вы не можете использовать имена хостов и / или DNS для начальной загрузки кластера, я не вижу способа заставить обмен кластером данные о правильной сети без измерений, но я вижу, что вы можете использовать имя интерфейса. Любопытно, что это не указано в документации роя , но проблема показывает, что сообщение об ошибке ожидает IP или интерфейс.

Интересно, можно ли настроить участников кластера для рекламы с использованием имени частного интерфейса, чтобы получать наибольший объем трафика так, как вы хотите.

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

1
ответ дан 2 December 2019 в 21:57

Теги

Похожие вопросы