Nimbus 主机分辨率不正确
Incorrect Nimbus host resolution
我 运行 Apache Storm Nimbus 和 Supervisor 在单独的 docker 容器中,使用 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 最初使用正确的 public ip 地址和日志
2037 [main] INFO o.a.s.u.NimbusClient - Found leader nimbus : ip-<private_ip_address>.us-west-1.compute.internal:6627
但是,你可以看到在上面的日志中私有IP地址是returns,storm无法连接到它。
Caused by: java.lang.RuntimeException: org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: ip-<private_ip_address>.us-west-1.compute.internal
有人可以指出将 public IP 地址从 docker 容器内部而不是私有 IP 地址发送回 Storm 的方法是什么吗?
中计算出它的 hostname/port
如您所见,您应该在 storm.yaml 中设置 storm.local.hostname
。
我 运行 Apache Storm Nimbus 和 Supervisor 在单独的 docker 容器中,使用 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 最初使用正确的 public ip 地址和日志
2037 [main] INFO o.a.s.u.NimbusClient - Found leader nimbus : ip-<private_ip_address>.us-west-1.compute.internal:6627
但是,你可以看到在上面的日志中私有IP地址是returns,storm无法连接到它。
Caused by: java.lang.RuntimeException: org.apache.storm.thrift.transport.TTransportException: java.net.UnknownHostException: ip-<private_ip_address>.us-west-1.compute.internal
有人可以指出将 public IP 地址从 docker 容器内部而不是私有 IP 地址发送回 Storm 的方法是什么吗?
如您所见,您应该在 storm.yaml 中设置 storm.local.hostname
。