适用场景
- 产品:
ZCF - 组件:
ZStack Cloud - 版本:
5.3.x、5.5.x - 操作系统软件源类型:
h84r/ky10sp3 - 部署形态:双管理节点
- 触发条件:需要将平台升级到
5.5.x,以支持产品化sriov等功能,并同步把qemu/libvirt收口到新 LTS 版本。
问题现象
- 当前平台版本为
5.3.x。 - 目标是升级到
5.5.x。 - 测试区和生产区当前
qemu/libvirt版本不同,需统一升级到目标版本。 - 说明升级同时涉及
h84r和ky10sp3两套源。
判断方法
- 升级前先完成升级自检并检查
check.log。 - 平台升级后先重连一台非核心业务主机进行灰度验收。
- 组件升级后检查
qemu/libvirt/glib2版本以及 VM 实际 QEMU 版本。
原因说明
本次升级不仅是主控版本提升,还要补齐 qemu/libvirt 版本差异,以满足新功能支持与版本收敛要求。由于环境存在双管理和双源场景,必须先完成平台灰度升级与主机重连验收,再推进组件升级。
解决方案
- 升级前准备
- 风险等级:高
- 先运行升级自检脚本并检查
zsha2 status。 - 先关闭全局高可用。
- 提前申请 1 台非核心业务主机用于重连验收。
- 停止所有备份任务。
- 环境预处理
- 运行升级自检:
tar zxvf zstack-upgrade-check-master.tar.gz
cd zstack-upgrade-check-master
bash exec_tool.sh -p [MN_admin_password]
cat ./log/check.log
- 预期结果:确认升级环境无阻断项。
- 调整数据库超时并重启
mariadb:
wait_timeout=28800
interactive_timeout=28800
然后执行:
systemctl restart mariadb.service
- 预期结果:减少升级过程中的数据库超时风险。
- 修改全局配置:
UpdateGlobalConfig category=storageDevice name=enable.multipath value=ignore
UpdateGlobalConfig category=applianceVm name=connect.timeout value=1200
UpdateGlobalConfig name=update.os.parallelismDegree category=cluster value=5 或者 10
UpdateGlobalConfig name=update.os.parallelismDegree category=host value=10
- 预期结果:升级和主机重连相关参数准备完成。
- 备份双管理数据库:
zstack-ctl dump_mysql --file-name 4.x-mn1
zstack-ctl dump_mysql --file-name 4.x-mn2
- 预期结果:具备平台回退基础。
- 平台灰度升级到 5.5.x
- 双管理节点分别更新两套源:
bash zstack-upgrade -r ZStack-x86_64-DVD-5.5.1-260112-h84r-Enterprise.iso
bash zstack-upgrade -r ZStack-x86_64-DVD-5.5.1-260112-ky10sp3-Enterprise.iso
- 预期结果:管理节点具备目标版本源。
- 查询 VIP 所在节点:
zsha2 status
- 预期结果:明确 HA 升级执行节点。
- 解压 HA 包并赋权:
tar zxvf ZStack-Multinode-HA-Suite.tar.gz
chmod +x zsha2 zstack-hamon
- 预期结果:HA 升级工具准备完成。
- 停止 MN 服务并升级 HA 套件:
zsha2 stop-node
./zsha2 upgrade-ha -gencfg=true
- 预期结果:双管理 HA 套件升级完成。
- 执行平台灰度升级:
zsha2 upgrade-mn -grayscale -yes -db-root-pw $mysql_root_password -peerpass $peer_mysql_root_password $zstack_bin
- 预期结果:平台升级到
5.5.x。
- 升级完成后检查:
zstack-ctl status
zsha2 status
- 预期结果:管理节点和 HA 状态正常。
- 灰度验收
- 登录 UI 检查物理机、主存储、镜像服务器等资源状态。
- 预期结果:资源状态均为“已连接”。
- 优先手动重连一台非核心业务主机。
- 预期结果:该主机升级状态变为“已升级”。
- 检查:
zstack-cli QueryAgentVersion
- 预期结果:agent 版本记录正确。
- 根据存储类型检查:
- SharedBlock:
vgs、lsblk、multipath -ll、I/O 错误日志 - Ceph:
ceph -s - 管理节点日志:
management-server.log - 云主机:控制台
ping连通性 - 预期结果:主机、存储与业务都正常。
- 无异常后依次重连其他物理机。
- 关闭灰度变量开关并开启全局高可用:
QueryGlobalConfig category=upgradeControl name=grayscaleUpgrade
UpdateGlobalConfig name=grayscaleUpgrade category=upgradeControl value=false
- 预期结果:平台升级流程收口完成。
- 升级 qemu / libvirt / glib2
- 双管理节点继续使用
5.5.x两套源。 - 先单台升级:
qemu-storage-daemonqemu-kvmlibvirtglib2- 预期结果:在单主机先完成验证。
- 单台验证通过后,再对整个集群执行同类升级。
- 使用:
QueryLongJob uuid=xxx
跟踪升级进度。
- 用批量 ssh +
rpm -q qemu-kvm libvirt glib2检查全主机版本一致性。
- 预期结果:测试区和生产区都收口到目标版本。
qemu升级完成后,需要通过热迁移或重启让云主机生效新版本,并用:
virsh qemu-monitor-command $VMuuid --hmp info version
检查实际 QEMU 版本。
- 预期结果:VM 运行在新 QEMU 版本上。
验证方法
- 检查平台版本已升级到
5.5.x。 - 检查灰度重连主机和后续批量重连主机状态正常。
- 检查
QueryAgentVersion正确。 - 检查
qemu/libvirt/glib2版本达到目标版本。 - 检查 VM 实际 QEMU 版本已更新。
风险与回滚
- 风险:升级期间管理节点不可访问,不能申请新的云主机或云盘。
- 风险:
qemu/libvirt升级会全面影响虚拟化兼容性,需要充分验证。 - 风险:
qemu升级后需热迁移或重启才能让 VM 生效新版本。 - 风险等级:高。
- 回滚:双管理解耦为单管理、恢复旧 repo / installer / 数据库的完整回退路径。
