У меня есть два контейнера A и B, живущих в разных узлах, которые разделены целым rnet. Они оба хотят поговорить с сервисом, который также находится на линии rnet. Из-за настроек сети B не может напрямую общаться со службой, но A может.
Интересно, можно ли сделать A реле для B, чтобы B мог общаться со службой через A?
Обратите внимание, что реле должно быть двунаправленным. И A, и B могут подключаться к порту на службе, а служба также может подключаться к порту на A и, в идеале, к другому порту на A, который перенаправляется на порт на B.
У меня есть несколько идеи в уме, ни одна из них не кажется правдоподобной:
- Использование docker оверлейной сети. Кажется, что оверлейная сеть может заставить два контейнера общаться друг с другом в разных сетях, но я не уверен, оптимизирован ли он для сетей, которые находятся между inte rnet, и даже если это так, я понятия не имею, как заставить A действовать как реле. Но если это возможно, пожалуйста, дайте мне знать, как это можно сделать.
- Настройте прокси tcp или udp на A, чтобы использовать B. Я не знаю, существует ли такая вещь и может ли она работать в двух направлениях.
- Сделайте так, чтобы B установил sh VPN-соединение с A, поэтому A перенаправит запрос B. в службу. Но возможно ли настроить VPN внутри контейнеров?
Предлагает ли docker другие утилиты, чтобы помочь с этим? Как заставить контейнер действовать как реле, обычно реализуемое? (Я полагаю, что «реле» может быть неправильным термином, хотелось бы его исправить, если существует более подходящий термин.)