1.9. 升级过程


作为存储管理员,您可以使用 Ansible playbook 将 Red Hat Ceph Storage 4 存储集群升级到 Red Hat Ceph Storage 5。rolling_update.yml Ansible playbook 为部署Red Hat Ceph Storage 执行升级。ceph-ansible 按照以下顺序升级 Ceph 节点:

  • Ceph monitor
  • Ceph Manager
  • Ceph OSD 节点
  • MDS 节点
  • Ceph 对象网关(RGW)节点
  • Ceph RBD-mirror 节点
  • Ceph NFS 节点
  • Ceph iSCSI 网关节点
  • Ceph 客户端节点
  • Ceph-crash 守护进程
  • 所有节点上的 node-exporter
  • Ceph 仪表板
重要

在存储集群从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5 后,Grafana UI 会显示两个仪表板。这是因为 Red Hat Ceph Storage 4 中的 Prometheus 端口为 9092,而 Red Hat Ceph Storage 5 为 9095。您可以删除 grafana。cephadm 重新部署服务和守护进程,并在 Grafana UI 上删除旧的仪表板。

注意

Red Hat Ceph Storage 5 仅支持容器化部署。

Red Hat Ceph Storage 5 目前不支持 ceph-ansible。这意味着,当您将存储集群迁移到 Red Hat Ceph Storage 5 后,您必须使用 cephadm 来执行后续更新。

重要

若要部署具有单一域和多个域的多站点 Ceph 对象网关,请编辑 all.yml 文件。有关更多信息,请参阅 Red Hat Ceph Storage 4 安装指南中的配置多站点 Ceph 对象网关

注意

Red Hat Ceph Storage 5 还包括一个健康检查功能,如果它检测到存储集群中的任何守护进程正在运行多个版本的 Red Hat Ceph Storage,它会返回 DAEMON_OLD_VERSION 警告。当守护进程继续运行多个版本的 Red Hat Ceph Storage 时,会触发警告,超过 mon_warn_older_version_delay 选项中设置的时间值。默认情况下,mon_warn_older_version_delay 选项设置为一周。此设置允许大多数升级进行,而不会看到警告。如果升级过程暂停了较长的时间,您可以屏蔽健康警告:

ceph health mute DAEMON_OLD_VERSION --sticky

升级完成后,取消健康警告:

ceph health unmute DAEMON_OLD_VERSION

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 对存储集群中所有主机的根级别访问权限。
  • 有效的客户订阅。
  • 对 Ansible 管理节点的根级别访问权限.
  • Red Hat Ceph Storage 5 提供的最新版本的 Ansible 和 ceph-ansible
  • 用于 Ansible 应用的 ansible 用户帐户。
  • 存储集群的节点已升级到 Red Hat Enterprise Linux 8.4 EUS 或更高版本。
重要

Ansible 清单文件必须位于 ceph-ansible 目录中。

流程

  1. 在 Ansible 管理节点上启用 Ceph 和 Ansible 存储库:

    Red Hat Enterprise Linux 8

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms

    Red Hat Enterprise Linux 9

    subscription-manager repos --enable=rhceph-5-tools-for-rhel-9-x86_64-rpms

  2. 在 Ansible 管理节点上,确保安装了最新版本的 ansibleceph-ansible 软件包。

    语法

    dnf update ansible ceph-ansible

  3. 进入 /usr/share/ceph-ansible/ 目录:

    示例

    [root@admin ~]# cd /usr/share/ceph-ansible

  4. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请分别将它们重命名为 group_vars/osds.yml.samplegroup_vars/clients.yml.sample 文件,并将它们重命名为 group_vars/osds.yml,并分别重命名为 group_vars/clients.yml

    示例

    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/mdss.yml.sample group_vars/mdss.yml
    [root@admin ceph-ansible]# cp group_vars/rgws.yml.sample group_vars/rgws.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml

  5. 如果从 Red Hat Ceph Storage 4 升级到 Red Hat Ceph Storage 5,请编辑 group_vars/all.yml 文件来添加 Red Hat Ceph Storage 5 详情。
  6. 完成上述两个步骤后,将旧 yaml 文件中的设置复制到新的 yaml 文件中。不要更改 ceph_rhcs_versionceph_docker_imagegrafana_container_image 的值,因为这些配置参数的值适用于 Red Hat Ceph Storage 5。这样可确保当前 yaml 文件中存在与集群相关的所有设置。

    示例

    fetch_directory: ~/ceph-ansible-keys
    monitor_interface: eth0
    public_network: 192.168.0.0/24
    ceph_docker_registry_auth: true
    ceph_docker_registry_username: SERVICE_ACCOUNT_USER_NAME
    ceph_docker_registry_password: TOKEN
    dashboard_admin_user: DASHBOARD_ADMIN_USERNAME
    dashboard_admin_password: DASHBOARD_ADMIN_PASSWORD
    grafana_admin_user: GRAFANA_ADMIN_USER
    grafana_admin_password: GRAFANA_ADMIN_PASSWORD
    radosgw_interface: eth0
    ceph_docker_image: "rhceph/rhceph-5-rhel8"
    ceph_docker_image_tag: "latest"
    ceph_docker_registry: "registry.redhat.io"
    node_exporter_container_image: registry.redhat.io/openshift4/ose-prometheus-node-exporter:v4.6
    grafana_container_image: registry.redhat.io/rhceph/rhceph-5-dashboard-rhel8:5
    prometheus_container_image: registry.redhat.io/openshift4/ose-prometheus:v4.6
    alertmanager_container_image: registry.redhat.io/openshift4/ose-prometheus-alertmanager:v4.6

    注意

    确保将 Red Hat Ceph Storage 5 容器镜像设置为默认值。

  7. 编辑 group_vars/osds.yml 文件。添加并设置以下选项:

    语法

    nb_retry_wait_osd_up: 50
    delay_wait_osd_up: 30

  8. 打开 group_vars/all.yml 文件,并验证旧的 all.yml 文件中是否存在以下值:

    1. 使用来自旧 all.yml 文件中的值相同的值设置 fetch_directory 选项:

      语法

      fetch_directory: FULL_DIRECTORY_PATH

      FULL_DIRECTORY_PATH 替换为可写入位置,如 Ansible 用户的主目录。

    2. 如果要升级的集群包含任何 Ceph 对象网关节点,请添加 radosgw_interface 选项:

      radosgw_interface: INTERFACE

      INTERFACE 替换为 Ceph 对象网关节点侦听的接口。

    3. 如果您的当前设置配置了 SSL 证书,请编辑以下内容:

      语法

      radosgw_frontend_ssl_certificate: /etc/pki/ca-trust/extracted/CERTIFICATE_NAME
      radosgw_frontend_port: 443

    4. 取消注释 upgrade_ceph_packages 选项并将其设置为 True

      语法

      upgrade_ceph_packages: True

    5. 如果存储集群每个节点有多个 Ceph 对象网关实例,请取消注释 radosgw_num_instances 设置并将其设置为集群中每个节点的实例数量:

      语法

      radosgw_num_instances : NUMBER_OF_INSTANCES_PER_NODE

      示例

      radosgw_num_instances : 2

    6. 如果存储集群定义了 Ceph 对象网关多站点,请检查 all.yml 中的多站点设置,以确保它们包含与旧 all.yml 文件中相同的值。
  9. 如果创建存储桶或具有 num_shards = 0, 请在规划升级到 Red Hat Ceph Storage 5.3 前手动重新划分存储桶:

    警告

    bucket_index_max_shards0 时,从旧版本升级到 Red Hat Ceph Storage 5.3 可能会导致 Ceph 对象网关存储桶的元数据丢失,从而导致存储桶在尝试访问它时不可用。因此,请确保 bucket_index_max_shards 设置为 11 个分片。如果没有,在 zonegroup 级别修改此配置。

    语法

    radosgw-admin bucket reshard --num-shards 11 --bucket BUCKET_NAME

    示例

    [ceph: root@host01 /]# radosgw-admin bucket reshard --num-shards 11 --bucket mybucket

  10. 在 Ansible 管理节点上,以 ansible-user 身份登录。
  11. 使用 --extra-vars 选项更新 infrastructure-playbooks/rolling_update.yml playbook,并将 health_osd_check_retrieshealth_osd_check_delay 值分别更改为 5030

    示例

    [root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"

    对于每个 OSD 节点,这些值可使 ceph-ansible 每 30 秒检查存储集群运行状况,最多 50 次。这意味着 ceph-ansible 会等待每个 OSD 最多 25 分钟。

    根据存储集群的已用存储容量,调整 health_osd_check_retries 选项的值。例如,如果您使用了 436 TB 中的 218 TB(或 50% 的存储容量),则将 health_osd_check_retries 选项设置为 50

    /etc/ansible/hosts 是 Ansible 清单文件的默认位置。

  12. 运行 rolling_update.yml playbook,将存储集群从 Red Hat Ceph Storage 4 转换为 Red Hat Ceph Storage 5:

    语法

    ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i INVENTORY_FILE

    vvvv 选项收集升级过程的详细日志。

    示例

    [ceph-admin@admin ceph-ansible]$ ansible-playbook -vvvv infrastructure-playbooks/rolling_update.yml -i hosts

    重要

    不支持将 --limit Ansible 选项与 rolling_update.yml playbook 搭配使用。

  13. 查看 Ansible playbook 日志输出,以验证升级的状态。

验证

  1. 列出所有正在运行的容器:

    示例

    [root@mon ~]# podman ps

  2. 检查集群的健康状况。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph -s

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph -s

  3. 验证 Ceph 集群守护进程版本,以确认升级所有守护进程。将 MONITOR_ID 替换为上一步中找到的 Ceph Monitor 容器的名称:

    语法

    podman exec ceph-mon-MONITOR_ID ceph --cluster ceph versions

    示例

    [root@mon ~]# podman exec ceph-mon-mon01 ceph --cluster ceph versions

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.