Flink TaskManager не может подключиться к JobManager в задаче docker swarm

Мне не удается заставить TaskManager взаимодействовать с 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 image 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, и все работает правильно.

Однако ни один 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.address на 0.0.0.0 только в JobManager, и теперь он эффективно слушает:

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://[email protected]:6123/]] arriving at [akka.tcp://[email protected]:6123]
inbound addresses are [akka.tcp://[email protected]:6123]

Любая помощь будет оценена, спасибо!

ОБНОВЛЕНИЕ

Думаю, я изолировал проблему. Проблема открыта на github: https://github.com/docker/docker/issues/30874


person affo    schedule 08.02.2017    source источник


Ответы (1)


Если вы проследите за проблемой, открытой на Github, вы поймете, что настоящая проблема заключалась в назначении VIP для собственной сети роя. Я выключил и теперь все работает.

На самом деле, до сих пор нет возможности отключить его из файла компоновки, поэтому мне пришлось переключиться на развертывание по сценарию, а не на автоматическое docker stack deploy.

person affo    schedule 10.02.2017