前言
我开动啦!
准备工作
首先我们需要检查集群的健康状态,确保集群健康才可以开始升级任务,否则可能出现意外的错误
ceph -s
然后我们需要检查当前系统中正在运行的 Ceph 版本,否则后续升级会出现意外事故(后续会讲,这是一个血与泪的教训),我们这里目前运行的是 Ceph 15,这里是个伏笔,后续会用到。
docker ps -a | grep ceph
# 或者使用如下命令来查看
cephadm version
接着我们前往官方镜像查看可用的镜像版本,并选择我们需要的镜像,截止 2023年09月28日,最新可用的版本是 v18.2.0,请注意,我们这里需要选择 x.y.z 这样格式的版本,否则 cephadm 将会因为无法拆分版本号导致产生数组越界错误
https://quay.io/ceph/ceph
我在这里直接选择了最新版 v18.2.0,然后执行了如下命令进行了系统的升级
ceph orch upgrade start --ceph-version 18.2.0
ceph UPGRADE_BAD_TARGET_VERSION: Upgrade: cannot upgrade/downgrade to 18.2.0
,导致集群进入 HEALTH_WARN 状态
接下来我们可以使用这些命令观察更新进度
# 获取更新信息
ceph orch upgrade status
# 查看更新进度
watch ceph -s
# 查看详细日志
ceph -W cephadm
这个时候可能提醒你 Telemetry 协议更新,需要重新签署,输入如下命令执行即可
ceph telemetry on --license sharing-1-0
ceph telemetry enable channel perf
接下来就是极其惊险的故障了,这个适合 mgr 已经升级成功了一个,keepalived 也已经切换到目标节点,开始出现报错
在我们的预案中并没有设计出这种情况,网络上也查不到相关的报错,ChatGPT 什么都说了但什么也没说,我们的心一下子悬到了嗓子眼
但是遇事不要慌,这个时候的当务之急肯定是要停止掉升级升级进程,于是我们输入了
ceph orch upgrade stop
停止了更新进程,并尝试回滚到旧版本
ceph orch apply alertmanager 2
ceph orch recofig alertmanager.172-18-88-1
ceph orch apply alertmanager 1
cephadm rm-daemon --name cephadm.7dcbd4aab60af3e83970c60d4a8a2cc6ea7b997ecc2f4de0a47eeacbb88dde46 --force
ceph orch daemon rm cephadm.7dcbd4aab60af3e83970c60d4a8a2cc6ea7b997ecc2f4de0a47eeacbb88dde46 --force
11.2. 暂停或禁用 cephadm Red Hat Ceph Storage 5 | Red Hat Customer Portal
vim /usr/share/ceph/mgr/cephadm/module.py
/var/lib/ceph/711a797a-47c7-11ed-802d-0b3cd85e5eb7/cephadm.7dcbd4aab60af3e83970c60d4a8a2cc6ea7b997ecc2f4de0a47eeacbb88dde46
ceph config-key get
ceph config-key rm config/global/container_image