Apache Flink 1.19.0 HA故障:主节点切换后URL异常致连接失败
Flink 1.19.0 HA集群切换后连接失败问题解决
问题场景
部署了HA模式的Apache Flink 1.19.0集群,正常状态下ZooKeeper的leader/resource_manager/connection_info节点可返回主JobManager的可访问IP。但手动停止主JobManager后,ZK选举出的新主节点URL为:
pekko.tcp://flink@127.0.0.1:44879/user/rpc/resourcemanager
集群内所有节点均无法连接该主节点,报错信息如下:
org.apache.pekko.remote.ReliableDeliverySupervisor [] - Association with remote system [pekko.tcp://flink@127.0.0.1:44879] has failed, address is now gated for [50] ms. Reason: [Association failed with [pekko.tcp://flink@127.0.0.1:44879]] Caused by: [java.net.ConnectException: Connection refused: /127.0.0.1:44879]
解决方案
1. 修正JobManager绑定地址配置
问题核心是新主JobManager向ZK注册了本地回环地址127.0.0.1,导致其他节点无法访问。需修改flink-conf.yaml中的关键参数:
- 设置
jobmanager.bind-host为JobManager节点的集群可访问IP或主机名(例如192.168.3.10或节点hostname) - 设置
jobmanager.rpc.address为相同的可访问地址
修改完成后,重启所有JobManager节点,验证ZK中leader/resource_manager/connection_info节点的内容是否已更新为正确的外部地址。
2. 调整Pekko RPC网络配置
Flink 1.19.0基于Pekko实现RPC通信,若Pekko绑定地址配置不当,会导致注册地址异常。检查flink-conf.yaml中的Pekko相关配置:
pekko.remote.netty.tcp.bind-hostname: <集群可访问IP/主机名> pekko.remote.netty.tcp.hostname: <集群可访问IP/主机名> pekko.remote.netty.tcp.bind-port: 6123
确保bind-hostname和hostname均指向集群内可互通的地址,而非127.0.0.1。
3. 清理ZK中残留的无效数据
手动停主JobManager可能导致ZK中残留旧的连接信息,影响新主节点的地址注册。操作步骤:
- 使用ZK客户端连接集群:
zkCli.sh -server <zk-server-ip>:<zk-port> - 删除Flink HA根节点(默认路径为
/flink):rmr /flink - 重启所有Flink节点,让集群重新在ZK中注册正确地址
4. 排查节点hostname解析问题
若配置中使用hostname而非IP,需确保集群所有节点能正确解析JobManager的hostname到对应IP:
- 检查各节点的
/etc/hosts文件,添加JobManager节点的hostname与IP映射 - 或直接在Flink配置中使用IP地址,规避hostname解析风险
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

