flink ha zk集群迁移实践
flink为了保证线上作业的可用性,提供了ha机制,如果发现线上作业失败,则通过ha中存储的信息来实现作业的重新拉起。
我们在flink的线上环境使用了zk为flink的ha提供服务,但在初期,由于资源紧张,只是对zk进行了standalone的部署,但是在后期的使用中,发现单节点的集群很难提供很高的可用性,
所以就尝试将目前的standalone的zk服务扩展为cluster的zk服务,这其中,也踩了不少坑。
第一次尝试,将standalone的zk扩展为cluster
扩展为cluster很简单,找了两台集群,部署了zk服务,然后将三台节点的zk的zoo.cfg同步了下,然后重启每个zk服务。
结果失败了,线上的作业都死掉了。
这里的坑在于重启之后,zk的信息都丢掉了,成了一个空集群,已经在线上跑的作业拿不到相应的信息,就死掉了。
第二次尝试,将standalone的zk扩展为cluster
第一次之所以信息都丢了,是因为最初的那个standalone的机器,并没有一开始就重启,反而是放到最后重启了,导致他从别人往自己同步信息,自己的信息都丢了。
所以这次,前面还是一样的套路,但是zoo.cfg同步之后,先重启之前standalone的节点,之后重启其他两个节点。
完美,这次信息没有发生丢失,相应的数据都在。
结果作业还是挂了,为啥?因为重启zk的节奏太慢,信息虽然都在,但是zk不可用的时间太长。
然后又试了一次,这次加快节奏,别拖泥带水。
信息没有丢失,作业没有失败,但是作业重启了,因为虽然重启各个zk很快,但也要20s左右的时间,这个时间以及超过zk与客户端维护心跳的时间了。但万幸作业没有挂掉。
但是商量之后觉得,线上那么多作业,如果都restart一次,还是不太好。所以最终决定还是搭新集群,以前的作业走老集群,新提的作业走新集群,维护两个集群,直到没有人使用老集群,麻烦,但是对用户友好。
第三次尝试,组建完全新的zk集群
这个就很好弄了,先搭了个5个节点的zk集群,然后测试了下作业提交,没有问题,完美。
结果没几分钟就被打脸,用户反映之前的作业没法下线。
好吧,这个场景没考虑到。因为用户下线作业的时候,其实也需要到zk中去获取线上dispatcher的地址,但是新集群是不包含之前应用的信息啊。
没办法,只能同步zk信息了,好在在github上找到一个zkMove的项目,测了下,可以用,就赶紧同步了下相应的信息。
教训,其实可以在一开始就通过离线同步zk信息的方式来组建新的zk集群,这样就不会发生类似的事情了。
第四次尝试,复用yarn的zk集群
因为资源限制,上面搭的集群都在yarn的zk集群上,但是启用了2183端口。运维同学不干了,他们监控zk只监控2183接口。
所以最终还是复用yarn的zk集群,那么就又得找个夜深人静的时候去同步zk信息了。
其实最大的教训在于,一开始就应该将zk搞成cluster模式,哪怕是伪集群,即在一个节点上的集群,这样后期要扩容或者缩容,都会方便很多。
flink ha zk集群迁移实践的更多相关文章
- hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 1、hadoop HA分布式集群搭建
概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...
- 转】Neo4j集群安装实践
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! Posted: Oct 29, 2013 Ta ...
- PB级数据实时查询,滴滴Elasticsearch多集群架构实践
PB级数据实时查询,滴滴Elasticsearch多集群架构实践 mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达 点 ...
- Hive跨集群迁移
Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等. 1. 迁移hdfs数据至新集群hadoop distcp -skipcrccheck ...
- Nginx+Keepalived高可用集群应用实践
Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...
- 原创hadoop2.6.4 namenode HA+Federation集群高可用部署
今天下午刚刚搭建了一个高可用hadoop集群,整理如下,希望大家能够喜欢. namenode HA:得有两个节点,构成一个namenode HA集群 namenode Federation:可以有 ...
- 【转】最近搞Hadoop集群迁移踩的坑杂记
http://ju.outofmemory.cn/entry/237491 Overview 最近一段时间都在搞集群迁移.最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每 ...
- 基于HBase0.98.13搭建HBase HA分布式集群
在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...
随机推荐
- ubuntu18.04 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用)解决方法
出现问题: 最近打开系统之后没声儿,抽空解决以下,谁知道安装的时候出现了这个问题,一看就是锁被占了呗 直接重启大法.....不行,看来是锁分配出问题了,找了个解锁命令 jiang@ryzen:~$ s ...
- USB-Blaster驱动安装失败——文件哈希值不在指定目录中
右击此电脑,选择管理,选择设备管理器,更新USB-Blaster驱动出现问题 问题: 文件的哈希值不在指定的目录文件中,如图: 解决办法: Windows键+R→shutdown.exe /r /o ...
- vue搭建项目
vue-cli 作用:快速搭建项目脚手架 安装3.0:npm i -g @vue/cli 安装桥接工具:npm i -g @vue/cli-init (vue-cli 3和旧版使用相同的命令,所以2被 ...
- Asp.Net实现在线人数统计 (转)
原文件:http://blog.csdn.net/wxd_860825/article/details/4589292 利用Application对象和Session对象可以统计当前在线用户数量. 注 ...
- JQuery补充——获取与设置表单值
//写jQuery代码时注意前面一定要记得加$(function(){});,在文档加载完成后进行代码的编写 使用jQuery的表单对象属性来选择被选中的项::checked,详见文档选择器部分 根据 ...
- 【LG3230】[HNOI2013]比赛
题面 洛谷 题解 代码 \(50pts\) #include<iostream> #include<cstdio> #include<cstdlib> #inclu ...
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 的解决方法
解决方法如下: 方法 1.在线修改提高允许的max_connection_errors数量: A. 登录Mysql数据库查看max_connection_errors: mysql>show ...
- 提取验证码到winform上webbroswer和axwebbroswer
在网上只有webbroswer的代码,所以自己又修改了修改改成axwebbroswer的 public static class yanZhengMaHelp { //webbrowser验证码 pu ...
- OpenLDAP配置TLS加密传输
原文发表于cu:2016-07-04 参考文档: 基于OpenSSL自建CA与颁发SSL证书:http://seanlook.com/2015/01/18/openssl-self-sign-ca/ ...
- 剑指Offer66题的总结、目录
原文链接 剑指Offer每日6题系列终于在今天全部完成了,从2017年12月27日到2018年2月27日,历时两个月的写作,其中绝大部分的时间不是花在做题上,而是花在写作上,这个系列不适合大神,大牛, ...