7.3. 将 Red Hat Ceph Storage MDS 迁移到现有集群中的新节点
您可以在使用 cephfs-native 或 ceph-nfs 后端部署的共享文件系统服务(manila)时迁移 MDS 守护进程是 overcloud 部署的一部分。MDS 迁移由 cephadm
执行,您可以将守护进程放置从基于主机的方法移到基于标签的方法。这样可确保您可以使用 ceph orch host
命令视觉化集群的状态,以及放置守护进程的位置。您还可以对守护进程在给定主机上并置的一般视图,如红帽知识库文章 Red Hat Ceph Storage:支持的配置 中所述。
先决条件
- 完成 Red Hat OpenStack Platform 17.1 环境中的任务。有关更多信息,请参阅 Red Hat Ceph Storage 先决条件。
流程
验证 Red Hat Ceph Storage 集群是否健康并检查 MDS 状态:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索有关 Ceph 文件系统(CephFS) MDS 状态的更多详细信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OSD 块列表并清理客户端列表:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意当文件系统客户端不响应或行为不当时,对文件系统的访问可能会强制终止。此过程称为驱除。驱除 CephFS 客户端会阻止它进一步与 MDS 守护进程和 OSD 守护进程通信。
通常,列入黑名单的客户端无法重新连接到服务器;您必须卸载,然后重新挂载客户端。但是,允许被驱除的客户端尝试重新连接客户端很有用。由于 CephFS 使用 RADOS OSD 块列表来控制客户端驱除,因此您可以通过从 blocklist 中删除它们来允许 CephFS 客户端重新连接。
获取当前属于 Red Hat Ceph Storage 集群的主机:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 MDS 标签应用到目标节点:
for item in $(sudo cephadm shell -- ceph orch host ls --format json | jq -r '.[].hostname'); do sudo cephadm shell -- ceph orch host label add $item mds; done
for item in $(sudo cephadm shell -- ceph orch host ls --format json | jq -r '.[].hostname'); do sudo cephadm shell -- ceph orch host label add $item mds; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证所有主机是否具有 MDS 标签:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 转储当前的 MDS 规格:
SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} mkdir -p ${SPEC_DIR} sudo cephadm shell -- ceph orch ls --export mds > ${SPEC_DIR}/mds
$ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} $ mkdir -p ${SPEC_DIR} $ sudo cephadm shell -- ceph orch ls --export mds > ${SPEC_DIR}/mds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑检索到的 spec,并将
placement.hosts
部分替换为placement.label
:service_type: mds service_id: mds service_name: mds.mds placement: label: mds
service_type: mds service_id: mds service_name: mds.mds placement: label: mds
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
ceph 编配器
应用新的 MDS 规格:SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} sudo cephadm shell -m ${SPEC_DIR}/mds -- ceph orch apply -i /mnt/mds
$ SPEC_DIR=${SPEC_DIR:-"$PWD/ceph_specs"} $ sudo cephadm shell -m ${SPEC_DIR}/mds -- ceph orch apply -i /mnt/mds Scheduling new mds deployment ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这会增加 MDS 守护进程的数量。
检查临时添加到 CephFS 中的新备用守护进程:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将 MDS 迁移到目标节点,请设置管理 MDS 故障转移的 MDS 关联性:
注意可以为特定文件系统选择专用 MDS 作为"主动"要配置此首选项,
CephFS
为名为mds_join_fs
的 MDS 提供了配置选项,它强制执行这个关联性。当 MDS 守护进程失败时,集群监控器首选使用mds_join_fs
与带有失败等级的文件系统名称相等的待机守护进程。如果没有与文件系统名称相等的mds_join_fs
的待机,它会选择非限定备用作为替换。sudo cephadm shell -- ceph config set mds.mds.cephstorage-0.fqcshx mds_join_fs cephfs
$ sudo cephadm shell -- ceph config set mds.mds.cephstorage-0.fqcshx mds_join_fs cephfs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
将
mds.mds.cephstorage-0.fqcshx
替换为上一步中检索的cephstorage-0
上部署的守护进程。
-
将
从 Controller 节点中删除标签,并强制 MDS 故障切换到目标节点:
for i in 0 1 2; do sudo cephadm shell -- ceph orch host label rm "controller-$i.redhat.local" mds; done Removed label mds from host controller-0.redhat.local Removed label mds from host controller-1.redhat.local Removed label mds from host controller-2.redhat.local
$ for i in 0 1 2; do sudo cephadm shell -- ceph orch host label rm "controller-$i.redhat.local" mds; done Removed label mds from host controller-0.redhat.local Removed label mds from host controller-1.redhat.local Removed label mds from host controller-2.redhat.local
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到目标节点在后台发生。新的活跃 MDS 是您使用
mds_join_fs
命令设置的 MDS。检查故障转移和新部署的守护进程的结果:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow