之前一直在使用Ambari的2.2.18版本,作者在一次试图升级的过程中因操作不当导致了升级失败。几经周折,最终实现回滚操作,鉴于目前关于ambari的升级失败回滚及数据库rollback的资料很少很零散,笔者总结了这篇文章,和大家分享。遇到升级失败的问题,请仔细阅读本文,应该都能找到解决办法。
1.备份ambari数据库
pg_dump -U postgres ambari > /usr/local/ambari_bak/ambari_rec.sql
2.备份ambarirca数据库
pg_dump -U postgres ambarirca > /usr/local/ambari_bak/ambarirca_rec.sql
3.备份ambari-server的conf目录
cp -R /etc/ambari-server/conf /usr/local/ambari_bak
Current database store version is not compatible with current server version
分析:这里的database的version可能高于或者低于current server version,一般是升级的时候遇到的问题,这个时候表现为database version低于current server version,一般网上资料都是这种。这个时候应该执行ambari-server upgrade。但是笔者遇到的是降级时候发生的错误,表现为database version高于current server version。这种情况只能重装数据库或者重新初始化数据库了。
Caused by: org.apache.ambari.server.AmbariException: Stack Definition Service at '/var/lib/ambari-server/resources/common-services/PXF/3.0.0/metainfo.xml' doesn't contain a metainfo.xml file
分析:这个错误一般是未正确重装或者未完全卸载ambari-agent造成的。需要删除所有agent节点的/var/lib/ambari-agent目录,并在所有节点执行yum -y remove ambari-agent
('INFO 2013-03-06 10:37:42,580 NetUtil.py:58 - Failed to connect to https://localhost:8440/cert/ca due to [Errno 111] Connection refused
INFO 2013-03-06 10:37:42,580 NetUtil.py:77 - Server at https://localhost:8440 is not reachable,
分析:这个错误在网上的说法很多,有的是升级openssl,有的说升级oracle JDK,有的说修改但是笔者尝试都无果。一般这个错误会在手动安装ambari-agent或者部分版本升级ambari后导致。正确做法是修改/etc/ambari-agent/conf下面的ambari-agent.ini这个文件。可按照下面的流程验证:
1.这里的hostname一定是全部agent节点都填写主节点(ambari-server)节点的hostname
[server]
hostname=bdp01.szmg.com.cn
url_port=8440
secured_url_port=8441
2.如果无法解决,可尝试下面策略(增加protocol信息)
[security]
keysdir=/var/lib/ambari-agent/keys
server_crt=ca.crt
passphrase_env_var_name=AMBARI_PASSPHRASE
#下面这行是增加的
force_https_protocol=PROTOCOL_TLSv1_2
解决方法:rollback数据库
如果以上操作仍然无法解决升级失败的问题,那么最后万能一招就是全部回滚加降级了。这往往是危险操作造成的,比如笔者就遇到了升级失败,未检查数据库就upgrade甚至reset了ambari-server,最后全部通过以下的流程实现了业务恢复:
降级命令:
替换repo后 yum update
降级:
yum downgrade ambari-server
yum downgrade ambari-agent
yum downgrade grafana
yum downgrade ambari-metrics-monitor ambari-metrics-hadoop-sink ambari-metrics-collector
主节点:
[root@bdp01 package]# rpm -qa|grep ambari
ambari-metrics-collector-2.2.2.18-1.x86_64
ambari-metrics-monitor-2.2.2.18-1.x86_64
ambari-server-2.2.2.18-1.x86_64
ambari-metrics-hadoop-sink-2.2.2.18-1.x86_64
ambari-agent-2.2.2.18-1.x86_64
子节点:
[root@bdp07 conf]# rpm -qa |grep ambari
ambari-metrics-hadoop-sink-2.2.2.18-1.x86_64
ambari-metrics-monitor-2.2.2.18-1.x86_64
ambari-agent-2.2.2.18-1.x86_64
1.删除postgresql数据库
yum -y remove postgresql postgresql-libs
2.重装
yum -y install postgresql
3.数据库init
sudo service postgresql initdb
4.rollback
CREATE ROLE ambari WITH LOGIN PASSWORD 'bigdata';
CREATE ROLE mapred WITH LOGIN PASSWORD 'mapred';
create database ambari;
create database ambarirca;
psql -U postgres ambari < /usr/local/ambari_bak/ambari_rec.sql
psql -U postgres -d ambarirca < /usr/local/ambari_bak/ambarirca_rec.sql