1. 简介
目前HA仅在Standalone模式和Flink on Yarn模式下支持,由于JobManager负则整个集群的任务调度和资源管理,所以存在单点故障
2. Standalone HA
2.1 zookeeper配置启动
Standalone 集群的高可用需要借助于zookeeper,这里分为两种情况
1. 已有zookeeper集群
直接启动zookeeper集群即可
2. 没有zookeeper集群
可以使用flink自带的zookeeper集群,需要在conf/zoo.cfg文件配置,添加如下内容,同步分发文件
server.1=linux01:2888:3888
server.2=linux02:2888:3888
server.3=linux03:2888:3888
启动flink自带的zookeeper集群
#启动
bin/start-zookeeper-quorum.sh
#停止
bin/start-zookeeper-quorum.sh
2.2 HA配置
首先配置master文件,保证jobManager个数>=2,这里在两个节点上分别配置一个jobManager,也可以在一台节点上配置两个jobManager,端口配置不同即可
linux03:8081
linux02:8081
然后修改flink-conf.yaml,添加如下配置
high-availability: zookeeper
high-availability.zookeeper.quorum: linux01:2181,linux02:2181,linux03:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /standalone01
high-availability.storageDir: hdfs:///flink/recovery
配置说明如下
配置 | 说明 | 是否必须 |
---|---|---|
high-availability | 高可用模式 | 必须 |
high-availability.zookeeper.quorum | zk服务地址 | 必须 |
high-availability.zookeeper.path.root | zk根目录下flink的目录 | 可选 |
high-availability.cluster-id | zk集群下唯一的id,用于区分不同的flink集群 | 可选 |
high-availability.storageDir | jobManger存放元数据的地址 | 必须 |
2.3 测试HA
首先我们启动flink集群
bin/start-cluster.sh
可以看到启动了两个jobMnager和两个taskManager
分别访问http://linux03:8081和http://linux02:8081
发现在访问http://linux02:8081时自动跳转到了http://linux03:8081
现在我们kill掉linux03上的jobManager
kill -9 6992
稍等一会在分别访问http://linux03:8081和http://linux02:8081,发现linux03以不可访问
重启linux03的jobManager
bin/jobmanager.sh start
发现此时linux02已经变味active,而访问linux03则跳转至linux02
3. Flink On Yarn HA
在flink on yarn模式时集群的高可用依赖于yarn,因此只需要启动一个jobManager,当jobManager故障时由yarn重新启动
3.1 HA配置
yarn配置(可选)
设置yarn application最大重试次数(默认两次)
yarn.resourcemanager.am.max-attempts
4
The maximum number of application master execution attempts.
flink配置
在standalone模式的HA配置的基础上新增yarn.application-attempts: 10,代表在yarn上的flink application 可以重启 9次(重启9次+1次初始启动),如果因为资源抢占,节点硬件故障或重新启动或NodeManager重新同步。这些重启不计入yarn.application-attempts
high-availability: zookeeper
high-availability.zookeeper.quorum: linux01:2181,linux02:2181,linux03:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /standalone01
high-availability.storageDir: hdfs:///flink/recovery
yarn.application-attempts: 10
3.2 测试HA
首先启动yarn session
bin/yarn-session.sh
访问yarn http://linux02:8088/cluster,可以看见yarn session已经启动
点击ApplicationMaster,进入flink webUI,在点击jobManager,可以发现此时jogManager存在于linux03节点
jps查看linux03节点
kill 掉 linux03上的YarnSession,发现application自动重启,且jobManager切换到了linux01
webui如下