Я использую 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-адреса?