0

TaskManagerをドッカーのswarmスタック上のJobManagerと通信させることはできません。Flink 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 

ドッカーイメージaffo/flink:1.1.3https://github.com/apache/flink/tree/release-1.1.3-rc2/flink-contrib/docker-flink @ README次の組み込み画像のdockerhubにプッシュです。

ネットワークmy-netは、オーバーレイが接続可能なネットワークです。

DNS解像度を使って他のすべてのコンテナにpingを実行しようとしましたが、すべて正常に動作します。

ただし、TaskManagerはJobManagerに渡すことができません。

私はJobManagerログをレポート:http://pastebin.com/Ai5s4Xvr

そして、もう一つのタスクマネージャのログ:http://pastebin.com/ty5pZhSp

JMはVIP 10.0.42.7を持っています。 jobmanager.rpc.addressは、jobmanagerに設定され、10.0.42.7に解決されます。

問題を解決するための助けやヒントがあれば幸いです。

ありがとうございます!

UPDATE

私は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

おかげで再び

UPDATE私は最近だけJobManagerので0.0.0.0jobmanager.rpc.addressを変更するために管理し、今では効果的に聞いている:

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することができますTaskManagersから。

しかし、今の問題は、(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] 

任意の助けをいただければ幸いです、ありがとうございました!私は問題を隔離考える

UPDATE

。githubで開かれた問題:https://github.com/docker/docker/issues/30874

答えて

0

Githubで開かれた問題に従えば、本当の問題はswarmネイティブのネットワークVIP割り当てにあることがわかります。私はそれをオフにし、すべてが今動作します。

実際には、これまでのところ作成ファイルを無効にする方法はないので、自動docker stack deployではなくスクリプトによるデプロイに切り替える必要がありました。

関連する問題