docker - Nimbus 主机分辨率不正确
问题描述
我使用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>]'
我用来启动主管容器的命令是
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 容器内部而不是私有 IP 地址发送回 Storm 的方法是什么?
解决方案
如您所见,您应该storm.local.hostname
在storm.yaml 中进行设置。
推荐阅读
- java - 大十进制修剪到小数点后两位
- python - 如何使用 SQLalchemy 正确设置关联表
- string - MATLAB:如何从 2x1 或 nx1 字符串中删除字符?
- python - 根据列中的值范围填充 Nan
- c# - 尽管设置了 PrivateKey,但 Keyset 不存在
- python - DnD 随机遭遇生成器
- python - 尝试在 Django 上添加模型实例时出现服务器错误 500
- xaml - 为什么框架的边缘会被切断?带有 CornerRadius 的 CollectionView 内的框架
- mysql - 为什么“EXISTS”子查询不限于两个 WHERE 条件?
- c# - 使用 Json.NET 禁用特定类型的类型注释