最近工作中测试经常反映HA集群环境中出现脑裂情况,在这里总结一下解决方法。
脑裂出现原因:
查看集群环境压力(CPU历史负载):
sar -f /var/log/sa/sa17
可以看到环境压力较大,导致集群出现脑裂情况。
恢复措施:
1.先暂停集群的daemon,hbase,Hadoop服务.
dbserver.sh stop_server_all daemon,hadoop,hbase
2.进入zk客户端
- zkCli.sh
删除如下两个文件 rmr /hadoop-ha/mycluster/ActiveStandbyElectorLock
rmr /hadoop-ha/mycluster/ActiveBreadCrumb
3.进入如下路径
/bigdata/salut/components/hadoop/sbin
4.执行start-all.sh重启服务
- ./start-all.sh
5.查看Namenode状态应该已经恢复正常
hdfs haadmin -getServiceState nn1/nn2
注:
文中关于暂停服务和重启服务的脚本适你们个人情况而异。核心是将相关服务停止后删除zookeeper中的那两个文件。这两个文件用于决定集群中active节点在哪个node上,出现脑裂的原因就在于这两个文件中的配置出现问题,导致集群服务异常后不能正常将节点状态置为active。