当前位置: 首页 > article >正文

Ceph MDS高可用架构探索:从零到一构建多主一备MDS服务

文章目录

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


systemctl 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
在这里插入图片描述


http://www.kler.cn/a/390127.html

相关文章:

  • 矢量拟合(1)Sanathanan–Koerner算法
  • FreeRTOS学习13——任务相关API函数
  • centos7上安装mysql
  • 【JAVA】Java基础—面向对象编程:封装—保护类的内部数据
  • jwt用户登录,网关给微服务传递用户信息,以及微服务间feign调用传递用户信息
  • RT-DETR融合CVPR[2020]轻量化卷积模块Ghost Module模块
  • (Go基础)Go的运行流程步骤与包的概念
  • 使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
  • 【Linux系列】 环境配置文件合并的艺术:从`.env`到`.env.combined`
  • Radix Sorts
  • 音视频入门基础:FLV专题(25)——通过FFprobe显示FLV文件每个packet的信息
  • LeetCode每日一题3258---统计满足 K 约束的子字符串数量 I
  • pycharm连接oracle数据库查询数据
  • C# 多线程编程
  • 文本语义分块、RAG 系统的分块难题:小型语言模型如何找到最佳断点
  • Spring Boot框架下编程训练系统开发指南
  • 【Docker】Mac安装Docker Desktop导致磁盘剩余空间较少问题如何解决?
  • Spring Cloud Alibaba Spring Cloud Spring Boot JDK 版本依赖关系
  • jQuery UI 使用
  • 性能测试链路分析与压测平台的对接
  • 【逆向爬虫实战】--全方位分析+某某学堂登录(DES加密)
  • Vue功能菜单的异步加载、动态渲染
  • URL、DNS、IP介绍及特点
  • GitHub 上的开源项目推荐
  • PHP弱类型安全问题
  • React前端开发