Ambari升级失败回滚修复(数据库rollback+降级downgrade+bugfix)

一.背景介绍

之前一直在使用Ambari的2.2.18版本,作者在一次试图升级的过程中因操作不当导致了升级失败。几经周折,最终实现回滚操作,鉴于目前关于ambari的升级失败回滚及数据库rollback的资料很少很零散,笔者总结了这篇文章,和大家分享。遇到升级失败的问题,请仔细阅读本文,应该都能找到解决办法。

二.误操作

  1. 2.2到2.4升级是需要分开升级ambari-server/agent/grafana/ambari metrics collector等多个组件的,且顺序必须按照官方文档要求。没有升级前就启动ambari server会导致不可预知的错误。
  2. ambari-server web UI的backgroud options如果卡住不动,一定是有报错心跳等待中,切记不要发送大量的暂停终止操作。正确的做法是查看/var/log下面的相关日志,排除问题后,自然option会继续。
  3. 切忌在没有备份数据库的情况下执行ambari-server reset,否则将失去现有集群,重新回到ambari的安装界面。
  4. 在一切升级操作前务必备份数据库ambari、ambarirca。同时务必备份/etc/ambari-server/conf/ambari.properties文件,笔者推荐的操作是备份整个conf文件夹
    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

三.重点bug-fix记录

  • 错误升级或者降级导致数据库schema记录的server版本与server真实版本不一致。在执行ambari-server upgrade之前必须检查数据库里面的server版本信息是否和真实信息一致。
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。这种情况只能重装数据库或者重新初始化数据库了。

  • 报agent节点的common-services文件夹下面的服务metainfo.xml找不到
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

  • 部分升级完ambari后agent启动不了,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

  • 启动ambari-server的时候报各种检查数据库字段类型不符合,object类型错误等的...

解决方法:rollback数据库

四.数据库rollback(回滚)+服务downgrade(降级)

如果以上操作仍然无法解决升级失败的问题,那么最后万能一招就是全部回滚加降级了。这往往是危险操作造成的,比如笔者就遇到了升级失败,未检查数据库就upgrade甚至reset了ambari-server,最后全部通过以下的流程实现了业务恢复:

  1. ambri-server、agent全部关闭,ambari元数据库关闭
  2. 备份ambari.properties
  3. 所有节点的ambari.repo全部由之前的repo文件覆盖
  4. 所有版本全部降级到升级前版本,包含ambari-server,ambari-agent,grafana,ambari-metrics-collector,ambari-metrics-monitor,ambari-metrics-hadoop-sink。子节点的服务要所有节点全部降级,降级完查看版本:
降级命令:
替换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. 重新安装ambari元数据库
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

猜你喜欢

转载自blog.csdn.net/weixin_36714575/article/details/84790281