Можно ли запускать узлы akka за NAT (каждый узел находится за отдельным nat, публичный порт привязан к частному)? В настоящее время я пытаюсь развернуть узлы akka в контейнере докеров. Docker использует открытый порт Nating для частного порта экземпляра, проблема в том, что адрес узла akka создается из akka.remote.netty.tcp.hostname, но в среде natted он отличается от общедоступного имени хоста. сообщения, поступающие с общедоступного интерфейса, отклоняются, потому что akka привязана к частному IP-адресу. Можно ли изменить адрес узла akka без учета akka.remote.netty.tcp.hostname, скажем, адрес текущего узла akka.tcp://[email protected]:2551, где 172.16.10.5 — akka.remote.netty .tcp.hostname, но я хочу изменить его на akka.tcp://[email protected]:2551, где 10.2.0.222 — общедоступный адрес, но akka по-прежнему должен прослушивать 172.16.10.5:2551.
узлы кластера akka за NAT (с использованием докера)
Ответы (2)
Возможно, вы можете указать Akka или Netty привязываться к определенному адресу и порту, но объявлять себя по другому. Я недостаточно хорошо понимаю Akka или Netty, чтобы знать, возможно ли это.
В противном случае есть три вещи, которые вы можете попробовать:
- проверьте, могут ли они объявить данный IP-адрес (один из хостов), но по-прежнему привязываться к
0.0.0.0
, а затем выполнить «привязку идентификационного порта», то естьdocker run -p 1234:1234 …
, который выставит порт 1234 вне контейнера на порт 1234 внутри контейнера ( таким образом немного смягчая NAT); - разверните кластер на одном хосте Docker и используйте внутренние IP-адреса — вы не сможете масштабироваться на несколько машин, но проверять распределенный код между его развертыванием в более крупной системе уже может помочь;
- используйте Pipework, который позволяет добавлять дополнительные интерфейсы к контейнерам и объединять несколько контейнеров (на нескольких хостах) вместе на единая сеть. Pipework официально не поддерживается Docker, но многие сочли его очень полезным для подобных сценариев.
person
jpetazzo
schedule
22.01.2014
похоже, что конвейер может помочь, я могу создать мост между физическим интерфейсом и интерфейсом контейнеров докеров и подключить узел докера к основной сети без использования NAT
- person frx; 23.01.2014
Вариант 1 (привязка к 0.0.0.0) невозможен с akka 2.3, но будет возможен с akka 2.4 с параметром «bind-hostname», представленным в github.com/akka/akka/issues/15007
- person Arnout Engelen; 03.04.2015
Да, возможно - вам нужно настроить bind-host
и bind-port
для удаленного взаимодействия в дополнение к обычным host
и port
.
Как настроить Akka за NAT из документации Akka.
Встроенная поддержка этого отсутствует, начиная с Akka 2.4.x; и 2.3.11 для подписчиков Typesafe.
person
Konrad 'ktoso' Malawski
schedule
10.08.2015