注意

本文档适用于 Ceph 的开发版本。

将现有集群转换为 cephadm

可以将一些现有集群转换为由 cephadm 管理。这适用于使用 ceph-deployceph-ansibleDeepSea 部署的一些集群。

本文档的这一部分解释了如何确定您的集群是否可以转换为由 cephadm 管理的状态,以及如何执行这些转换。

限制

  • Cephadm 仅适用于 BlueStore OSD。

准备工作

  1. 确保现有集群中的每个主机上都提供了 cephadm 命令行工具。请参阅 安装 cephadm 了解如何操作。

  2. 通过在每个主机上运行此命令来准备每个主机以供 cephadm 使用

    cephadm prepare-host
    
  3. 选择用于转换的 Ceph 版本。此过程适用于 Octopus (15.2.z) 或更高版本的任何 Ceph 版本。最新的稳定 Ceph 版本是默认版本。您可能正在同时从较早的 Ceph 版本升级并执行此转换。如果您正在从较早的版本升级,请确保遵循该版本的任何升级相关说明。

    使用以下命令将 Ceph 容器镜像传递给 cephadm

    cephadm --image $IMAGE <rest of command goes here>
    

    转换开始。

  4. 通过运行 cephadm ls 并确保守护进程的样式已更改来确认转换正在进行中

    cephadm ls
    

    在开始转换过程之前,cephadm ls 会报告所有现有守护进程的样式为 legacy。随着采用过程的进行,被采用的守护进程将以 cephadm:v1 样式出现。

采用过程

  1. 确保 ceph 配置已迁移为使用集群的中心配置数据库。如果 /etc/ceph/ceph.conf 在所有主机上都相同,则可以在一个主机上运行以下命令,并且对所有主机生效

    ceph config assimilate-conf -i /etc/ceph/ceph.conf
    

    如果主机之间存在配置差异,您将需要对每个主机重复此命令,注意如果主机之间存在冲突的选项设置,则将使用最后一个主机的值。在采用过程中,通过运行以下命令查看集群的中心配置以确认其完整性

    ceph config dump
    
  2. 采用每个监视器

    cephadm adopt --style legacy --name mon.<hostname>
    

    每个旧版监视器都将停止,作为 cephadm 容器快速重新启动,并重新加入仲裁。

  3. 采用每个管理器

    cephadm adopt --style legacy --name mgr.<hostname>
    
  4. 启用 cephadm 编排

    ceph mgr module enable cephadm
    ceph orch set backend cephadm
    
  5. 为 cephadm 生成 SSH 密钥

    ceph cephadm generate-key
    ceph cephadm get-pub-key > ~/ceph.pub
    
  6. 在集群中的每个主机上安装 cephadm SSH 密钥

    ssh-copy-id -f -i ~/ceph.pub root@<host>
    

    注意

    也可以导入现有的 SSH 密钥。请参阅故障排除文档中的 SSH 错误,了解如何导入现有 SSH 密钥的说明。

    注意

    还可以安排 cephadm 使用非 root 用户通过 SSH 连接到集群主机。此用户需要具有无密码 sudo 访问权限。使用 ceph cephadm set-user <user> 并将 SSH 密钥复制到每个主机上该用户的主目录中。请参阅 配置不同的 SSH 用户

  7. 告诉 cephadm 管理哪些主机

    ceph orch host add <hostname> [ip-address]
    

    这将在添加之前对每个主机运行 cephadm check-host。此检查确保主机正常运行。建议使用 IP 地址参数。如果未提供地址,则将通过 DNS 解析主机名。

  8. 验证被采用的监视器和管理器守护进程是否可见

    ceph orch ps
    
  9. 采用集群中的所有 OSD

    cephadm adopt --style legacy --name <name>
    

    例如

    cephadm adopt --style legacy --name osd.1
    cephadm adopt --style legacy --name osd.2
    
  10. 通过告诉 cephadm 为每个文件系统运行多少个守护进程来重新部署 CephFS MDS 守护进程(如果已部署)。使用命令 ceph fs ls 按名称列出 CephFS 文件系统。在主节点上运行以下命令以重新部署 MDS 守护进程

    ceph orch apply mds <fs-name> [--placement=<placement>]
    

    例如,在具有名为 foo 的单个文件系统的集群中

    ceph fs ls
    
    name: foo, metadata pool: foo_metadata, data pools: [foo_data ]
    
    ceph orch apply mds foo 2
    

    确认新的 MDS 守护进程已启动

    ceph orch ps --daemon-type mds
    

    最后,停止并删除旧版 MDS 守护进程

    systemctl stop ceph-mds.target
    rm -rf /var/lib/ceph/mds/ceph-*
    
  11. 重新部署 Ceph Object Gateway RGW 守护进程(如果已部署)。Cephadm 按区域管理 RGW 守护进程。对于每个区域,使用 cephadm 部署新的 RGW 守护进程

    ceph orch apply rgw <svc_id> [--realm=<realm>] [--zone=<zone>] [--port=<port>] [--ssl] [--placement=<placement>]
    

    其中 <placement> 可以是简单的守护进程计数,也可以是特定主机的列表(请参阅 守护进程放置)。仅在多站点设置中才需要区域和域参数。

    守护进程启动后并确认它们正常运行后,停止并删除旧版守护进程

    systemctl stop ceph-rgw.target
    rm -rf /var/lib/ceph/radosgw/ceph-*
    
  12. 检查命令 ceph health detail 的输出,查看有关游离集群守护进程或尚未由 cephadm 管理的主机的 cephadm 警告。

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入