专栏名称: DBAplus社群
围绕数据库、大数据、PaaS云,顶级大咖、技术干货,运营几个月受众过十万!成为运维圈最专注围绕“数据”的学习交流和专业社群!欢迎投稿,加入探讨。
目录
相关文章推荐
数据中心运维管理  ·  数据中心技术革新与基础设施升级指南 ·  3 天前  
数据中心运维管理  ·  边缘计算如何与数据中心相关联 ·  4 天前  
数据中心运维管理  ·  双市电与高压油机供电系统切换逻辑模式 ·  1 周前  
数据中心运维管理  ·  博大数据菲律宾融合智算中心10MVA送电成功 ... ·  5 天前  
数据中心运维管理  ·  AI成“吞电巨兽”!美监管机构警告:部分地区 ... ·  6 天前  
51好读  ›  专栏  ›  DBAplus社群

ZooKeeper故障节点替换过程详解

DBAplus社群  · 公众号  · 数据库  · 2017-05-25 07:19

正文


作者介绍

康壮大连楼兰科技股份数据库运维组负责人,主要负责集团内部MySQL、MongoDB、Redis数据库运维管理工作。曾在第三方数据库运维公司任职技术部经理,负责政府行业的Oracle数据库运维工作,具有Oracle OCP、OCM、MySQL OCP等相关认证、对数据库架构设计、故障处理、优化有深入的理解。


一、环境描述


我的生产环境ZooKeeper 版本3.4.6,5个节点组成的ZooKeeper集群。ZooKeeper集群为一套8个节点的Hadoop集群和HBase 集群提供高可用保障。


二、问题描述


因为某些特殊原因,需要替换掉myid为5(IP:10.10.10.30)的ZooKeeper节点,故障节点IP:10.10.10.30替换为10.10.10.37。10.10.10.37节点是现有环境的namenode节点,Hadoop用户、相关目录,授权、hosts文件已经满足ZooKeeper的部署要求。


三、ZooKeeper相关知识点


在ZooKeeper的设计中,集群中的任何一个节点的zoo.cfg文件内容是一样的,因此最好使用SVN把这个文件管理起来,保证每个机器都能使用一份相同的配置。


在配置文件中(zoo.cfg),可以按照这样的格式,每行写一个机器配置:server.id=host:port:port. 关于这个id,我们称之为Server ID,标识host机器在集群中的机器序号,在每个ZK机器上,我们需要在数据目录(数据目录就是dataDir参数指定的那个目录)下创建一个myid文件,myid中就是这个Server ID数字。


ZooKeeper有这样一个特性:集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。ZooKeeper 节点数一般为奇数个,比如我的环境部署了5个节点的ZooKeeper服务,如果有两个节点的ZooKeeper异常是不会影响ZooKeeper集群对外提供服务的。


四、部署新节点ZooKeeper


1、配置参数如下(zoo.cfg)

$ grep -v "^#" zoo.cfg |grep -v "^$"

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/data/ZooKeeper

clientPort=2181

server.1=10.10.10.33:2888:3888

server.2=10.10.10.34:2888:3888

server.3=10.10.10.35:2888:3888

server.4=10.10.10.36:2888:3888

server.5=10.10.10.37:2888:3888


2、关闭10.10.10.37主机


3、备份原有zoo.cfg文件,cp zoo.cfg zoo.cfg0420


4、本案例在现有10.10.10.37节点部署myid为5的ZooKeeper服务,从其它可用节点scp 软件包到10.10.10.37节点,修改配置文件主机IP,使用新主机的IP替换掉原有主机的IP


5、使用新的zoo.cfg文件,替换掉其他4个节点的zoo.cfg文件,使用scp远程传输直接覆盖


6、10.10.10.37节点创建myid 命令:echo “5” > /data/ZooKeeper/myid


五、修改Hadoop配置文件,然后替换所有Hadoop节点配置文件


1、修改hdfs-site.xml

$ grep -A 2 "ha.ZooKeeper.quorum" hdfs-site.xml

ha.ZooKeeper.quorum             host-10-10-10-49:2181,host-10-10-10-50:2181,host-10-10-10-36:2181,host-10-10-10-38:2181,host-10-10-10-30:2181

       


$ vi hdfs-site.xml把host-10-10-10-30 替换为host-10-10-10-37


2、修改yarn-site.xml

$ grep -A 2 "yarn.resourcemanager.zk-address" yarn-site.xml

                yarn.resourcemanager.zk-address            host-10-10-10-49:2181,host-10-10-10-50:2181,host-10-10-10-36:2181,host-10-10-10-38:2181,host-10-10-10-30:2181

                For multiple zk services, separate them with comma


$ vi yarn-site.xml把host-10-10-10-30 替换为host-10-10-10-37


六、修改HBase配置文件(HBase-site.xml),然后替换所有HBase节点配置


$ grep -A 2 "HBase.ZooKeeper.quorum" HBase-site.xml

                HBase.ZooKeeper.quorum             host-10-10-10-49,host-10-10-10-50,host-10-10-10-36,host-10-10-10-38,host-10-10-10-30

       

$ vi HBase-site.xml  把host-10-10-10-30 替换为host-10-10-10-37


七、重启相关服务


部署ZooKeeper节点比较简单,当初部署集群的时候怎么部署的,现在就重新部署一个节点就可以,注意修改zoo.cfg配置文件。其它依赖于ZooKeeper集群的相关服务比如Hadoop、HBase、Hive、flume等都需要修改配置文件,小技巧,记住修改的是xxx-site.xml文件关键字是site.xml文件。


接下来需要重启服务,启动顺序为ZooKeeper--->Hadoop--->HBase,关闭顺序为HBase--->Hadoop--->ZooKeepe。


具体命令如下:


1、重启zookeepe命令:./zkServer.sh restart


2、关闭HBase集群命令:./stop-HBase.sh


3、关闭Hadoop集群命令:

./stop-yarn.sh && ./stop-dfs.sh 

./yarn-daemon.sh stop resourcemanager


4、启动Hadoop集群命令:

./start-yarn.sh && ./start-dfs.sh 

./yarn-daemon.sh start resourcemanager


5、启动HBase集群命令:./start-HBase.sh


6、通过命令验证配置是否同步



可以看到所有相关系统的配置都已经同步到了新增的ZooKeeper-server中。


7、使用网页方式验证Hadoop集群和HBase状态,不同环境端口可能不一样

10.10.10.37:8088



10.10.10.37:50070



10.10.10.37:60010



八、遇到问题


1、直接启动新节点ZooKeeper报错信息



在部署好的ZooKeeper服务器直接启动会报上面的错误,更换了IP的主机无法直接加入ZooKeeper集群,需要先重启原有4台ZooKeeper集群才可以。


小结


  1. 目前ZooKeeper不支持动态添加节点,添加节点需要重启所有ZooKeeper

  2. ZooKeeper 添加、删除主要修改zoo.cfg文件,zoo.cfg文件需要备份保存好

  3. Namenode 的主备高可用依赖ZooKeeper,所以需要修改hdfs-site.xml

  4. Resouremanager的主备高可用依赖ZooKeeper,需要修改yarn-site.xml

  5. HBase的主备高可用依赖ZooKeeper,需要修改HBase-site.xml

  6. 如果有Hive、Flume也需要修改相关的配置

  7. 因为生产环境刚上线,所以直接重启了集群服务,如果实时性要求比较高,没有维护窗口,可以单独重启相关服务,尽可能减少影响。


相关专题:


精选专题(官网:dbaplus.cn)

◆  近期热文  ◆  

利用Shell脚本验证RMAN备份集和做定期恢复实验

由索引未被使用,看SQL开发规范落地

数据库超体:程序员撩妹神器

解放运维的双手,谈自动化运维管理平台设计

这是一篇最通熟易懂的Hadoop HDFS实践攻略!


◆  MVP专栏  ◆  

杨志洪杨建荣邹德裕韩锋欧阳辰

网易腾讯云百度朱祥磊卢钧轶


◆  近期活动  ◆ 

DAMS中国数据资产管理峰会上海站

峰会官网:www.dams.org.cn