一、ambari 注册主机失败

1、前言

今天又有朋友咨询我 ambari 相关的问题,注册主机步骤出错。他说他试了好几次,无奈只能加我好友来寻求帮助。

经过我俩的分析与探讨,完美将问题解决。我认为该问题比较经典,有总结的必要,所以就有了本篇文章,希望后来者遇到类似错误,可以有个参考。

2、问题详情

点击 “Failed” 可查看失败详情,如下图所示:

也可以去报错的节点查看 /var/log/ambari-agent/ambari-agent.log 文件内容,看看还有没有别的发现。这里,报错日志和上述错误描述一致。

3、排查步骤

可参考社区讨论帖:

https://community.cloudera.com/t5/Support-Questions/Openssl-error-upon-host-registration/td-p/94255

1)排查 ambari-agent.ini 配置

ambari 注册主机,ambari-agent 节点会去连接 ambari-server 节点,如上图所示:Connecting to Ambari server at …

所以需要确保 /etc/ambari-agent/conf/ambari-agent.ini 文件中的 server.hostname 为 ambari-server 节点主机名或 ip 。例如:

hdp1.com 为 ambari-server 节点所在主机

配置如果修改,需要重启 ambari-agent 进程才可以生效,然后我们继续通过 ambari 界面来注册主机进行尝试。

(我那朋友就是这个地方配置错了,他以为这个地方是填写当前机器主机名)

==这里要特别强调一点:ambari server 在注册主机时,如 ambari-agent 未安装,则会自动安装并修改本配置,修改成 ambari-server 节点名称,该配置文件默认不必修改。==

2)openssl 版本不对

1
2
3
4
5
6
7
8
9
10
11
$ tail -f /var/log/ambari-agent/ambari-agent.log
INFO 2018-08-09 16:39:42,666 NetUtil.py:70 - Connecting to https://xxxx:8440/ca
ERROR 2018-08-09 16:39:42,669 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:579)
ERROR 2018-08-09 16:39:42,669 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions.
Refer to: https://bugzilla.redhat.com/show_bug.cgi?id=1022468 for more details.
WARNING 2018-08-09 16:39:42,669 NetUtil.py:124 - Server at https://xxxx:8440 is not reachable, sleeping for 10 seconds...
INFO 2018-08-09 16:39:52,669 NetUtil.py:70 - Connecting to https://xxxx:8440/ca
ERROR 2018-08-09 16:39:52,672 NetUtil.py:96 - EOF occurred in violation of protocol (_ssl.c:579)
ERROR 2018-08-09 16:39:52,672 NetUtil.py:97 - SSLError: Failed to connect. Please check openssl library versions.
Refer to: https://bugzilla.redhat.com/show_bug.cgi?id=1022468 for more details.
WARNING 2018-08-09 16:39:52,672 NetUtil.py:124 - Server at https://xxxx:8440 is not reachable, sleeping for 10 seconds...

经过分析上述日志,初步判断可能是 openssl 版本不对。

1
2
3
4
5
6
[root@ambari ~]# openssl version
OpenSSL 1.0.2k-fips 26 Jan 2017

[root@ambari ~]# rpm -qa | grep openssl
openssl-libs-1.0.2k-12.el7.x86_64
openssl-1.0.2k-12.el7.x86_64

如果低于 openssl-1.0.1e-16.el6.x86_64 版本,则需要更新到 openssl-1.0.1e-16.el6.x86_64 及以上版本

3)编辑 /etc/python/cert-verification.cfg 配置文件,将 [https] 节的 verify 项设为禁用

1
2
3
4
5
6
7
8
# Possible values are:
# 'enable' to ensure HTTPS certificate verification is enabled by default
# 'disable' to ensure HTTPS certificate verification is disabled by default
# 'platform_default' to delegate the decision to the redistributor providing this particular Python version

# For more info refer to https://www.python.org/dev/peps/pep-0493/
[https]
verify=disable

4)查看机器 python 版本

查看 /var/lib/ambari-agent/ambari-env.sh,默认指定的 python 版本路径为 /usr/bin/python2,所以需要检查该路径是否真实有效。

5)确定 ambari 所有节点是 Oracle JDK 1.8

在执行 ambari-server setup 时,会提示你安装 Oracle JDK ,所以咱需要确保所有 ambari 节点都安装 Oracle JDK ,这里推荐 jdk 1.8 即可。

所有节点替换为 jdk 版本后,建议重启执行下 ambari-server setup,指定 jdk 版本及路径,然后重启各 ambari-agent 节点。

==jdk 安装包如下载不到,需要帮助,可私聊或加我微信获取。==

6)修改 /etc/ambari-agent/conf/ambari-agent.ini 的 security 配置:

1
2
3
[security]
ssl_verify_cert=0
force_https_protocol=PROTOCOL_TLSv1_2

需要重启 ambari-agent 进程。

7)检查环境

  • 确保 selinux、防火墙都处于关闭状态。

  • 确保 /etc/hosts 文件中包含 ambari 各节点。

  • 确保 ambari-server 节点可以免密各 agent 节点。

基于以上 7 种,逐一排查,应该就可以将主机注册成功了。如果还是不成功的话,可以私聊我或加我好友咨询。

4、注册主机过程

1)ambari-server 免密操作各 agent 节点,如该节点未安装 ambari-agent 服务,则安装 ambari-agent 服务,修改 ambari-agent.ini 服务,启动 ambari-agent 进程;否则跳过上述操作。

2)ambari-server 节点会自动根据你在页面上填写的 repo url ,自动生成 ambari-hdp-xxx.repo 文件,里面包含了 HDP、HDP-UTILS、HDP-GPL baseurl 地址。这样方便后续 agent 节点安装对于的 hdp 服务。