在k8s手工搭建flink+zookeeper standalone高可用集群笔记

Posted 路过君_P

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在k8s手工搭建flink+zookeeper standalone高可用集群笔记相关的知识,希望对你有一定的参考价值。

方案

ZOOKEEPER 3节点
FLINK JOB-MANAGER 3节点 每个节点一个pod
FLINK TASK-MANAGER N节点 通过k8s replicas 扩缩容
负载均衡 1节点

FLINK容器镜像

使用dockerhub官方镜像 flink:1.14.4-scala_2.12-java11

FLINK配置

flink官方docker镜像使用环境变量FLINK_PROPERTIES注入配置,格式形如:

FLINK_PROPERTIES = jobmanager.rpc.address: flink-jobmanager-1.test.svc.cluster.local
jobmanager.memory.process.size: 896mb

  • flink-jobmanager-x

每个实例负载需单独配置

配置项说明
jobmanager.rpc.addressflink-jobmanager-x.test.svc.cluster.local通过rpc访问jobmanager的地址,每个jobmanager负载单独配置,如果不配置此项zookeeper中的服务注册地址会有问题
high-availabilityZOOKEEPER
high-availability.zookeeper.quorumzookeeper-cluster-1.test.svc.cluster.local:2181,zookeeper-cluster-2.test.svc.cluster.local:2181,zookeeper-cluster-3.test.svc.cluster.local:2181罗列zookeeper集群成员地址
high-availability.jobmanager.port6123部署高可用集群时必须配置此项,否则将使用随机端口,无法通过k8s服务映射
state.checkpoint-storagefilesystem使用文件系统保存checkpoint
state.checkpoints.dirfile:///flink/checkpoint/checkpoint保存地址
high-availability.storageDirfile:///flink/ha-storage/集群共享存储,保存如作业JAR包等数据
jobmanager.memory.process.size896mbjobmanager进程总内存大小

样例:

FLINK_PROPERTIES=jobmanager.rpc.address: flink-jobmanager-1.test.svc.cluster.local
high-availability.jobmanager.port: 6123
high-availability: ZOOKEEPER
high-availability.zookeeper.quorum: zookeeper-cluster-1.test.svc.cluster.local:2181,zookeeper-cluster-2.test.svc.cluster.local:2181,zookeeper-cluster-3.test.svc.cluster.local:2181
high-availability.storageDir: file:///flink/ha-storage/
jobmanager.memory.process.size: 896mb
state.checkpoint-storage: filesystem
state.checkpoints.dir: file:///flink/checkpoint/
  • flink-taskmanager
配置项说明
high-availabilityZOOKEEPER
high-availability.zookeeper.quorumzookeeper-cluster-1.test.svc.cluster.local:2181,zookeeper-cluster-2.test.svc.cluster.local:2181,zookeeper-cluster-3.test.svc.cluster.local:2181罗列zookeeper集群成员地址
high-availability.storageDirfile:///flink/ha-storage/集群共享存储,保存如作业JAR包等数据
state.checkpoint-storagefilesystem使用文件系统保存checkpoint
state.checkpoints.dirfile:///flink/checkpoint/checkpoint保存地址
taskmanager.numberOfTaskSlots2每个taskmanager的任务槽数量,默认为cpu核心数

样例:

FLINK_PROPERTIES=high-availability: ZOOKEEPER
high-availability.zookeeper.quorum: zookeeper-cluster-1.test.svc.cluster.local:2181,zookeeper-cluster-2.test.svc.cluster.local:2181,zookeeper-cluster-3.test.svc.cluster.local:2181
high-availability.storageDir: file:///flink/ha-storage/
state.checkpoint-storage: filesystem
state.checkpoints.dir: file:///flink/checkpoint/
taskmanager.numberOfTaskSlots: 2

服务

  • jobmanager
类型服务名称端口说明
cluster ipflink-jobmanager-x6123,6124,6125每个jobmanager负载单独配置,用于与taskmanager通信,6123为rpc端口(高可用下需配置),6124为blob端口(默认),6125为状态查询端口(默认)
node portflink-jobmanager-x-npxxx->8081用于通过负载均衡访问webui

负载均衡

通过flink-jobmanager-x-np服务映射的地址:端口号反代

以上是关于在k8s手工搭建flink+zookeeper standalone高可用集群笔记的主要内容,如果未能解决你的问题,请参考以下文章

FLINK ON K8S 基于Zookeeper和基于K8S原生HA的区别

Kafka集群搭建(亲测可用)

Flink+kafka实时统计本地环境搭建与代码实战

Flink+kafka实时统计本地环境搭建与代码实战

纯手工搭建K8s(单节点)

搭建单机版K8S运行Flink集群