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
要从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4,OSD map 必须包含
restore_deletes
和purged_snapdirs
标志。确保集群处于健康而干净的状态。
ceph health HEALTH_OK
对于运行
ceph-mon
和ceph-manager
的节点,请执行:# subscription-manager repos --enable=rhel-7-server-rhceph-4-mon-rpms
启用 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>
将
<mon-hostname>
和<mgr-hostname>
替换为目标主机的主机名。在升级 OSD 之前,请在 Ceph 监控节点上设置
noout
和nodeep-scrub
标志,以防止在升级过程中重新平衡 OSD。# ceph osd set noout # ceph osd det nodeep-scrub
在每个 OSD 节点上执行:
# subscription-manager repos --enable=rhel-7-server-rhceph-4-osd-rpms
启用 Red Hat Ceph Storage 4 软件包后,更新 OSD 节点:
# yum update -y
对于节点上运行的每个 OSD 守护进程,执行:
# systemctl restart ceph-osd@<osd-num>
将
<osd-num>
替换为要重启的 osd 号。在继续下一 OSD 节点之前,确保节点上的所有 OSD 都已重启。如果存储集群中有任何 OSD 使用
ceph-disk
部署,指示ceph-volume
启动守护进程。# ceph-volume simple scan # ceph-volume simple activate --all
仅启用 Nautilus 功能:
# ceph osd require-osd-release nautilus
重要如果无法执行此步骤,OSD 将无法在启用
msgr2
后进行通信。升级所有 OSD 节点后,取消设置 Ceph 监控节点上的
noout
和nodeep-scrub
标志。# ceph osd unset noout # ceph osd unset nodeep-scrub
将任何现有的 CRUSH bucket 切换到最新的 bucket 类型
straw2
。# ceph osd getcrushmap -o backup-crushmap # ceph osd crush set-all-straw-buckets-to-straw2
从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4 后,即可执行以下步骤:
启用消息传递 v2 协议
msgr2
:ceph mon enable-msgr2
这将指示绑定到 6789 的旧默认端口的所有 Ceph 监控器也绑定到 3300 的新端口。
验证 monitor 的状态:
ceph mon dump
注意运行 nautilus OSD 不会自动绑定到其 v2 地址。必须重启它们。
-
对于从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4 的每个主机,将
ceph.conf
文件更新为没有指定任何监控端口,或引用 v2 和 v1 地址和端口。 将
ceph.conf
文件中的任何配置选项导入到存储集群的配置数据库中。示例
[root@mon ~]# ceph config assimilate-conf -i /etc/ceph/ceph.conf
检查存储集群的配置数据库。
示例
[root@mon ~]# ceph config dump
可选:升级到 Red Hat Ceph Storage 4 后,为每个主机创建一个最小的
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.conf
在 Ceph 对象网关节点上执行:
# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms
启用 Red Hat Ceph Storage 4 软件包后,更新节点并重启
ceph-rgw
守护进程:# yum update -y # systemctl restart ceph-rgw@<rgw-target>
将
<rgw-target>
替换为要重启的 rgw 目标。对于管理节点,执行:
# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms # yum update -y
确保集群处于健康而干净的状态。
# ceph health HEALTH_OK
可选:在客户端节点上,重新启动依赖于 Ceph 客户端侧库的任何应用。
注意如果您要升级运行 QEMU 或 KVM 实例的 OpenStack Nova 计算节点,或使用专用 QEMU 或 KVM 客户端,请停止并启动 QEMU 或 KVM 实例,因为在此情况下重启实例不起作用。