【问题标题】:Incorrect Nimbus host resolutionNimbus 主机分辨率不正确
【发布时间】:2019-02-23 22:09:16
【问题描述】:

我在单独的 docker 容器中运行 Apache Storm Nimbus 和 Supervisor,使用 https://hub.docker.com/_/storm/。这些容器在同一个 AWS EC2 实例上运行。 我用来启动 Nimbus Container 的命令是

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 地址返回,storm 无法连接到该地址。

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 容器内部发送回 Storm 的方法,而不是私有 IP 地址吗?

【问题讨论】:

    标签: docker amazon-ec2 apache-storm


    【解决方案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

    【讨论】:

    • 谢谢。这已经解决了。
    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多