Nimbus主机分辨率不正确

时间:2019-02-20 03:40:40

标签: docker amazon-ec2 apache-storm

我正在使用https://hub.docker.com/_/storm/在单独的docker容器中运行Apache Storm Nimbus和Supervisor。容器在同一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>]'

我用来启动Supervisor容器的命令是

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

风暴最初使用正确的公共IP地址和日志

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

但是,您可以在上面的日志中看到私有IP地址已返回,风暴无法连接到该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地址从docker容器内部而不是私有IP地址发送回Storm的方法是什么吗?

1 个答案:

答案 0 :(得分:1)

Nimbus找出https://github.com/apache/storm/blob/e909b3d604367e7c47c3bbf3ec8e7f6b672ff778/storm-client/src/jvm/org/apache/storm/nimbus/NimbusInfo.java#L56中的主机名/端口

如您所见,应该在storm.yaml中设置storm.local.hostname