flink taskmanager无法连接到docker swarm任务中的jobmanager

pgccezyw  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(742)

我无法使taskmanager与docker swarm堆栈上的jobmanager通信。
的内容 stack.yml 我用来 docker stack deploy 是:

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 是根据自述文件@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.rpc.address0.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:*                           -

我甚至可以 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

hmtdttj4

hmtdttj41#

如果您关注github上打开的问题,您可以理解真正的问题是swarm本机网络vip分配。我关掉了,一切都正常了。
实际上,到目前为止还没有办法从compose file关闭它,所以,我不得不切换到脚本部署,而不是自动部署 docker stack deploy .

相关问题