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

news/2024/11/14 1:47:29/

文章目录

  • Ceph实现MDS服务多主一备高可用架构
  • 当前 mds 服务器状态
  • 添加 MDS 服务器
  • 验证ceph集群当前状态
  • 当前的文件系统状态
  • 设置处于激活状态 mds 的数量
  • MDS 高可用优化
  • 分发配置文件并重启 mds 服务

MDS_1">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__21">添加 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_35">验证ceph集群当前状态

当前处于激活状态的 mds 服务器有一台,处于备份状态的 mds 服务器有三台。
ceph fs status
在这里插入图片描述

当前的文件系统状态

ceph fs get mycephfs
在这里插入图片描述

设置处于激活状态 mds 的数量

目前有四个 mds 服务器,但是有一个主三个备,可以优化一下部署架构,设置为为两主两备。
ceph fs set mycephfs max_mds 2 #设置同时活 跃的主 mds 最大值为 2。
在这里插入图片描述

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


http://www.ppmy.cn/news/1546383.html

相关文章

Python学习从0到1 day27 Python 高阶技巧 ④ 设计模式 — 工厂模式

目录 一、什么是工厂模式 二、工厂模式的优点 三、代码示例 总结 1.什么是工厂模式 2.好处 或许总要彻彻底底地绝望一次,才能重新再活一次 —— 24.11.11 一、什么是工厂模式 当需要大量创建一个类的实例的时候,可以使用工厂模式 即,从原生…

13. Node.js会话控制

九、会话控制 9.1会话控制概念 ​ 所谓会话控制就是 对会话进行控! ​ HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端, 无法区分用户,而产品中又大量存在的这样的需求,所以我们需要通过 会话控制 来解决该问题常见的会话控制技术有三种: cook…

金融市场中的量化分析:正大科技如何赋能投资者决策

在当前金融市场中,量化分析技术已成为许多投资者提升决策效率的重要工具。正大科技致力于通过量化分析,帮助投资者基于数据和算法做出更为科学的市场判断。本文将探讨量化分析在金融市场中的应用,并展示正大科技如何利用量化手段优化投资策略…

底层视角看C语言

文章目录 main函数很普通main函数之前调用了什么main函数和自定义函数的对比变量名只为人而存在goto是循环的本质指针变量指针是一个特殊的数字汇编层面看指针数组和指针数组越界问题低端地址越界高端地址越界引用就是指针main函数很普通 main函数是第一个被调用的函数吗?在用…

nacos集群AP架构源码解析

1 心跳检测 核心类&#xff1a;ClientBeatCheckTask 核心方法&#xff1a;run public void run() {try {//1 集群状态下心跳处理if (!getDistroMapper().responsible(service.getName())) {return;}if (!getSwitchDomain().isHealthCheckEnabled()) {return;}List<Instance…

第十一天 线性代数基础

线性代数是数学的一个分支&#xff0c;广泛应用于计算机科学、物理学、工程学等领域。Python 提供了一些强大的库来进行线性代数计算&#xff0c;其中最著名的是 NumPy 和 SciPy。下面是一些线性代数的基础概念和如何在 Python 中使用这些库的示例。 线性代数是数学的一个分支…

05 SQL炼金术:深入探索与实战优化

文章目录 SQL炼金术&#xff1a;深入探索与实战优化一、SQL解析与执行计划1.1 获取执行计划1.2 解读执行计划 二、统计信息与执行上下文2.1 收集统计信息2.2 执行上下文 三、SQL优化工具与实战3.1 SQL Profile3.2 Hint3.3 Plan Baselines3.4 实战优化示例 SQL炼金术&#xff1a…

R和MATLAB及Python混合效应模型

R片段 使用 R 进行混合效应模型的分析是一种强有力的方法&#xff0c;尤其在研究带有嵌套或重复测量的复杂数据结构时。混合效应模型能够有效地检测和分析多层级数据中的固定效应和随机效应&#xff0c;这在研究选择性扰动效应时尤为有用。 R 中常用的软件包 lme4&#xff1…