【发布时间】:2017-02-08 15:16:26
【问题描述】:
我无法让 TaskManager 与 docker swarm 堆栈上的 JobManager 通信。
我使用到docker stack deploy的stack.yml文件内容为:
version: "3"
services:
jobmanager:
image: affo/flink:1.1.3
ports:
- "48081:8081"
command: jobmanager
networks:
- my-net
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: none
placement:
constraints:
- node.role == manager
taskmanager:
image: affo/flink:1.1.3
depends_on:
- jobmanager
command: taskmanager
networks:
- my-net
deploy:
mode: replicated
replicas: 4
restart_policy:
condition: none
placement:
constraints:
- node.role != manager
networks:
my-net:
external: true
Docker 镜像 affo/flink:1.1.3 是在 dockerhub 上的推送,该镜像是按照 README @https://github.com/apache/flink/tree/release-1.1.3-rc2/flink-contrib/docker-flink 构建的。
网络my-net 是一个覆盖可附加的网络。
我尝试使用 DNS 解析从其他容器 ping 每个容器,并且一切正常。
但是没有 TaskManager 可以通过 JobManager。
我报告 JobManager 日志:http://pastebin.com/Ai5s4Xvr
还有一个TaskManager的日志:http://pastebin.com/ty5pZhSp
JM 拥有 VIP 10.0.42.7。 jobmanager.rpc.address 设置为 jobmanager,解析为 10.0.42.7。
任何关于从哪里开始解决问题的帮助或提示将不胜感激。
非常感谢!
更新
我添加docker exec <jobmanager> netstat -tulpn的输出:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:40762 0.0.0.0:* LISTEN -
tcp 0 0 ::ffff:10.0.42.7:6123 :::* LISTEN 218/java
tcp 0 0 :::8081 :::* LISTEN 218/java
tcp 0 0 :::34963 :::* LISTEN 218/java
udp 0 0 127.0.0.11:57000 0.0.0.0:* -
docker exec <a_taskmanager> telnet jobmanager 6123:
telnet: can't connect to remote host (10.0.42.7): Connection refused
我还在 github 上放了一个可能与问题相关的链接:https://github.com/docker/docker/issues/28795。
再次感谢
更新
我最近设法仅在 JobManager 处将 jobmanager.rpc.address 更改为 0.0.0.0,现在它正在有效地监听:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.11:56218 0.0.0.0:* LISTEN -
tcp 0 0 :::6123 :::* LISTEN 218/java
tcp 0 0 :::8081 :::* LISTEN 218/java
tcp 0 0 :::55231 :::* LISTEN 218/java
udp 0 0 127.0.0.11:47549 0.0.0.0:* -
我什至可以从 TaskManagers 中 nc 或 telnet。
但是,现在问题是(在 JobManager 上):
2017-02-09 10:31:20,794 ERROR akka.remote.EndpointWriter
- dropping message [class akka.actor.ActorSelectionMessage] for non-local recipient
[Actor[akka.tcp://flink@10.0.42.7:6123/]] arriving at [akka.tcp://flink@10.0.42.7:6123]
inbound addresses are [akka.tcp://flink@0.0.0.0:6123]
任何帮助将不胜感激,谢谢!
更新
我想我隔离了这个问题。在github上打开的问题:https://github.com/docker/docker/issues/30874
【问题讨论】:
标签: apache-flink docker-swarm akka-cluster docker-swarm-mode