2014-01-20 2 views
5

Возможно ли запустить узлы akka за NAT (каждый узел находится за отдельным nat, общественный порт DNAT'ed для частного доступа)? В настоящее время я пытаюсь развернуть узлы akka в контейнере докеров. Docker - это открытый порт общего доступа к частному порту экземпляра, проблема в том, что адрес узла akka создается из akka.remote.netty.tcp.hostname, но в окружении, отличном от общедоступного имени хоста. сообщение, поступающее из открытого интерфейса, отклонено, потому что akka привязан к private 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 привязываться по определенному адресу и порту, но объявить себя на другом. Я не понимаю Акку или Нетти достаточно хорошо, чтобы узнать, возможно ли это.

В противном случае, есть три вещи, которые вы можете попробовать:

  • проверить, если они могут объявить данный IP-адрес (один из хост), но по-прежнему связываются с 0.0.0.0, а затем сделать «порт идентичности «привязка», т.е. docker run -p 1234:1234 …, которая будет выставлять порт 1234 вне контейнера на порт 1234 внутри контейнера (таким образом, немного уменьшая NAT);
  • Разверните кластер на одном хосте Docker и используйте внутренние IP-адреса - вы не сможете масштабировать до нескольких компьютеров, но для проверки распределенного кода между его развертыванием в более крупную систему, которая уже может помочь;
  • Pipework, который позволяет добавлять дополнительные интерфейсы к контейнерам и объединять несколько контейнеров (на нескольких хостах) вместе в одной сети. Док-станция не поддерживается официальной поддержкой Docker, но многие люди считают ее очень полезной для подобных сценариев.
+0

похоже, что трубопровод может сделать трюк, я могу сделать мост между физическим интерфейсом и интерфейсом контейнеров докеров и подключить узел докеры к основной сети без использования NAT – frx

+0

Вариант 1 (привязка к 0.0.0.0) невозможен с помощью akka 2.3, но будет возможно с akka 2.4 с параметром «bind-hostname», представленным в https://github.com/akka/akka/issues/15007 –

2

Да, это возможно - вам нужно настроить bind-host и bind-port для удаленного доступа в дополнение к обычному host и port.

How to configure Akka behind NAT из документов Акка.

Родная поддержка для этого отсутствует с Akka 2.4.x; и 2.3.11 для Typesafe subscription customers.

Смежные вопросы