内容纲要
概要说明
在TDH5.0以上的集群中,如果页面上服务角色报黄提示running with problem,但是后台的pod都是0/1 running的情况,可以使用本文档来排查。
详细说明
Manager的health 包括两部分: DAEMON_CHECK和VITAL_SIGN_CHECK。前者检查pod状态,后者检查服务状态,出现上述情况时候基本可以确定是后者检查问题。
可以按照下面的步骤来排查
1、排查步骤
1.重启manager跟agent
如果manager有开HA那么同时重启所有的manager
2.HA数据不同步
如果manager开启了HA,那么不同节点上数据不同步时候也可能导致该问题。
解决方案:停掉所有的manager,然后只启动最初始的那个manager,观察服务状态是否正常。
3.浏览器本身的问题
可以清理浏览器缓存、尝试使用无痕模式、更换其他浏览器(谷歌/火狐)
4.尝试后台直接用health check的命令验证状态
此时需要了解各个组件的health check原理才行,比如hdfs datanode是:
curl --connect-timeout 15 --max-time 15 "http://hostname
:${service['namenode.http-port']}/jmx?qry=Hadoop:service=NameNode,name=NameNodeInfo&&user.name=xxx" | python -c "
STATE_MAP = {
'In Service': 'SUCCESSFUL',
'Decommission In Progress': 'DECOMMISSIONING',
'Decommissioned': 'DECOMMISSIONED',
}
import sys; import json; jmx=json.loads(sys.stdin.read());
liveNodeJson = jmx[u'beans'][0][u'LiveNodes']
liveNodeMap = json.loads(liveNodeJson)
for node in liveNodeMap:
nodeInfo = liveNodeMap[node]
host = node.split(':')[0]
print host, STATE_MAP.get(nodeInfo[u'adminState'], 'FAILED')
"
hostname : NN的的hostname
namenode.http-port : 就是这个参数,一般是 50070
如果检查结果同样报错了,说明服务确实有问题,需要去对应组件的日志中寻找错误原因;如果检查结果中服务是健康的,说明确实是health check的误报,是Manager有问题。
5.条件允许的话可以尝试重启问题服务。
6.客户的环境自身问题
客户的网络环境做过一些特殊的限制等,影响了health check的正常结果