Неверное разрешение хоста Nimbus - PullRequest
0 голосов
/ 20 февраля 2019

Я использую Apache Storm Nimbus и Supervisor внутри отдельных док-контейнеров, используя https://hub.docker.com/_/storm/. Контейнеры работают на одном экземпляре AWS EC2.Команда, которую я использую для запуска контейнера Nimbus:

docker run -p 6627:6627 --hostname <ec2_public_ip> -d --restart always --name nimbus storm storm nimbus -c storm.zookeeper.servers='[<zookeeper_hosts>]'

Команда, которую я использую для запуска контейнера супервизора:

docker run -p 6700:6700 --hostname <ec2_public_ip> -d --restart always --name supervisor storm storm supervisor -c storm.zookeeper.servers='[<zookeeper_hosts>]' -c nimbus.seeds='[<ec2_public_ip>]'

Все порты открыты в группе безопасности иэкземпляры zookeeper запущены и работают.

Когда я пытаюсь развернуть топологию из своего локального ящика, используя

storm jar topology.jar topologyClass

Storm изначально использует правильный общедоступный IP-адрес и регистрирует

2037 [main] INFO  o.a.s.u.NimbusClient - Found leader nimbus : ip-<private_ip_address>.us-west-1.compute.internal:6627

Однако вы можете видеть, что в приведенном выше журнале возвращается частный IP-адрес, к которому шторм не может подключиться.

Caused by: java.lang.RuntimeException: org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: ip-<private_ip_address>.us-west-1.compute.internal

Может кто-нибудь указать, каким будет подход к отправке общедоступного IP-адреса обратно в Storm из контейнера Docker вместо личного IP-адреса?

1 Ответ

0 голосов
/ 23 февраля 2019

Nimbus вычисляет свое имя хоста / порт в https://github.com/apache/storm/blob/e909b3d604367e7c47c3bbf3ec8e7f6b672ff778/storm-client/src/jvm/org/apache/storm/nimbus/NimbusInfo.java#L56

Как вы можете видеть, вы должны установить storm.local.hostname в вашем storm.yaml.

...