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-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.mzph.cn/bicheng/60349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PySpark 数据处理实战:从基础操作到案例分析

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

使用GPT-SoVITS训练语音模型

1.项目演示 阅读单句话 1725352713141 读古诗 1725353700203 2.项目环境 开发环境:linux 机器配置如下:实际使用率百分之二十几, 3.开发步骤 1.首先是准备数据集,要求是wav格式,一到两个小时即可, 2.…

Python学习从0到1 day27 Python 高阶技巧 ③ 设计模式 — 单例模式

此去经年,再难同游 —— 24.11.11 一、什么是设计模式 设计模式是一种编程套路,可以极大的方便程序的开发最常见、最经典的设计模式,就是我们所学习的面向对象了。 除了面向对象外,在编程中也有很多既定的套路可以方便开发,我们称之为设计模…

3.2 软件需求:面对过程分析模型

面对过程分析模型 1. 需求分析的模型概述1.1 面对过程分析模型-结构化分析方法1.2 结构化分析的过程 2. 功能模型:数据流图初步2.1 加工2.2 外部实体(数据源点/终点)2.3 数据流2.4 数据存储2.5 注意事项 3. 功能模型:数据流图进阶…

Android Studio 运行模拟器无法打开avd

问题:已经下载了HAXM 打开模拟器时还是提示未下载HAXM,无法打开avd 解决方案: 控制面板 -> 启动或关闭Windows功能,打开图下两项,后重启电脑重启Android Studio:

Qt文件系统-二进制文件读写

实例功能概述 除了文本文件之外,其他需要按照一定的格式定义读写的文件都称为二进制文件。每种格式的二进制文件都有自己的格式定义,写入数据时按照一定的顺写入,读出时也按照相应的顺读出。例如地球物理中常用的SEG-Y格式文件,必…

ARXML汽车可扩展标记性语言规范讲解

ARXML: Automotive Extensible Markup Language (汽车可扩展标记语言) xmlns: Xml name space (xml 命名空间) xsd: Xml Schema Definition (xml 架构定义) 1、XML与HTML的区别,可扩展。 可扩展,主要是…

游戏引擎学习第六天

这节讲的内容比较多: 参考视频:https://www.bilibili.com/video/BV1apmpYVEQu/ XInput 是微软提供的一个 API,用于处理 Windows 平台上 Xbox 控制器(包括有线和无线)及其他游戏控制器的输入。它为开发者提供了一组函数,用于查询控…

vivado+modelsim: xxx is not a function name

xxx is not a function name vivado问题:xxx is not a function name原因 vivado问题:xxx is not a function name 在写verilog modelsim仿真时,遇到error:xxx is not a function name。 原因 该变量xxx在仿真文件里,如下图红框所示&#…

云计算在教育领域的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算在教育领域的应用 云计算在教育领域的应用 云计算在教育领域的应用 引言 云计算概述 定义与原理 发展历程 云计算的关键技…

立体工业相机提升工业自动化中的立体深度感知

深度感知对仓库机器人应用至关重要,尤其是在自主导航、物品拾取与放置、库存管理等方面。 通过将深度感知与各种类型的3D数据(如体积数据、点云、纹理等)相结合,仓库机器人可以在错综复杂环境中实现自主导航,物品检测…

模拟鼠标真人移动轨迹算法-易语言

一.简介 鼠标轨迹算法是一种模拟人类鼠标操作的程序,它能够模拟出自然而真实的鼠标移动路径。 鼠标轨迹算法的底层实现采用C/C语言,原因在于C/C提供了高性能的执行能力和直接访问操作系统底层资源的能力。 鼠标轨迹算法具有以下优势: 模拟…

JavaWeb——Web入门(8/9)- Tomcat:基本使用(下载与安装、目录结构介绍、启动与关闭、可能出现的问题及解决方案、总结)

目录 基本使用内容 下载与安装 目录结构介绍 启动与关闭 启动 关闭 可能出现的问题及解决方案 问题一:启动时窗口一闪而过 问题二:端口号冲突 问题三:部署应用程序 总结 基本使用内容 Tomcat 服务器在 Java Web 开发中扮演着至关重…

PostgreSQL中如果有Left Join的时候索引怎么加

在PostgreSQL中,当你的查询包含多个LEFT JOIN和WHERE条件时,合理地添加索引可以显著提高查询性能。以下是一些具体的优化步骤和建议: 1. 分析查询 使用 EXPLAIN ANALYZE 命令分析你的查询,了解查询的执行计划,识别出连…

通过DNS服务器架构解释DNS请求过程

在前面的章节,这里,基于PCAP数据包和RFC文档详细介绍了DNS请求和响应的每个字段的含义。但是在现实的网络世界中,DNS请求和响应的数据包是怎么流动的,会经过哪些设备。本文将着重说明一下目前网络空间中DNS请求和响应的流动过程。 当前网络空间中比较常见DNS请求的流程如下…

aspose如何获取PPT放映页“切换”的“持续时间”值

aspose如何获取PPT放映页“切换”的“持续时间”值 项目场景问题描述问题1:从官方文档和资料查阅发现并没有对切换的持续时间进行处理的方法问题2:aspose的依赖包中,所有的关键对象都进行了混淆处理 解决方案1、找到ppt切换的持续时间对应的混…

GIT:如何查找已删除的文件的历史记录

首先你得知道文件的名称和路径 然后打开 gitlab,到项目中,仓库-> 文件 查找文件 复制文件名到可能存在过这个文件的分支当中,就能看到了

自动渗透测试与手动渗透测试

根据《渗透测试中发现的 5 种常见网络安全威胁》报告,渗透测试越来越受欢迎。预计到 2025 年,渗透测试市场规模将达到 45 亿美元。 什么是自动渗透测试? 自动化渗透测试工具可以快速有效地检查系统中是否存在已知的安全问题,即使…

使用elementUI实现表格行拖拽改变顺序,无需引入外部库

前言: 使用vue2element UI,且完全使用原生的拖拽事件,无需引入外部库。 如果表格数据量较大,或需要更多复杂功能,可以考虑使用 vuedraggable库,提供更多配置选项和拖拽功能。 思路: 1. 通过el-table的ro…

WPF Prism框架

Prism 是一个开源框架,专门用于开发可扩展、模块化和可测试的企业级 XAML 应用程序,适用于 WPF(Windows Presentation Foundation)和 Xamarin Forms 等平台。它基于 MVVM(Model-View-ViewModel)设计模式&am…