2015-07-09 5 views
5

После настройки Bind-имя хоста и связывать-порт в application.conf, как определено Akka FAQ, и доведение до кластера, я получаю ошибку:Акка Кластер с Bind-порт и связать имя хоста-

[ERROR] [07/09/2015 19:54:24.132] [default-akka.remote.default-remote-dispatcher-20] 
[akka.tcp://[email protected]:2552/system/endpointManager/reliableEndpointWriter-akka.tcp%3A%2F%2Fdefault%4054.175.105.30%3A2552-757/endpointWriter] 
dropping message [class akka.actor.ActorSelectionMessage] 
for non-local recipient[Actor[akka.tcp://[email protected]:32810/]] 
arriving at [akka.tcp://[email protected]:32810] 
inbound addresses are [akka.tcp://[email protected]:2552] 

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

Соответствующие части файла являются:

hostname = 54.175.105.30 
    port = 32810 

    bind-hostname = 172.17.0.44 
    bind-port = 2552 

Я попробовал это на 2,4-M1, M2 2,4, и 2,4-съёмка, все с тем же эффектом.

С кем-нибудь еще сталкивались? Какие-либо предложения?

Редактировать: Эта актерская система работает в ECS в докерных контейнерах. Конфигурация контейнера докера устанавливается в направлении от эфемерного диапазона до 2552 на частном IP-контейнере. ECS успешно отображает имя хоста: порт для bind-hosname: bind-port. Актер успешно работает и привязывается к локальному имени-bind-hostname и bind-port, но отбрасывает сообщения и испускает ошибку, описанную выше.

+0

Просто любопытно, что вы смогли установить 'bind-hostname' на мост вместо' 0.0.0.0'? путем установки типа сети на «host»? – Matt

ответ

0

Это было из-за неправильной конфигурации на моем конце. Остался еще один шаблонный код, который перекрывал порт привязки.

+0

любой шанс, что вы могли бы поделиться своей методологией? Я пытаюсь использовать обнаружение из коробки с amazon DNS (см. Запись в блоге), которая отображает записи SRV для служб. – Matt

6

bind-* Настройки конфигурации предназначены для использования в ситуациях, когда узлы Akka запускаются за NAT (или в контейнерах докеров). Вы настроили преобразование адресов с hostname: port - bind-hostname: bind-port?

В конкретной конфигурации, когда вы делаете

 
ctx.actorSelection("akka.tcp://[email protected]:32810/user/actor") ! "Hi" 

тогда кто-то 54.175.105.30 должен прослушивать TCP порт 32810 и перенаправление портов в 172.17.0.44:2552. Актерская система должна работать с вашей установленной конфигурацией по адресу 172.17.0.44:2552. Это так?

Также вы должны настроить это для каждого узла, который находится за NAT, потому что соединения между системами Actor - это peer to peer.

+0

Если вы посмотрите на сообщение об ошибке, то странная вещь кажется такой комбинацией адресов/портов: '54.175.105.30: 2552', которая объединяет' hostname' с 'bind-port'. Как это произойдет? – jrudolph

+0

Да, в этом случае мы используем докер в ECS и динамически настраиваем application.conf с помощью самоанализа AWS/ECS. IP-адреса и порты правильные, а порты пересылаются докерером из эфемерного диапазона (32810 в этом случае) в порт контейнера (в этом случае 2552). Каждый контейнер-докер, который запускается в ECS, запускает сценарий конфигурации introspection/application.conf для настройки самого себя и заполнения его семян. – babbitt

+0

@jrudolph: это мой вопрос. Похоже, что актер ищет сообщения, входящие в его порт bind-hostname: port, когда ему нужно посмотреть его имя bind-hostname: bind-port. – babbitt

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

  • Нет связанных вопросов^_^