Amazon-Web-Services

ECS 上的 Flink taskmanager 無法連接到 EC2 上的 jobmanager

  • September 29, 2021

我有一個在 us-east-1b 中的 EC2 實例,它正在執行 flink 作業管理器,它負責通過 RPC 和歷史伺服器協調多個任務管理器之間的工作。我可以從 netstat 看到 jobmanager 正在監聽:::6123傳入的 taskmanager 連接。

我有一個 Auto Scaling 組,它會將 EC2 實例執行到與 EC2 實例相同的 az、子網和安全組中。

安全組允許所有埠上的所有流量從組中的任何源到組中的任何目標: 入境規則 出站規則

我將該 ASG 用作 ECS 任務的容量提供程序。然後,我嘗試在 ECS 中執行一個任務,該任務執行任務管理器並使用該 ASG。

任務管理器啟動,但不會連接到作業管理器:

2021-09-28 13:52:08,651 INFO  org.apache.flink.runtime.taskexecutor.TaskExecutor           [] - Could not resolve ResourceManager address akka.tcp://flink@ip-xxx-xx-x-xxx.ec2.internal:6123/user/rpc/resourcemanager_*, retrying in 10000 ms: Could not connect to rpc endpoint under address akka.tcp://flink@ip-xxx-xx-x-xxx.ec2.internal:6123/user/rpc/resourcemanager_*.

我已經 ssh-d 到由 ASG 執行的實例上,並確認我可以 curl 作業管理器ip-xxx-xx-x-xxx.ec2.internal:8081- 它可以工作。所以我知道taskmanager實例可以看到jobmanager實例。

總結一下:

  • taskmanager和jobmanager在同一個VPC,同一個AZ,同一個子網,同一個安全組
  • 安全組允許來自同一安全組中源的所有入站流量
  • 安全組允許所有出站流量到任何目的地
  • 作業管理器在手動創建的 EC2 實例上執行
  • 任務管理器在 ECS 作為 ASG 的一部分創建的 EC2 實例上執行。任務管理器執行在 ECS 上的容器中
  • 我可以從任務管理器節點捲曲作業管理器
  • taskmanager 和 jobmanager 通過 RPC 通信
  • 任務管理器不會將地址解析給作業管理器

為什麼我的任務無法連接?我還嘗試了公共 IP (v4) 和私有 IP (v4)。

今天我發現了為什麼這不起作用。

作業管理器配置為:

jobmanager.rpc.address: localhost

因此,在偵聽正確的 rpc 埠時,不接受到任何其他地址的流量。

當我更改它以匹配任務管理器時:

jobmanager.rpc.address: ip-xxx-xx-x-xxx.ec2.internal

然後任務管理器立即連接。

引用自:https://serverfault.com/questions/1078908