【问题标题】:Flink TaskManager cannot connect to JobManager in docker swarm taskFlink TaskManager 无法连接到 docker swarm 任务中的 JobManager
【发布时间】:2017-02-08 15:16:26
【问题描述】:

我无法让 TaskManager 与 docker swarm 堆栈上的 JobManager 通信。

我使用到docker stack deploystack.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 中 nctelnet

但是,现在问题是(在 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


    【解决方案1】:

    如果你关注在 Github 上打开的 issue,你可以理解真正的问题是在 swarm 原生网络 VIP 分配上。我把它关掉了,现在一切正常。

    实际上,到目前为止,还没有办法从撰写文件中将其关闭,因此,我不得不切换到脚本部署而不是自动 docker stack deploy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多