注意:此文档用于 Ceph Nautilus 版本(包括社区版 Ceph 14.2.x 和红帽版 Redhat Ceph Storage 4.x)内的小版本升级,不能用于 Ceph 大版本升级(例如从 Ceph Luminous 升级到 Ceph Nautilus)。
1. Ceph 集群简介
Ceph Nautilus 集群包括的角色如下:
- mon:monitor 节点,用于集群选主。节点数量:3。
- mgr:manager 节点,用于集群管理,包括监控,告警等。节点数量:3。
- osd:存储节点,用于存放 ceph 集群所有数据。节点数量:所有节点。
- mds:cephfs 元数据节点,用于管理 cephfs 文件系统元数据。节点数量:3。
- rgw:对象存储网关,用于对外提供 AWS S3 API 接口。节点数量:所有。
2. 升级步骤
根据官网升级文档,总结升级顺序如下:
升级 mon 节点 ——> 升级 mgr 节点 ——> 升级 osd 节点 ——> 升级 mds 节点 ——> 升级 rgw 节点
2.1 升级前准备
- 设置集群 osd 状态为 noout,nodeep-scrub
# ceph osd set noout
# ceph osd set nodeep-scrub
2.2 升级 mon 节点
- 升级所有 mon 节点的 rpm 包
- 依次重启每个 mon 节点的 mon 服务
# systemctl restart ceph-mon.target
- 所有 mon 服务启动后,确认 monmap 版本
# ceph mon dump | grep min_mon_release
应该报告:
min_mon_release 14 (nautilus)
2.3 升级 mgr 节点
- 升级所有 mgr 节点的 rpm 包
- 依次重启所有 mgr 节点的 mgr 服务
# systemctl restart ceph-mgr.target
- 确认 mgr 功能正常
# ceph -s
...
services:
mon: 3 daemons, quorum foo,bar,baz
mgr: foo(active), standbys: bar, baz
...
2.4 升级 osd 节点
- 升级所有 osd 节点的 rpm 包
- 依节点重启所有 osd 服务
# systemctl restart ceph-osd.target
可通过 ceph versions
观察升级进度
# ceph osd versions
{
"ceph version 13.2.5 (...) mimic (stable)": 12,
"ceph version 14.2.0 (...) nautilus (stable)": 22,
}
2.5 升级 mds 节点
- 将 cephfs 的集群节点数量设置成 1
# ceph status
# ceph fs set <fs_name> max_mds 1
- 等待 cephfs 集群只剩一个节点为 active
# ceph status
- 将所有 standby 的 MDS 服务停止
# systemctl stop ceph-mds@<daemon_name>
- 确保只有一个 MDS 服务在线,并且为 rank 0
# ceph status
- 升级所有 mds 节点的 rpm 包
- 重启 active 节点的 mds 服务
# systemctl restart ceph-mds.target
- 启动 standby 节点的 mds 服务
# systemctl start ceph-mds.target
- 将 cephfs 集群的 max_mds 数量还原
# ceph fs set <fs_name> max_mds <original_max_mds>
2.6 升级 rgw 节点
- 升级所有 rgw 节点的 rpm 包
- 重启所有 rgw 节点的 rgw 服务
# systemctl restart ceph-radosgw.target
2.7 升级后操作
# ceph osd unset noout
# ceph osd unset nodeep-scrub