4.3. 升级存储集群


步骤

使用 Ansible 管理节点中的下列命令。

  1. root 用户身份,导航到 /usr/share/ceph-ansible/ 目录:

    [root@admin ~]# cd /usr/share/ceph-ansible/
    Copy to Clipboard Toggle word wrap
  2. 从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。备份 group_vars/all.ymlgroup_vars/osds.yml 文件。

    [root@admin ceph-ansible]# cp group_vars/all.yml group_vars/all_old.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml group_vars/osds_old.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml group_vars/clients_old.yml
    Copy to Clipboard Toggle word wrap
  3. 从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。当从 Red Hat Ceph Storage 2.x 升级到 3.x 时,创建 group_vars/all.yml.samplegroup_vars/osds.yml.samplegroup_vars/clients.yml.sample 文件的新副本,并将它们分别重命名为 group_vars/all.ymlgroup_vars/osds.ymlgroup_vars/clients.yml 文件。打开 并相应地编辑它们。详情请查看 附录 A, 版本 2 和 3 之间的 Ansible 变量更改第 1.2 节 “在容器中安装 Red Hat Ceph Storage 集群”

    [root@admin ceph-ansible]# cp group_vars/all.yml.sample group_vars/all.yml
    [root@admin ceph-ansible]# cp group_vars/osds.yml.sample group_vars/osds.yml
    [root@admin ceph-ansible]# cp group_vars/clients.yml.sample group_vars/clients.yml
    Copy to Clipboard Toggle word wrap
  4. 从 Red Hat Ceph Storage 版本 3.x 升级到最新版本时跳过这一步。当从 Red Hat Ceph Storage 2.x 升级到 3.x 时,打开 group_vars/clients.yml 文件,取消注释以下行:

    keys:
      - { name: client.test, caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" },  mode: "{{ ceph_keyring_permissions }}" }
    Copy to Clipboard Toggle word wrap
    1. 使用实际客户端名称替换 client.test,并在客户端定义行中添加客户端密钥,例如:

      key: "ADD-KEYRING-HERE=="
      Copy to Clipboard Toggle word wrap

      现在,整行示例类似如下:

      - { name: client.test, key: "AQAin8tUMICVFBAALRHNrV0Z4MXupRw4v9JQ6Q==", caps: { mon: "allow r", osd: "allow class-read object_prefix rbd_children, allow rwx pool=test" },  mode: "{{ ceph_keyring_permissions }}" }
      Copy to Clipboard Toggle word wrap
      注意

      要获取客户端密钥,请运行 ceph auth get-or-create 命令来查看指定客户端的密钥。

  5. 当从 2.x 升级到 3.x 时,在 group_vars/all.yml 文件中,将 ceph_docker_image 参数更改为指向 Ceph 3 容器版本。

    ceph_docker_image: rhceph/rhceph-3-rhel7
    Copy to Clipboard Toggle word wrap
  6. fetch_directory 参数添加到 group_vars/all.yml 文件。

    fetch_directory: <full_directory_path>
    Copy to Clipboard Toggle word wrap

    替换:

    • <full_directory_path> 带有可写位置,如 Ansible 用户的主目录。提供用于初始存储集群安装的现有路径。

    如果现有路径丢失或缺失,请首先执行以下操作:

    1. 在现有 group_vars/all.yml 文件中添加以下选项:

      fsid: <add_the_fsid>
      generate_fsid: false
      Copy to Clipboard Toggle word wrap
    2. 运行 take-over-existing-cluster.yml Ansible playbook:

      [user@admin ceph-ansible]$ cp infrastructure-playbooks/take-over-existing-cluster.yml .
      [user@admin ceph-ansible]$ ansible-playbook take-over-existing-cluster.yml
      Copy to Clipboard Toggle word wrap
  7. 如果要升级的集群包含任何 Ceph Object Gateway 节点,请将 radosgw_interface 参数添加到 group_vars/all.yml 文件中。

    radosgw_interface: <interface>
    Copy to Clipboard Toggle word wrap

    替换:

    • <interface> 带有 Ceph Object Gateway 节点侦听的接口。
  8. 从 Red Hat Ceph Storage 3.2 开始,默认的 OSD 对象存储是 BlueStore。要保留传统的 OSD 对象存储,您必须将 osd_objectstore 选项明确设置为 group_vars/all.yml 文件中的 filestore

    osd_objectstore: filestore
    Copy to Clipboard Toggle word wrap
    注意

    osd_objectstore 选项设置为 filestore 时,替换 OSD 将使用 FileStore,而不是 BlueStore。

  9. 在位于 /etc/ansible/hosts 的 Ansible 清单文件中,将 Ceph Manager(ceph-mgr)节点添加到 [mgrs] 部分下。与 monitor 节点并置 Ceph 管理器守护进程。从版本 3.x 升级到最新版本时跳过这一步。

    [mgrs]
    <monitor-host-name>
    <monitor-host-name>
    <monitor-host-name>
    Copy to Clipboard Toggle word wrap
  10. rolling_update.ymlinfrastructure-playbooks 目录复制到当前目录。

    [root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
    Copy to Clipboard Toggle word wrap
  11. 创建 /var/log/ansible/ 目录并为 ansible 用户分配适当的权限:

    [root@admin ceph-ansible]# mkdir /var/log/ansible
    [root@admin ceph-ansible]# chown ansible:ansible  /var/log/ansible
    [root@admin ceph-ansible]# chmod 755 /var/log/ansible
    Copy to Clipboard Toggle word wrap
    1. 编辑 /usr/share/ceph-ansible/ansible.cfg 文件,更新 log_path 值,如下所示:

      log_path = /var/log/ansible/ansible.log
      Copy to Clipboard Toggle word wrap
  12. 以 Ansible 用户身份,运行 playbook:

    [user@admin ceph-ansible]$ ansible-playbook rolling_update.yml
    Copy to Clipboard Toggle word wrap

    要将 playbook 用于 Ansible 清单文件上的一组特定的节点,请使用 --limit 选项。详情请查看 第 1.8 节 “了解 limit 选项”

  13. 在 RBD 镜像守护进程节点上以 root 用户身份登录时,手动升级 rbd-mirror

    # yum upgrade rbd-mirror
    Copy to Clipboard Toggle word wrap

    重启守护进程:

    # systemctl restart  ceph-rbd-mirror@<client-id>
    Copy to Clipboard Toggle word wrap
  14. 验证集群健康状况是 OK。

    1. root 用户身份登录 monitor 节点,再列出所有正在运行的容器。

      [root@monitor ~]# docker ps
      Copy to Clipboard Toggle word wrap
    2. 验证集群运行正常。

      [root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -s
      Copy to Clipboard Toggle word wrap

      替换:

      • <mon-id>,第一个步骤中找到的 Monitor 容器的名称。

      例如:

      [root@monitor ~]# docker exec ceph-mon-monitor ceph -s
      Copy to Clipboard Toggle word wrap
  15. 如果在 OpenStack 环境中工作,请更新所有 cephx 用户,以将 RBD 配置文件用于池。以下命令必须以 root 用户身份运行:

    • Glance 用户

      ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'
      Copy to Clipboard Toggle word wrap

      示例

      [root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'
      Copy to Clipboard Toggle word wrap

    • Cinder 用户

      ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
      Copy to Clipboard Toggle word wrap

      示例

      [root@monitor ~]# ceph auth caps client.cinder mon 'profile rbd' osd 'profile rbd pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
      Copy to Clipboard Toggle word wrap

    • OpenStack 常规用户

      ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=<cinder-volume-pool-name>, profile rbd pool=<nova-pool-name>, profile rbd-read-only pool=<glance-pool-name>'
      Copy to Clipboard Toggle word wrap

      示例

      [root@monitor ~]# ceph auth caps client.openstack mon 'profile rbd' osd 'profile rbd-read-only pool=volumes, profile rbd pool=vms, profile rbd-read-only pool=images'
      Copy to Clipboard Toggle word wrap

      重要

      在执行任何实时客户端迁移前,进行这些 CAPS 更新。这使得客户端能够使用内存中运行的新库,从而导致旧 CAPS 设置从缓存中丢弃并应用新的 RBD 配置集设置。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat