Как заставить контейнер docker выступать в роли реле для другого контейнера? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть два контейнера A и B, живущих в разных узлах, которые разделены целым rnet. Они оба хотят поговорить с сервисом, который также находится на линии rnet. Из-за настроек сети B не может напрямую общаться со службой, но A может.

Интересно, можно ли сделать A реле для B, чтобы B мог общаться со службой через A?

Обратите внимание, что реле должно быть двунаправленным. И A, и B могут подключаться к порту на службе, а служба также может подключаться к порту на A и, в идеале, к другому порту на A, который перенаправляется на порт на B.

У меня есть несколько идеи в уме, ни одна из них не кажется правдоподобной:

  1. Использование docker оверлейной сети. Кажется, что оверлейная сеть может заставить два контейнера общаться друг с другом в разных сетях, но я не уверен, оптимизирован ли он для сетей, которые находятся между inte rnet, и даже если это так, я понятия не имею, как заставить A действовать как реле. Но если это возможно, пожалуйста, дайте мне знать, как это можно сделать.
  2. Настройте прокси tcp или udp на A, чтобы использовать B. Я не знаю, существует ли такая вещь и может ли она работать в двух направлениях.
  3. Сделайте так, чтобы B установил sh VPN-соединение с A, поэтому A перенаправит запрос B. в службу. Но возможно ли настроить VPN внутри контейнеров?

Предлагает ли docker другие утилиты, чтобы помочь с этим? Как заставить контейнер действовать как реле, обычно реализуемое? (Я полагаю, что «реле» может быть неправильным термином, хотелось бы его исправить, если существует более подходящий термин.)

...