第 7 章 升级 Red Hat Ceph Storage 集群

作为存储管理员,您可以将 Red Hat Ceph Storage 集群升级到新的主版本或新的次版本,或者仅对当前版本应用异步更新。rolling_update.yml Ansible playbook 为 Red Hat Ceph Storage 裸机或容器化部署执行升级。Ansible 按照以下顺序升级 Ceph 节点:

  • 监控节点
  • MGR 节点
  • OSD 节点
  • MDS 节点
  • Ceph 对象网关节点
  • 所有其他 Ceph 客户端节点
注意

从 Red Hat Ceph Storage 3.1 开始,添加了新的 Ansible playbook,以便在使用对象网关和基于 NVMe 的 SSD(及 SATA SSD)时优化存储的性能。Playbook 通过将日志和 bucket 索引放在 SSD 上来实现此目的;与将所有日志放在一个设备上相比,这提高了性能。这些 playbook 设计为在安装 Ceph 时使用。现有的 OSD 继续工作,升级期间不需要额外的步骤。无法升级 Ceph 集群,同时重新配置 OSD 以优化存储。若要将不同的设备用于日志或 bucket 索引,需要重新调配 OSD。如需更多信息,请参阅生产环境指南中的 Ceph 对象网关中的最佳使用 NVMe

重要

当将 Red Hat Ceph Storage 集群从以前支持的版本升级到 4.2z2 时,升级会在 HEALTH_WARN 状态下完成存储集群,指出 monitor 允许不安全的 global_id 重新声明。这是因为一个补丁的 CVE,其详细信息包括在 CVE-2021-20288 中。这个问题由 Red Hat Ceph Storage 4.2z2 的 CVE 解决。

拒绝健康警告的建议:

  1. 通过检查 AUTH_INSECURE_GLOBAL_ID_RECLAIM 警报的 ceph health detail 输出,识别尚未更新的客户端。
  2. 将所有客户端升级到 Red Hat Ceph Storage 4.2z2 版本。
  3. 当验证所有客户端都已更新,并且客户端不再存在 AUTH_INSECURE_GLOBAL_ID_RECLAIM 警报后,将 auth_allow_insecure_global_id_reclaim 设置为 false当此选项被设置为 false 时,在网络中断中断后,一个未修补的客户端无法重新连接到存储集群,或者可以在超时时续订其验证票据,默认为 72 小时。

    语法

    ceph config set mon auth_allow_insecure_global_id_reclaim false

  4. 确保没有使用 AUTH_INSECURE_GLOBAL_ID_RECLAIM 警报列出客户端。
重要

rolling_update.yml playbook 包含 serial 变量,用于调整要同时更新的节点数量。红帽强烈建议使用默认值 (1),以确保 Ansible 逐一升级集群节点。

重要

如果升级在任何点上失败,请使用 ceph status 命令检查集群状态以了解升级失败的原因。如果您不确定故障原因及如何解决,请联系 红帽支持以获得帮助。

警告

如果将多站点设置从 Red Hat Ceph Storage 3 升级到 Red Hat Ceph Storage 4,请遵循以下建议,否则复制可能会中断。在运行 rolling_update.yml 前,在 all.yml 中设置 rgw_multisite: false。升级后不要重新启用 rgw_multisite。只有在升级后需要添加新网关时才使用它。仅将版本 3.3z5 或更高版本的 Red Hat Ceph Storage 3 集群升级到 Red Hat Ceph Storage 4。如果您无法更新到 3.3z5 或更高版本,请在升级集群前禁用站点间同步。若要禁用同步,可设置 rgw_run_sync_thread = false 并重新启动 RADOS 网关守护进程。首先升级主集群。升级到 Red Hat Ceph Storage 4.1 或更高版本。要查看与 3.3z5 相关的软件包版本,请参阅什么是 Red Hat Ceph Storage 版本和对应的 Ceph 软件包版本?有关如何禁用同步的说明,请参阅如何临时禁用 RGW 多站点同步?

警告

当使用 Ceph 对象网关并从 Red Hat Ceph Storage 3.x 升级到 Red Hat Ceph Storage 4.x 时,前端会自动从 CivetWeb 更改为 Beast,这是新的默认值。如需更多信息,请参阅对象网关配置和管理指南中的配置

警告

如果使用 RADOS 网关,Ansible 会将前端从 CivetWeb 切换到 Beast。在这一过程中,RGW 实例名称从 rgw.HOSTNAME 更改为 rgw.HOSTNAME.rgw0。由于名称更改,Ansible 不会更新 ceph.conf 中的现有 RGW 配置,而是附加一个默认配置,保留原 CivetWeb 基于 RGW 设置,但它不会被使用。然后,自定义 RGW 配置更改将丢失,这可能会造成 RGW 服务中断。要避免这种情况,请在升级前将现有 RGW 配置添加到 all.ymlceph_conf_overrides 部分,但通过附加 .rgw0 来更改 RGW 实例名称,然后重启 RGW 服务。这将在升级后保留非默认 RGW 配置更改。如需有关 ceph_conf_overrides 的信息,请参阅覆盖 Ceph 默认设置

7.1. 支持的 Red Hat Ceph Storage 升级场景

红帽支持以下升级方案:

阅读裸机的表, 并容器化以了解集群必须处于升级前的状态才能进入升级后状态。

使用 ceph-ansible 执行裸机和容器化升级,其中裸机或主机操作系统不会更改主要版本。ceph-ansible 不支持从 Red Hat Enterprise Linux 7 升级到 Red Hat Enterprise Linux 8。要作为升级 Red Hat Ceph Storage 的一部分将裸机操作系统从 Red Hat Enterprise Linux 7.9 升级到 Red Hat Enterprise Linux 8.4,请参阅 Red Hat Ceph Storage 安装指南中的手动升级 Red Hat Ceph Storage 集群和操作系统 部分。

注意

要将集群升级到 Red Hat Ceph Storage 4,红帽建议您的集群使用最新版本的 Red Hat Ceph Storage 3。要了解最新版本的 Red Hat Ceph Storage,请参见 什么是 Red Hat Ceph Storage 版本?如需更多信息,知识库文章。

表 7.1. 支持裸机部署的升级场景

预升级状态升级后状态

Red Hat Enterprise Linux 版本

Red Hat Ceph Storage 版本

Red Hat Enterprise Linux 版本

Red Hat Ceph Storage 版本

7.6

3.3

7.9

4.2

7.6

3.3

8.4

4.2

7.7

3.3

7.9

4.2

7.7

4.0

7.9

4.2

7.8

3.3

7.9

4.2

7.8

3.3

8.4

4.2

7.9

3.3

8.4

4.2

8.1

4.0

8.4

4.2

8.2

4.1

8.4

4.2

8.2

4.1

8.4

4.2

8.3

4.1

8.4

4.2

表 7.2. 支持的容器化部署的升级场景

预升级状态升级后状态

主机 Red Hat Enterprise Linux 版本

Container Red Hat Enterprise Linux 版本

Red Hat Ceph Storage 版本

主机 Red Hat Enterprise Linux 版本

Container Red Hat Enterprise Linux 版本

Red Hat Ceph Storage 版本

7.6

7.8

3.3

7.9

8.4

4.2

7.7

7.8

3.3

7.9

8.4

4.2

7.7

8.1

4.0

7.9

8.4

4.2

7.8

7.8

3.3

7.9

8.4

4.2

8.1

8.1

4.0

8.4

8.4

4.2

8.2

8.2

4.1

8.4

8.4

4.2

8.3

8.3

4.1

8.4

8.4

4.2