Hbase2.0某台RegionsServer宕机的RCA以及如何预防

一、故障背景

HDP 的Ambari控制台显示某台主机的RegionServer服务下线

二、根本原因分析(RCA,Root Cause Analysis)

(1)从Ambari控制台手动start RegionServer服务,失败。

(2)检查这台主机上的RS有关日志,发现有多条记录:

org.apache.hadoop.hbase.ClockOutOfSyncException:
    Server 172.25.224.4,16020,1613788579799 has been rejected; Reported time is too far out of sync with master.
    Time difference of 45596ms > max allowed of 30000ms” 

意思是这台主机上的系统时钟落后主节点已超出30秒的阈值。

why1: 为什么这台机器的时间落后于主节点?
时间同步服务ntp下线,并且未能自动重启。

why2: 为什么ntp服务下线没能自动重启?
RS所在的云主机是用的阿里云ECS,经过咨询阿里云的售后支持人员,答复说虽然ECS预装时间同步服务,但是该服务下线之后并不会自动重启,需要用户手动维护。

三、如何解决和预防

【如何解决】
紧急解决方案: 先修改下线RegionServer机器上的系统时间,即date -s “2021-02-20 09:32:32”,再从Ambari控制台手动启动刚才下线的RegionServer服务,成功。

永久解决方案
分别在所有的master机器、所有的slave机器上的目录/etc/systemd/system 下创建自定义的配置文件ntp.server,内容是:
cat /etc/systemd/system/ntp.service

[Unit]
Description=ntp
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
PIDFile=/root/ntp.pid
ExecStart=/bin/systemctl start ntp
Restart=always
RestartSec=0.1
StartLimitInterval=0

再分别以root用户对这些机器操作以下两步:

/bin/systemctl enable ntp
/bin/systemctl daemon-reload

ntp服务启动后,需要确认一下各机器上的时间,正常的话没问题。

【如何预防】
系统层面的预防: 由于/etc/systemd/system/ntp.server已经生效,ntp服务会在异常退出的时候被自动重启。
预警策略: 笔者写了一个python程序,此程序用于每半小时访问HBase Master页面上的RegionServer健康状况,若有RegionServer下线就会第一时间通过钉钉发送告警。粉丝们如果有兴趣可以加我微信向我要,大家交流,共同进步。


版权声明:本文为qq_31598113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。