01_B_Flink高可用

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


flink 集群启动

分别访问http://linux03:8081和http://linux02:8081
发现在访问http://linux02:8081时自动跳转到了http://linux03:8081

webui

现在我们kill掉linux03上的jobManager


image.png
kill -9 6992

稍等一会在分别访问http://linux03:8081和http://linux02:8081,发现linux03以不可访问

image.png

重启linux03的jobManager

bin/jobmanager.sh start

发现此时linux02已经变味active,而访问linux03则跳转至linux02


image.png

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已经启动

yarn session启动

点击ApplicationMaster,进入flink webUI,在点击jobManager,可以发现此时jogManager存在于linux03节点
jobManager

jps查看linux03节点
image.png

kill 掉 linux03上的YarnSession,发现application自动重启,且jobManager切换到了linux01
image.png

webui如下
image.png

你可能感兴趣的:(01_B_Flink高可用)