7.4. 使用命令行界面升级存储集群
您可以在存储集群运行时从 Red Hat Ceph Storage 3.3 升级到 Red Hat Ceph Storage 4。这些版本之间的重要区别在于,Red Hat Ceph Storage 4 默认使用 msgr2 协议,该协议使用端口 3300。如果没有打开,集群将发出 HEALTH_WARN 错误。
升级存储集群时需要考虑以下限制:
-
默认情况下,Red Hat Ceph Storage 4 使用
msgr2协议。确保 Ceph 监控节点上打开了端口3300 -
将
ceph-monitor守护进程从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4 后,Red Hat Ceph Storage 3ceph-osd守护进程无法创建新 OSD,直到您将它们升级到 Red Hat Ceph Storage 4。 - 不要在升级进行时创建任何池。
先决条件
- Ceph 监控器、OSD 和对象网关节点的根级别访问权限。
流程
在运行 Red Hat Ceph Storage 3 时,确保集群至少完成了所有 PG 的完全清理。如果不这样做,会导致 monitor 守护进程在启动时拒绝加入仲裁,从而使它们无法运行。要确保集群至少完成所有 PG 的一个完整清理,请执行以下操作:
ceph osd dump | grep ^flags
# ceph osd dump | grep ^flagsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4,OSD map 必须包含
restore_deletes和purged_snapdirs标志。确保集群处于健康而干净的状态。
ceph health HEALTH_OK
ceph health HEALTH_OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于运行
ceph-mon和ceph-manager的节点,请执行:subscription-manager repos --enable=rhel-7-server-rhceph-4-mon-rpms
# subscription-manager repos --enable=rhel-7-server-rhceph-4-mon-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 4 软件包后,在每个
ceph-mon和ceph-manager节点上执行下列操作:firewall-cmd --add-port=3300/tcp firewall-cmd --add-port=3300/tcp --permanent yum update -y systemctl restart ceph-mon@<mon-hostname> systemctl restart ceph-mgr@<mgr-hostname>
# firewall-cmd --add-port=3300/tcp # firewall-cmd --add-port=3300/tcp --permanent # yum update -y # systemctl restart ceph-mon@<mon-hostname> # systemctl restart ceph-mgr@<mgr-hostname>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<mon-hostname>和<mgr-hostname>替换为目标主机的主机名。在升级 OSD 之前,请在 Ceph 监控节点上设置
noout和nodeep-scrub标志,以防止在升级过程中重新平衡 OSD。ceph osd set noout ceph osd det nodeep-scrub
# ceph osd set noout # ceph osd det nodeep-scrubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个 OSD 节点上执行:
subscription-manager repos --enable=rhel-7-server-rhceph-4-osd-rpms
# subscription-manager repos --enable=rhel-7-server-rhceph-4-osd-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 4 软件包后,更新 OSD 节点:
yum update -y
# yum update -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于节点上运行的每个 OSD 守护进程,执行:
systemctl restart ceph-osd@<osd-num>
# systemctl restart ceph-osd@<osd-num>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<osd-num>替换为要重启的 osd 号。在继续下一 OSD 节点之前,确保节点上的所有 OSD 都已重启。如果存储集群中有任何 OSD 使用
ceph-disk部署,指示ceph-volume启动守护进程。ceph-volume simple scan ceph-volume simple activate --all
# ceph-volume simple scan # ceph-volume simple activate --allCopy to Clipboard Copied! Toggle word wrap Toggle overflow 仅启用 Nautilus 功能:
ceph osd require-osd-release nautilus
# ceph osd require-osd-release nautilusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果无法执行此步骤,OSD 将无法在启用
msgr2后进行通信。升级所有 OSD 节点后,取消设置 Ceph 监控节点上的
noout和nodeep-scrub标志。ceph osd unset noout ceph osd unset nodeep-scrub
# ceph osd unset noout # ceph osd unset nodeep-scrubCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将任何现有的 CRUSH bucket 切换到最新的 bucket 类型
straw2。ceph osd getcrushmap -o backup-crushmap ceph osd crush set-all-straw-buckets-to-straw2
# ceph osd getcrushmap -o backup-crushmap # ceph osd crush set-all-straw-buckets-to-straw2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4 后,即可执行以下步骤:
启用消息传递 v2 协议
msgr2:ceph mon enable-msgr2
ceph mon enable-msgr2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这将指示绑定到 6789 的旧默认端口的所有 Ceph 监控器也绑定到 3300 的新端口。
验证 monitor 的状态:
ceph mon dump
ceph mon dumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意运行 nautilus OSD 不会自动绑定到其 v2 地址。必须重启它们。
-
对于从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4 的每个主机,将
ceph.conf文件更新为没有指定任何监控端口,或引用 v2 和 v1 地址和端口。 将
ceph.conf文件中的任何配置选项导入到存储集群的配置数据库中。示例
ceph config assimilate-conf -i /etc/ceph/ceph.conf
[root@mon ~]# ceph config assimilate-conf -i /etc/ceph/ceph.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查存储集群的配置数据库。
示例
ceph config dump
[root@mon ~]# ceph config dumpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:升级到 Red Hat Ceph Storage 4 后,为每个主机创建一个最小的
ceph.conf文件:示例
ceph config generate-minimal-conf > /etc/ceph/ceph.conf.new mv /etc/ceph/ceph.conf.new /etc/ceph/ceph.conf
[root@mon ~]# ceph config generate-minimal-conf > /etc/ceph/ceph.conf.new [root@mon ~]# mv /etc/ceph/ceph.conf.new /etc/ceph/ceph.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
在 Ceph 对象网关节点上执行:
subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms
# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用 Red Hat Ceph Storage 4 软件包后,更新节点并重启
ceph-rgw守护进程:yum update -y systemctl restart ceph-rgw@<rgw-target>
# yum update -y # systemctl restart ceph-rgw@<rgw-target>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<rgw-target>替换为要重启的 rgw 目标。对于管理节点,执行:
subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms yum update -y
# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms # yum update -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确保集群处于健康而干净的状态。
ceph health
# ceph health HEALTH_OKCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选:在客户端节点上,重新启动依赖于 Ceph 客户端侧库的任何应用。
注意如果您要升级运行 QEMU 或 KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU 或 KVM 客户端,请停止并启动 QEMU 或 KVM 实例,因为在此情况下重启实例不起作用。