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集群迁移实践的更多相关文章

  1. hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  2. 1、hadoop HA分布式集群搭建

    概述 hadoop2中NameNode可以有多个(目前只支持2个).每一个都有相同的职能.一个是active状态的,一个是standby状态的.当集群运行时,只有active状态的NameNode是正 ...

  3. 转】Neo4j集群安装实践

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/2/ 感谢! Posted: Oct 29, 2013 Ta ...

  4. PB级数据实时查询,滴滴Elasticsearch多集群架构实践

    PB级数据实时查询,滴滴Elasticsearch多集群架构实践  mp.weixin.qq.com 点击上方"IT牧场",选择"设为星标"技术干货每日送达 点 ...

  5. Hive跨集群迁移

    Hive跨集群迁移数据工作是会出现的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等. 1. 迁移hdfs数据至新集群hadoop distcp -skipcrccheck ...

  6. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  7. 原创hadoop2.6.4 namenode HA+Federation集群高可用部署

    今天下午刚刚搭建了一个高可用hadoop集群,整理如下,希望大家能够喜欢.   namenode HA:得有两个节点,构成一个namenode HA集群 namenode Federation:可以有 ...

  8. 【转】最近搞Hadoop集群迁移踩的坑杂记

    http://ju.outofmemory.cn/entry/237491 Overview 最近一段时间都在搞集群迁移.最早公司的hadoop数据集群实在阿里云上的,机器不多,大概4台的样子,据说每 ...

  9. 基于HBase0.98.13搭建HBase HA分布式集群

    在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...

随机推荐

  1. R语言学习笔记—朴素贝叶斯分类

    朴素贝叶斯分类(naive bayesian,nb)源于贝叶斯理论,其基本思想:假设样本属性之间相互独立,对于给定的待分类项,求解在此项出现的情况下其他各个类别出现的概率,哪个最大,就认为待分类项属于 ...

  2. ArrayList 一个面试题

    我们现在有一个集合,集合里面有100个随机数,获取其中的基数: //假设我们得到了100个随机数 List<Integer> lists = new RandomArrayList< ...

  3. Flex 网络图

    这个是最简单的网络拓扑图开发,我已经帮你把所有拓扑元素封装好,然后直接添加就会具有相关的特性.并且的底层元素也开源,也方便大家oem修改.只需10分钟就可以建设一个完善的拓扑图. 首先下载工程或者SW ...

  4. 20155220 吴思其 2016-2017《java程序设计》第一周总结

    对第一章和第二章的学习 通过了前两章的学习,我了解到了java的由来以及JVM/JRE/JDK三大平台 JDK JDK 是 Java 语言的软件开发工具包. JDK是整个JAVA的核心,包括了Java ...

  5. 20155223 2006-2007-2 《Java程序设计》第3周学习总结

    20155223 2006-2007-2 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 有点好奇:为什么Java编程语言一定要使用java.math.BigDecimal才 ...

  6. 20155323 第三次实验 敏捷开发与XP实践

    20155323 第三次实验 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器 ...

  7. 《图说VR入门》——googleVR入门代码分析

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53013843 作者:car ...

  8. stl源码分析之vector

    上篇简单介绍了gcc4.8提供的几种allocator的实现方法和作用,这是所有stl组件的基础,容器必须通过allocator申请分配内存和释放内存,至于底层是直接分配释放内存还是使用内存池等方法就 ...

  9. Linux中如何安装Apache服务器

    Linux中如何安装Apache服务器 由于学习的需要,所有手动安装了一下Apache源码包,安装过程中的问题千奇百怪,但是如果弄清楚了问题出在哪里,那么也不是太难.如果有学习者出现安装中的问题,可仔 ...

  10. Mac下布置appium环境

    1.下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githu ...