本号的文章会不定期更新和勘误,要查看最新版本,现在就滑到文章结尾,点击阅读原文 , 立即可读到最新版本!
阿里云上快速扩展HDP节点之二:基于自定义镜像的HDP节点服务恢复
本来想用一篇文章介绍整个kylin平台在阿里云上试跑的案例。但是微信帖子对字数有要求,所以干脆做成系列,分成几个主题来说了。以下是第二篇:阿里云上快速扩展HDP节点之二:基于自定义镜像的HDP节点服务恢复
[TOC]
复制
通过自定义镜像创建的节点会有什么问题?
我遇到的情况
通过tail -f 命令查看:
异常分析
异常解决
修改/etc/hosts
修改 /etc/sysconfig/network
重启
重启服务
注意事项
通过自定义镜像创建的节点会有什么问题?
节点IP是由阿里云服务器所在区域指定的,不能自由选择。这样将导致每次从自定义镜像得到的节点IP配置都不一样。
/etc/hosts 因为IP变化了,IP~域名的对应关系也会发生变化。
如果不改IP,将导致域名无法解析。
HDP很多服务都基于域名访问。如果域名无法解析,服务就无法启动。
我遇到的情况
当我从自定义镜像恢复得到一个节点后,发现ambari上的服务全部是红色的,然后我尝试挨个重启,发现启动不成功,刚发出重启指令,进度条就变成了黄色状态。查看日志:
通过tail -f 命令查看:
tail -f /var/log/ambari-agent/ambari-agent.log
复制
异常:
ERROR 2016-02-19 21:20:16,535 script_alert.py:112 - [Alert][yarn_nodemanager_health] Failed with result CRITICAL: ['Connection failed to http://n01.kylin.hdp:8042/ws/v1/node/info (Traceback (most recent call last):\n File "/var/lib/ambari-agent/cache/common-services/YARN/2.1.0.2.0/package/alerts/alert_nodemanager_health.py", line 165, in execute\n url_response = urllib2.urlopen(query, timeout=connection_timeout)\n File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen\n return _opener.open(url, data, timeout)\n File "/usr/lib64/python2.6/urllib2.py", line 391, in open\n response = self._open(req, data)\n File "/usr/lib64/python2.6/urllib2.py", line 409, in _open\n \'_open\', req)\n File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain\n result = func(*args)\n File "/usr/lib64/python2.6/urllib2.py", line 1190, in http_open\n return self.do_open(httplib.HTTPConnection, req)\n File "/usr/lib64/python2.6/urllib2.py", line 1165, in do_open\n raise URLError(err)\nURLError: <urlopen error [Errno 111] Connection refused>\n)']
复制
还有:
ERROR 2016-02-19 21:20:16,537 script_alert.py:112 - [Alert][hive_webhcat_server_status] Failed with result CRITICAL: ['Connection failed to http://n01.kylin.hdp:50111/templeton/v1/status?user.name=ambari-qa + \nTraceback (most recent call last):\n File "/var/lib/ambari-agent/cache/common-services/HIVE/0.12.0.2.0/package/alerts/alert_webhcat_server.py", line 190, in execute\n url_response = urllib2.urlopen(query_url, timeout=connection_timeout)\n File "/usr/lib64/python2.6/urllib2.py", line 126, in urlopen\n return _opener.open(url, data, timeout)\n File "/usr/lib64/python2.6/urllib2.py", line 391, in open\n response = self._open(req, data)\n File "/usr/lib64/python2.6/urllib2.py", line 409, in _open\n \'_open\', req)\n File "/usr/lib64/python2.6/urllib2.py", line 369, in _call_chain\n result = func(*args)\n File "/usr/lib64/python2.6/urllib2.py", line 1190, in http_open\n return self.do_open(httplib.HTTPConnection, req)\n File "/usr/lib64/python2.6/urllib2.py", line 1165, in do_open\n raise URLError(err)\nURLError: <urlopen error [Errno 111] Connection refused>\n']
复制
还有:
ERROR 2016-02-19 21:20:16,542 script_alert.py:112 - [Alert][ams_metrics_monitor_process] Failed with result CRITICAL: ['Ambari Monitor is NOT running on n01.kylin.hdp']
复制
异常分析
所有的异常,都是connection refused .
这说明服务没有启动起来,或者根据该域名根本找不到这个服务。
正如我们要吃饭,你首先要找对“地方”(主机ip),然后再吃你“想吃的”(服务)。在吃到你想吃的东西之前,你要先找到地方,让域名正确解析。
这是让你“先找到地方”的意思。等域名指向了特定主机(ip),才去考察域名所指示的服务器上有没有相应的“服务”---才是解决”是否有你想吃的“。
所以,首先,得让域名正确解析:
异常解决
修改/etc/hosts
xxx.xxx.xxx.xxx n01.kylin.hdp
复制
以此建立ip和域名的映射关系。如果之前已经有了映射关系,那很可能ip已经变了,需要更新。使用:
ip a
复制
命令查看最新ip。
修改 /etc/sysconfig/network
/etc/hosts 里指示定义映射关系,而n01.kylin.hdp 本身是需要为主机专门指定的。
需要在:
/etc/sysconfig/network
复制
中指定。
配置如下:
NETWORKING=yes HOSTNAME=n01.kylin.hdp
复制
重启
通过reboot重启主机。
重启服务
待主机重启后,ambari 也随主机自动重启。
登录ambari,对 hdp 各个组件挨个重启即可。重启后,大量的服务和告警都消失了。
注意事项
单独修改 /etc/hosts 重启,是不管用的。
修改 /etc/sysconfig/network , restart , 悲剧了!因为公网ip无法再访问了!
而事实证明,修改 /etc/sysconfig/network 是有效的,修改hostanme 之后,不要重启网卡,只要重启主机即可!
阿里云上的网卡重启会出现外网无法访问的情况!不知道是不是个案?所以请不要轻易重启网卡。