4.3. 升级存储集群


步骤

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

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

    [root@admin ~]# cd /usr/share/ceph-ansible/
  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
  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
  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 }}" }
    1. 使用实际客户端名称替换 client.test,并在客户端定义行中添加客户端密钥,例如:

      key: "ADD-KEYRING-HERE=="

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

      - { 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 }}" }
      注意

      要获取客户端密钥,请运行 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
  6. fetch_directory 参数添加到 group_vars/all.yml 文件。

    fetch_directory: <full_directory_path>

    替换:

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

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

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

      fsid: <add_the_fsid>
      generate_fsid: false
    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
  7. 如果要升级的集群包含任何 Ceph Object Gateway 节点,请将 radosgw_interface 参数添加到 group_vars/all.yml 文件中。

    radosgw_interface: <interface>

    替换:

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

    osd_objectstore: filestore
    注意

    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>
  10. rolling_update.ymlinfrastructure-playbooks 目录复制到当前目录。

    [root@admin ceph-ansible]# cp infrastructure-playbooks/rolling_update.yml .
  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
    1. 编辑 /usr/share/ceph-ansible/ansible.cfg 文件,更新 log_path 值,如下所示:

      log_path = /var/log/ansible/ansible.log
  12. 以 Ansible 用户身份,运行 playbook:

    [user@admin ceph-ansible]$ ansible-playbook rolling_update.yml

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

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

    # yum upgrade rbd-mirror

    重启守护进程:

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

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

      [root@monitor ~]# docker ps
    2. 验证集群运行正常。

      [root@monitor ~]# docker exec ceph-mon-<mon-id> ceph -s

      替换:

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

      例如:

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

    • Glance 用户

      ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=<glance-pool-name>'

      示例

      [root@monitor ~]# ceph auth caps client.glance mon 'profile rbd' osd 'profile rbd pool=images'

    • 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>'

      示例

      [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'

    • 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>'

      示例

      [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'

      重要

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.