Ceph mds(metadata service)作为 ceph 的访问入口,需要实现高性能及数据备份,假设启动 4 个 MDS 进程,设置 2 个 Rank。这时候有 2 个 MDS 进程会分配给两个 Rank,还剩下 2 个 MDS 进程分别作为另外个的备份。

设置每个 Rank 的备份 MDS,也就是如果此 Rank 当前的 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@ceph-deploy ceph-cluster]$ ceph mds stat
mycephfs-1/1/1 up  {0=ceph-mgr1=up:active}

二、添加 MDS 服务器

原有MDS服务器:mgr1 10.0.0.17
新添加MDS服务器:mgr2 10.0.0.18、mon1 10.0.0.14、mon2 10.0.0.15

# 安装 ceph-mds 服务
[root@ceph-mgr2 ~]# yum install ceph-mds -y
[root@ceph-mon1 ~]# yum install ceph-mds -y
[root@ceph-mon2 ~]# yum install ceph-mds -y# 添加 mds 服务器
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mds create ceph-mgr2
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mds create ceph-mon1
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy mds create ceph-mon2# 验证 mds 服务器当前状态
[ceph@ceph-deploy ceph-cluster]$ ceph mds stat
mycephfs-1/1/1 up  {0=ceph-mgr1=up:active}, 3 up:standby
[ceph@ceph-deploy ceph-cluster]$ ceph fs status
mycephfs - 0 clients
========
+------+--------+-----------+---------------+-------+-------+
| Rank | State  |    MDS    |    Activity   |  dns  |  inos |
+------+--------+-----------+---------------+-------+-------+
|  0   | active | ceph-mgr1 | Reqs:    0 /s |   10  |   13  |
+------+--------+-----------+---------------+-------+-------+
+-----------------+----------+-------+-------+
|       Pool      |   type   |  used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 2654  |  281G |
|   cephfs-data   |   data   |    0  |  281G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
|  ceph-mgr2  |
|  ceph-mon1  |
|  ceph-mon2  |
+-------------+

三、设置 MDS 为 active 的数量为 2

四个 mds 服务器,可以设置为两主两备

# 设置mycephfs的max_mds值为2,其就是表示active数量
[ceph@ceph-deploy ceph-cluster]$ ceph fs set mycephfs max_mds 2# 查看其中max_mds参数是否为 2
[ceph@ceph-deploy ceph-cluster]$ ceph fs get mycephfs
Filesystem 'mycephfs' (1)
fs_name mycephfs
epoch   18
flags   12
created 2021-08-09 07:58:49.786248
modified    2021-08-16 01:46:30.913265
tableserver 0
root    0
session_timeout 60
session_autoclose   300
max_file_size   1099511627776
min_compat_client   -1 (unspecified)
last_failure    0
last_failure_osd_epoch  66
compat  compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds 2
in  0,1
up  {0=14133,1=14622}
failed
damaged
stopped
data_pools  [8]
metadata_pool   7
inline_data disabled
balancer
standby_count_wanted    1
14133:  10.0.0.17:6800/1866575599 'ceph-mgr1' mds.0.6 up:active seq 18
14622:  10.0.0.15:6800/555073892 'ceph-mon2' mds.1.17 up:active seq 206# 查看当前 fs 状态
[ceph@ceph-deploy ceph-cluster]$ ceph fs status
mycephfs - 0 clients
========
+------+--------+-----------+---------------+-------+-------+
| Rank | State  |    MDS    |    Activity   |  dns  |  inos |
+------+--------+-----------+---------------+-------+-------+
|  0   | active | ceph-mgr1 | Reqs:    0 /s |   10  |   13  |
|  1   | active | ceph-mon2 | Reqs:    0 /s |   10  |   13  |
+------+--------+-----------+---------------+-------+-------+
+-----------------+----------+-------+-------+
|       Pool      |   type   |  used | avail |
+-----------------+----------+-------+-------+
| cephfs-metadata | metadata | 3974  |  281G |
|   cephfs-data   |   data   |    0  |  281G |
+-----------------+----------+-------+-------+
+-------------+
| Standby MDS |
+-------------+
|  ceph-mgr2  |
|  ceph-mon1  |
+-------------+
MDS version: ceph version 13.2.10 (564bdc4ae87418a232fc901524470e1a0f76d641) mimic (stable)

四、MDS 高可用配置


目前 MDS 状态:
ceph-mgr1和ceph-mon2分别是active状态
ceph-mon1和ceph-mgr2分别处于standby 状态
现在将 ceph-mon1 设置为 ceph-mgr1 的 standby,将 ceph-mgr2 设置为 ceph-mon2 的 standby
则配置文件如下:

[ceph@ceph-deploy ceph-cluster]$ vim ceph.confpublic_network = 10.0.0.0/24
cluster_network = 192.168.0.0/24
mon_initial_members = ceph-mon1
mon_host = 10.0.0.14
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephxmon clock drift allowed = 2
mon clock drift warn backoff = 30    #设置此选项可以避免时间不同步带来的警告[mds.ceph-mon1]
mds_standby_for_name = ceph-mgr1
mds_standby_replay = true[mds.ceph-mgr2]
#mds_standby_for_fscid = mycephfs
mds_standby_for_name = ceph-mon2
mds_standby_replay = true

五、发布配置文件并重启 mds 服务

# 发布配置文件并重启 mds 服务
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf config push ceph-mon1
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf config push ceph-mon2
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf config push ceph-mgr1
[ceph@ceph-deploy ceph-cluster]$ ceph-deploy --overwrite-conf config push ceph-mgr2 # 重启服务
[root@ceph-mgr1 ~]# systemctl restart ceph-mds@ceph-mgr1.service
[root@ceph-mgr2 ~]# systemctl restart ceph-mds@ceph-mgr2.service
[root@ceph-mon1 ~]# systemctl restart ceph-mds@ceph-mon1.service
[root@ceph-mon2 ~]# systemctl restart ceph-mds@ceph-mon2.service

六、Ceph 集群 mds 高可用状态

[ceph@ceph-deploy ceph-cluster]$ ceph fs get mycephfs
Filesystem 'mycephfs' (1)
fs_name mycephfs
epoch   62
flags   12
created 2021-08-09 07:58:49.786248
modified    2021-08-16 02:13:01.891828
tableserver 0
root    0
session_timeout 60
session_autoclose   300
max_file_size   1099511627776
min_compat_client   -1 (unspecified)
last_failure    0
last_failure_osd_epoch  91
compat  compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table,9=file layout v2,10=snaprealm v2}
max_mds 2
in  0,1
up  {0=14742,1=14838}
failed
damaged
stopped
data_pools  [8]
metadata_pool   7
inline_data disabled
balancer
standby_count_wanted    1
14742:  10.0.0.15:6800/1127316889 'ceph-mon2' mds.0.55 up:active seq 31
15000:  10.0.0.18:6800/3993964800 'ceph-mgr2' mds.0.0 up:standby-replay seq 2 (standby for rank 0 'ceph-mon2')
14838:  10.0.0.17:6800/3216206710 'ceph-mgr1' mds.1.49 up:active seq 14
15006:  10.0.0.14:6800/1730652745 'ceph-mon1' mds.1.0 up:standby-replay seq 2 (standby for rank 1 'ceph-mgr1')

CephFS MDS服务 高可用相关推荐

  1. 全面!一文理解微服务高可用的常用手段

    来自:高可用架构公众号 " 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 什么 ...

  2. ChaosBlade x SkyWalking 微服务高可用实践

    来源|阿里巴巴云原生公众号 前言 在分布式系统架构下,服务组件繁多且服务间的依赖错综复杂,很难评估单个故障对整个系统的影响,而且请求链路长,如果监控告警.日志记录等基础服务不完善会造成故障响应.故障定 ...

  3. 服务高可用:幂等性设计

    转载自 服务高可用:幂等性设计 什么是幂等性? 一般在服务调用时,读服务如果调用失败了,会自动按配置次数转移到别的服务上去请求.而写服务就不能重复请求,如果因为超时或者网络故障等原因被调用服务并没有返 ...

  4. 微服务高可用之熔断器实现原理与 Golang 实践

    I.内容提要 在微服务架构中,经常会碰到服务超时或通讯失败的问题,由于服务间层层依赖,很可能由于某个服务出现问题,不合理的重试和超时设置,导致问题层层传递引发雪崩现象,而限流和熔断是解决这个问题重要的 ...

  5. 全面 一文理解微服务高可用的常用手段

    " 高可用并不是一套整体解决方案,而是由诸多环节组成,一环扣一环,鬼知道为了这些串联起来的环节,我得出多少张牌去应对,才能最终组成一个整个系统的高可用落地方案. 图片来自 Pexels 什么 ...

  6. 【CTO讲堂】打造数据可靠、服务高可用的客服平台

    为了帮助IT从业者职业之路拥有更多收获,在诸多C粉的殷切期待下,由 CTO俱乐部打造的CTO线上讲堂自登场以来获得大家好评.本期邀请Udesk CTO肖立鹏带来"打造数据可靠.服务高可用的客 ...

  7. 通过Keepalived实现金山云自建服务高可用

    通过Keepalived实现金山云自建服务高可用 用户在金山云上部署应用时,如需要MySQL, Redis等服务,建议尽量采用金山云提供的PaaS服务(比如关系型数据库-MySQL,云数据库Redis ...

  8. 2. Ceph的权限管理、RBD与Cephfs的挂载使用和MDS的高可用

    1. Ceph用户的权限管理及授权流程 Ceph使用Ceph X协议对客户端进行身份的认证. 客户端与Mon节点的通讯均需要通过Cephx认证,可在Mon节点关闭Cephx认证,关闭认证后将允许所有访 ...

  9. 报告老板,微服务高可用神器已祭出,您花巨资营销的高流量来了没?

    来自:码大叔 我得意地来到老板的办公室:"报告老板,高可用神器已祭出,您花巨资营销的高流量什么时候到?" 老板呵呵一声:"高流量下周一来报道,你可以准备下和他做工作交接了 ...

最新文章

  1. JDK8新特性之Stream流
  2. android:ellipsize实现跑马灯效果总结
  3. 关于推荐的一个算法工程师访谈,有一些内容值得看看
  4. 电子商务数据运营的五大应用
  5. += 对于可变对象和不可变对象的区别
  6. Red Hat Enterprise Linux (RHEL) 6.3 6.4 6.5 DVD ISO 下载地址
  7. 算法导论 高频算法题 数据结构与算法之美
  8. matlab中怎么设置母线,Matlab绘图教程
  9. 傅里叶变换对应的matlab函数,用MATLAB如何实现傅里叶变换
  10. 计算机论文英文摘要范文,毕业论文英文摘要范文三篇
  11. Git 初接触 (四) Git的分支操作
  12. SecureCRT通过vim打开文件时显示行号
  13. 根据url生成二维码,扫描打开url的两种方法编辑器
  14. 寒假集训难题(四)QWQ和神奇的传送器nefu1608
  15. 倒角距离(Chamfer distance)
  16. Linux:查看主机显卡
  17. RSRP为什么是负数
  18. ios系统软件迁移到安卓_教你把ios系统移植到安卓手机
  19. 修改pdf文件在浏览器里的标题
  20. JSP使用Struts1提交中文表单时乱码,字符编码问题

热门文章

  1. 计算机系大神和数学系系花,小甜文:《一贱钟情,大神求放过》1v1双C,男主小奶狗,全程高甜...
  2. Halcon一维码识别实例
  3. python程序弹出输入框_Python弹出输入框并获取输入值的实例
  4. 谜底是计算机的谜语英语,有关英语谜语大全及答案
  5. [Halcon] license分享 — 2022.12月(持续更新)
  6. Knn算法之手写识别系统
  7. 字节跳动 文林福_AI实力赋能,让汽车营销玩出抖音范
  8. c语言青蛙游戏,c语言:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?...
  9. java实验三正式报告
  10. python 统计计数