升级软件版本在日常运维中是一个常见操作。 本文分享一下Ceph版本升级的一些经验。
一般升级流程和注意如下:
1. 关注社区Release notes 和 ceph-user邮件订阅列表,获取社区发布的最新版本
http://docs.ceph.com/docs/master/release-notes/
2. 根据经验一般刚出的版本问题比较多;出于稳定性的考虑,线上正式环境的版本一般会落后社区1个版本; 并在这段时间密切关注社区此版本的bug消息
3. 如果没有重大问题,则在测试环境升级测试,跑1周的稳定性测试,看是否出现问题
4. 如果测试环境无问题,正式环境升级
Ceph升级脚本
在其中一个MON执行如下命令:
cat <<'EOF'>update_ceph.sh #1. 改为国内源 export CEPH_DEPLOY_REPO_URL=http://mirrors.163.com/ceph/debian-jewel
export CEPH_DEPLOY_GPG_URL=http://mirrors.163.com/ceph/keys/release.asc #2. 配置 MON、OSD IP地址 MON="10.25.195.4 10.25.195.6 10.25.195.8"
OSD="10.25.194.2 10.25.194.3 10.25.194.4 10.25.194.5 10.25.194.6 10.25.194.7 10.25.194.8 10.25.194.9 \
10.25.194.10 10.25.194.11 10.25.194.12 10.25.194.13 10.25.194.14 10.25.194.15 10.25.194.16 10.25.194.17 \
10.25.194.18 10.25.194.19 10.25.194.20 10.25.194.21 10.25.194.22" #3. 升级MON和OSD上的Ceph #ceph-deploy install --release {release-name} ceph-node1[ ceph-node2]
ceph-deploy install $MON $OSD #4. 设置OSD noout避免产生rebalance ceph osd set noout # 5. 重启 MON/ OSD 进程 for i in $MON; do
ssh $i sudo systemctl restart ceph-mon@*
sleep 3s
done for i in $OSD; do
ssh $i sudo systemctl restart ceph-osd@*
sleep 3s done #6. 去掉设置OSD noout ceph osd unset noout #7. check mon/osd version ceph tell mon.* version
ceph tell osd.* version EOF