上篇文章简单叙述了Flink standalone集群的基础部署,在生产环境中假如只有1个jobmanager的话,那么这个节点一旦挂掉,所有运行的task都会中断,带来的影响比较大,因此在生产环境至少要保证jobmanager的高可用,至少2个节点,也可以将jobmanager和taskmanager两个实例运行到1个物理节点上,多个taskmanager和多个jobmanager并存实现高可用,高可用需要依赖zookeeper的故障恢复,因此要先准备好zookeeper集群,建议独立搭建zookeeper集群,不要用flink内置的单节点zookeeper,之前原有的环境如下:

bigdata1 - jobmanager

bigdata2,bigdata3,bigdata4 - taskmanager

目前zookeeper集群为:bigdata1,bigdata2,bigdata3,端口号为2181

接下来要进行jobmanager扩展,在bigdata4上面运行jobmanager,和bigdata1的jobmanager共同实现高可用.

首先在一个节点开始配置,这里现在bigdata1开始配置:

配置:conf/flink-conf.yaml 找到High Availability配置部分,这部分默认都是注释的也就是不使用高可用,需要手动去掉注释并且添加一些配置项,具体配置如下:

high-availability: zookeeper
high-availability.storageDir: file:///data/flink/ha
high-availability.zookeeper.quorum: bigdata1:2181,bigdata2:2181,bigdata3:2181
high-availability.zookeeper.path.root: /flink
high-availability.cluster-id: /flink_cluster

high-availability默认是NONE,表示不使用高可用,这里改成zookeeper

high-availability.storageDir 这个是高可用中用于存储一些较大的对象用于恢复,文档中建议配置所有节点都可以访问到的资源,推荐使用hdfs,这里配置的是本地文件系统,具体有效性需要验证,建议生产环境使用hdfs

high-availability.zookeeper.quorum 配置zookeeper集群

high-availability.zookeeper.path.root  配置flink在zookeeper中的path,整个集群要统一,这里是/flink;如果是多个flink集群使用同一个zookeeper集群,那么这里要区分开.

high-availability.cluster-id   集群的标识,整个集群要一致,在zookeeper下以及storageDir下都有这个cluster-id指定的目录,用于存放必须的协调数据

上面这些配置无误后,保存文件

配置masters,文件:conf/masters,添加bigdata4的节点

同时conf/slaves保持不变,仍然为bigdata2,bigdata3,bigdata4

然后将flink-conf.yaml和masters配置同步到集群其他所有节点,同时保证zookeeper服务已经正常运行

执行: bin/start-cluster.sh 启动集群,启动后会发现bigdata4多出了StandaloneSessionClusterEntrypoint进程,这个时候通过zookeeper客户端执行 get /flink/flink_cluster/leader/rest_server_lock 查看当前的jobmanager master可以一般会看到是bigdata1

然后可以尝试将bigdata1上面的StandaloneSessionClusterEntrypoint进程kill掉,通过bigdata4:8081访问web ui,这个时候故障转移flink日志可能会报错,稍微等待一段时间,然后界面就会加载成功,正常看到slots和task managers以及详细的任务,说明这个时候jobmanager成功进行了故障转移,实现了高可用,同时查看zookeeper上面的节点也会切换成bigdata4了

另外注意配置高可用之后,之前的flink-conf.yaml中的配置项jobmanager.rpc.port就不再生效,这个配置项只针对之前的单个jobmanager的独立集群,现在这个端口会自动选择并且多个jobmanager都是不一样的,但是我们不用去关心他,对使用flink没有任何影响.

以上就是flink jobmanager高可用的配置,配置起来还是比较简单的,推荐在生产环境中使用,集群稳定性更好.

参考文档: https://ci.apache.org/projects/flink/flink-docs-release-1.9/zh/ops/jobmanager_high_availability.html

对于新版的flink有时候可能是偶然的原因导致第一次启动flink集群的时候报一些莫名其妙的错误死活启动不起来,这个时候可以尝试重启zookeeper集群,删除对应的/flink节点或者调大zookeeper tickTime,再启动flink集群一般就正常了.

Flink Standalone集群jobmanagers高可用配置的更多相关文章

  1. Rabbitmq安装、集群与高可用配置

    历史: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多 ...

  2. RabbitMQ 集群与高可用配置

    集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务给客户端连接,进行消息发送 ...

  3. (转)RabbitMQ 集群与高可用配置

    集群概述 环境 配置步骤 集群概述 通过 Erlang 的分布式特性(通过 magic cookie 认证节点)进行 RabbitMQ 集群,各 RabbitMQ 服务为对等节点,即每个节点都提供服务 ...

  4. RabbitMQ集群和高可用配置

    概述 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScript.XMPP. ...

  5. 高可用OpenStack(Queen版)集群-3.高可用配置(pacemaker&haproxy)

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

  6. flink初识及安装flink standalone集群

    flink architecture 1.可以看出,flink可以运行在本地,也可以类似spark一样on yarn或者standalone模式(与spark standalone也很相似),此外fl ...

  7. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  8. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  9. Nginx+Zuul集群实现高可用网关

    代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...

  10. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

随机推荐

  1. 视觉slam十四讲CH5 ---相机与图像

    视觉slam十四讲 ---CH5 相机与图像 视觉slam中,作为主要传感器的相机自然起到着重要的作用,而相机拍摄的图像及其处理也是我们要做的工作之一. 1. 相机模型 单目相机的针孔模型 上图中的模 ...

  2. nginx和tomcat 反向代理 部署实例 直接运行

    1 前言 1.1 目的 为了正确的部署"ngix+memcached"特编写此部署手册,使安装人员可以通过部署手册知道如何部署系统,也为需要安装该系统的安装人员正确.快速的部署本系 ...

  3. Markdown表情参考

    emoji-github 文章内容来源 https://github.com/hoangdqvn/emoji-github/blob/master/README.md ️ Emoji-GIT Peop ...

  4. day08-Axios

    Axios 1.基本说明 Axios是一个基于promise的网络请求库,作用于node.js和浏览器中.它是 isomorphic 的 (即同一套代码可以运行在浏览器和node.js中).在服务端它 ...

  5. System.out.print重定向到文件实例

    该代码可以实现让System.out.print输出内容不再打印到控制台,而是输出到指定的文件中 <strong><span style="font-size:24px;& ...

  6. 从零搭建react+ts组件库(二)less模块化与svg引入配置

    在上一篇<从零搭建react+ts组件库(一)项目搭建与封装antd组件>介绍了使用webpack来搭建一个基于antd的组件库的基本框架,但是作为一个组件库,实际上还有很多的都还未引入, ...

  7. Python简单程序设计(Time篇)

    如题: 解题方式如下:

  8. 如何从容的打包上传图片对象--File,Blob,BASE64详解及转换方法

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 File() File() 构造器创建新的 File 对象实例. 语法 var myFile = new File(bits, name[ ...

  9. 详解SSL证书系列(6)了解HTTP及网络基础

    使用HTTP协议访问Web 你知道当我们在网页浏览器(比如Chrome)的地址栏中输入URL时,Web网页是如何呈现的吗?   Web页面当然不会凭空显示出来.根据Web浏览器地址栏中指定的URL,W ...

  10. 探索华为云CCE敏捷版金融级高可用方案实践案例

    本文分享自华为云社区<华为云CCE敏捷版金融级高可用方案实践>,作者: 云容器大未来. 一.背景 1.1. CCE 敏捷版介绍 云原生技术有利于各组织在公有云.私有云和混合云等新型动态环境 ...