集群环境版本升级
集群环境上版本升级与单机环境一样,也是按照停止旧版本服务->安装新版本->更新依赖->启动新版本服务的流程进行新版本升级。详细升级步骤如下。
获取新版本安装包,并解压到安装设备上。
停止旧版本的服务。 进入运行用户,在安装目录下,执行停止服务命令。可参考下面的示例,示例中执行用户名为 hengshi,旧版本安装路径为/opt/hengshi。
sh
sudo su - hengshi #切换到产品运行用户
cd /opt/hengshi #进入安装目标目录
bin/hengshi-sense-bin stop all #停掉老版本服务
- 安装新版本。安装前请参考集群配置信息配置 cluster-conf 中 hosts 和 vars.yml 两个配置文件内容,并将确保"hengshi-sense-cluster-[version]" 目录与目录 cluster-conf 在同一级目录。然后执行集群安装命令。操作时请参考下面示例。
shell
❯ ls
cluster-conf hengshi-sense-cluster-[version]
sh
sudo su - hengshi #切换到产品运行用户
cd hengshi-sense-cluster-[version] #切换到解压目标目录
./hs_install -m cluster -c ../cluster-conf #执行集群安装,自动备份上个版本的数据;特殊情况不要备份,与衡石技术支持确认后,参数 -s t 跳过备份
安装提示信息中的各个节点状态都为[unreachable=0,failed=0]时表示安装成功。
sh
PLAY RECAP ****************************************************************
Node-A : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Node-B : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Node-C : ok=18 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
- 更新系统依赖。该操作执行过程中需要用户在每台机器上都有 sudo 权限,执行成功后可以关闭 sudo 权限。请参考示例进行操作。
sh
sudo su - hengshi #切换到产品运行用户
cd /opt/hengshi #进入安装目标目录
bin/hengshi-sense-bin init-os all #初始化 os
提示
离线环境请使用 bin/hengshi-sense-bin init-os all-offline 跳过联网安装依赖
- 启动服务。 在安装目录下,执行启动命令。
sh
sudo su - hengshi #切换到产品运行用户
cd /opt/hengshi #进入安装目标目录
bin/hengshi-sense-bin start all #启动新版本服务
安装提示信息中每个节点状态均为[unreachable=0,failed=0]时,服务启动成功,升级任务完成。
sh
PLAY RECAP ***********************************************************************
Node-A : ok=4 changed=3 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
Node-B : ok=3 changed=2 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
Node-C : ok=3 changed=2 unreachable=0 failed=0 skipped=3 rescued=0 ignored=0
回滚
解压回滚主要操作是将 backup 目录下最近产生的一个备份压缩包的内容恢复到部署位置(包括:程序,配置,数据)。
首先进入 backup 目录,选择最近的压缩包进行解压,这里一定要确认压缩包的时间。 示例中选择hengshi-20210819163228目录下的压缩包进行解压,该压缩包的时间为2021-08-19_16:32:28
- 准备回滚文件 登录产生备份数据的服务器,一般在 metadb 所在的机器上,比如 Node-A,将备份包复制到集群内每台服务器
shell
ssh Node-A
nodes=(Node-B Node-C) #除当前服务器外其他所有机器
for host in ${nodes[@]}; do
rsync -avP /opt/hengshi/bakcup/hengshi-20210819163228 ${host}:/opt/hengshi/bakcup/;
done
- 恢复回滚程序 在每台机器上展开备份数据
shell
cd /opt/hengshi
bin/hengshi-sense-bin stop all
nodes=(Node-A Node-B Node-C) #集群中每台服务器
for host in ${nodes[@]}; do
ssh ${host} "cd /opt/hengshi; tar -xf backup/hengshi-20210819163228/bin_conf_lib.tar.gz";
done
- 恢复回滚数据 在 metadb 的服务器上, 比如 Node-A
shell
cd /opt/hengshi
mv pg_data pg_data.bak
bin/hengshi-sense-bin init metadb
bin/hengshi-sense-bin start metadb
bin/dbrestore.sh -m metadb -l backup/hengshi-20210819163228 -t metadb_backup.2021-08-19_16-33-14[.tar.gz]
bin/hengshi-sense-bin stop metadb
bin/hengshi-sense-bin start all
- 清理旧数据 回滚后,经业务检查没有问题后,执行以下清理操作
shell
nodes=(Node-A Node-B Node-C) #集群中每台服务器
for host in ${nodes[@]}; do
ssh ${host} "cd /opt/hengshi && rm -rf pg_data.bak; cd backup/hengshi-20210819163228 && rm metadb_backup.2021-08-19_16-33-14 -rf;"
done