文章目录
- Ceph实现MDS服务多主一备高可用架构
- 当前 mds 服务器状态
- 添加 MDS 服务器
- 验证ceph集群当前状态
- 当前的文件系统状态
- 设置处于激活状态 mds 的数量
- MDS 高可用优化
- 分发配置文件并重启 mds 服务
Ceph实现MDS服务多主一备高可用架构
Ceph 的元数据服务(MDS)作为其访问的门户,承担着确保高性能与数据备份的重任。MDS 设计上支持多 MDS 架构,甚至能够构建类似 Redis Cluster 的多主从结构,这一特性极大地促进了 MDS 服务在高性能与高可用性方面的实现。
具体而言,若启动四个 MDS 进程,并将最大活动 MDS 数(max_mds)设置为 2,此时系统将自动配置两个 MDS 作为主节点,而另外两个 MDS 则作为备用节点,以确保服务的连续性和稳定性。
为每个主节点配置专用的备用MDS,以确保在主MDS发生故障时,能够迅速切换至另一备用MDS来接管其职责,并持续对外提供元数据的读写服务。以下是配置备用MDS时常用的选项:
-
mds_standby_replay:值为 true 或 false,true 表示开启 replay 模式,这种模式下主 MDS内的数量将实时与从 MDS 同步,如果主宕机,从可以快速的切换。如果为 false 只有宕机的时候才去同步数据,这样会有一段时间的中断。
-
mds_standby_for_name:设置当前 MDS 进程只用于备份于指定名称的 MDS。
-
mds_standby_for_rank:设置当前 MDS 进程只用于备份于哪个 Rank((上级节点),通常为Rank 编号。另外在存在多个 CephFS 文件系统中,还可以使用 mds_standby_for_fscid 参数来为指定不同的文件系统。
-
mds_standby_for_fscid:指定 CephFS 文件系统 ID,需要联合 mds_standby_for_rank 生效,如果设置 mds_standby_for_rank,那么就是用于指定文件系统的指定 Rank,如果没有设置,就是指定文件系统的所有 Rank。
当前 mds 服务器状态
ceph mds stat # mycephfs:1 {0=ceph-mgr1=up:active}
添加 MDS 服务器
将 ceph-mgr2 和 ceph-mon2 和 ceph-mon3 作为 mds 服务角色添加至 ceph 集群,构建一个包含两个主 MDS 和两个备用 MDS 的高可用性与高性能架构。
#mon3、mon2、mgr2安装以下命令
apt install ceph-mds=16.2.10-1focal
#布置节点添加mds服务器
ceph-deploy mds create ceph-mgr2
ceph-deploy mds create ceph-mon2
ceph-deploy mds create ceph-mon3
#验证 mds 服务器当前状态:
ceph mds stat
#mycephfs:1 {0=ceph-mgr1=up:active} 3 up:standby
验证ceph集群当前状态
当前处于激活状态的 mds 服务器有一台,处于备份状态的 mds 服务器有三台。
ceph fs status
当前的文件系统状态
ceph fs get mycephfs
设置处于激活状态 mds 的数量
目前有四个 mds 服务器,但是有一个主三个备,可以优化一下部署架构,设置为为两主两备。
ceph fs set mycephfs max_mds 2 #设置同时活 跃的主 mds 最大值为 2。
MDS 高可用优化
ceph-mgr1 和 ceph-mon2 均处于活动(active)状态,而 ceph-mon3 和 ceph-mgr2 则分别处于待命(standby)状态。为了构建一个每个主节点都拥有一个固定备份角色的架构,我们计划将 ceph-mgr2 配置为 ceph-mgr1 的待命节点,同时将 ceph-mon3 配置为 ceph-mon2 的待命节点。
为此,需要按照以下方式修改配置文件:
[cephadmin@ceph-deploy ceph-cluster]$ vim ceph.conf
[global]
fsid = 23b0f9f2-8db3-477f-99a7-35a90eaf3dab public_network = 10.247.8.0/24
cluster_network = 172.25.0.0/24
mon_initial_members = ceph-mon1
mon_host = 10.247.8.202
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx[mds.ceph-mgr2]
#mds_standby_for_fscid = mycephfs
mds_standby_for_name = ceph-mgr1
mds_standby_replay = true[mds.ceph-mgr1]
#mds_standby_for_fscid = mycephfs
mds_standby_for_name = ceph-mgr2
mds_standby_replay = true[mds.ceph-mon3]
mds_standby_for_name = ceph-mon2
mds_standby_replay = true [mds.ceph-mon2]
mds_standby_for_name = ceph-mon3
mds_standby_replay = true
分发配置文件并重启 mds 服务
#分发配置文件保证各 mds 服务重启有效
ceph-deploy --overwrite-conf config push ceph-mon3
ceph-deploy --overwrite-conf config push ceph-mon2
ceph-deploy --overwrite-conf config push ceph-mgr1
ceph-deploy --overwrite-conf config push ceph-mgr2systemctl restart ceph-mds@ceph-mon2.service
systemctl restart ceph-mds@ceph-mon3.service
systemctl restart ceph-mds@ceph-mgr2.service
systemctl restart ceph-mds@ceph-mgr1.service
ceph 集群 mds 高可用状态
ceph fs status