服务页面上健康状态跟后台pod状态不一致

  其他常见问题
内容纲要

概要说明

在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的正常结果

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。