如果是在做ceph的配置,我们会经常遇到这几个问题

  1. 问:ceph需要配置几个mon

    答:配置一个可以,但是坏了一个就不行了,需要配置只是三个mon,并且需要是奇数个
  2. 问:ceph的mon能跟osd放在一起么,需要配置很好么?

    答:能跟放在一起,但是建议在环境允许的情况下一定独立机器,并且mon的配置能好尽量好,能上ssd就上ssd

这两个问题的答案不能说是错的,但是为什么这么说,这么说有没有问题,这篇文章将根据实际的数据来告诉你,到底mon的极限在哪里,为什么都说要奇数,偶数难道就不行么

前言

本篇将从真实的实践中,让你更能够理解mon的故障极限,本次测试的场景数据样本足够大,最大的一个测试使用了10个mon,我想目前就算PB基本的ceph集群里也没有人会超过10个mon,所以足够覆盖大部分的场景,先来一个数据图看下10个mon的集群长什么样

cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_OK
monmap e10: 10 mons at {10=192.168.8.107:6800/0,2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,7=192.168.8.107:6797/0,8=192.168.8.107:6798/0,9=192.168.8.107:6799/0,lab8107=192.168.8.107:6789/0}
election epoch 58, quorum 0,1,2,3,4,5,6,7,8,9 lab8107,2,3,4,5,6,7,8,9,10
osdmap e7: 1 osds: 1 up, 1 in
flags sortbitwise
pgmap v13: 64 pgs, 1 pools, 0 bytes data, 0 objects
34268 kB used, 274 GB / 274 GB avail
64 active+clean

mon的地方可以看到10个mon了

测试结论

ceph的mon能够正常情况需要保证,当前剩余的mon的个数需要大于总mon个数的一半,例如10个mon,mon个数一半就是5个,那么大于5个就是6个,也就是最少需要6个,上面的测试结论也符合这个规则,为什么不去偶数个,是因为当mon的个数为偶数个的时候,允许down的mon的个数与少一个mon的情况下的mon的个数允许的个数是一样的,所以要么多两个,多一个增加不了可靠性,并不是不允许

测试过程的数据

10个mon集群

10个mon的极限

  cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
4 mons down, quorum 0,1,2,3,4,5 lab8107,2,3,4,5,6
monmap e10: 10 mons at {10=192.168.8.107:6800/0,2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,7=192.168.8.107:6797/0,8=192.168.8.107:6798/0,9=192.168.8.107:6799/0,lab8107=192.168.8.10

10个mon关闭4个没问题,关闭5个就卡死

9个mon集群

9个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
4 mons down, quorum 0,1,2,3,4 lab8107,2,3,4,5
monmap e11: 9 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,7=192.168.8.107:6797/0,8=192.168.8.107:6798/0,9=192.168.8.107:6799/0,lab8107=192.168.8.107:6789/0}

9个mon关闭4个没问题,关闭5个就卡死

8个mon集群

8个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
3 mons down, quorum 0,1,2,3,4 lab8107,2,3,4,5
monmap e12: 8 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,7=192.168.8.107:6797/0,8=192.168.8.107:6798/0,lab8107=192.168.8.107:6789/0}

8个mon关闭3个没问题,关闭4个就卡死

7个mon集群

7个mon的极限

  cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
3 mons down, quorum 0,1,2,3 lab8107,2,3,4
monmap e13: 7 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,7=192.168.8.107:6797/0,lab8107=192.168.8.107:6789/0}

7个mon关闭3个没问题,关闭4个就卡死

6个mon集群

6个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
2 mons down, quorum 0,1,2,3 lab8107,2,3,4
monmap e14: 6 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,6=192.168.8.107:6796/0,lab8107=192.168.8.107:6789/0}

6个mon关闭2个没问题,关闭3个就卡死

5个mon集群

5个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
2 mons down, quorum 0,1,2 lab8107,2,3
monmap e15: 5 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,5=192.168.8.107:6795/0,lab8107=192.168.8.107:6789/0}

5个mon关闭2个没问题,关闭3个就卡死

4个mon集群

4个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
1 mons down, quorum 0,1,2 lab8107,2,3
monmap e16: 4 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,4=192.168.8.107:6794/0,lab8107=192.168.8.107:6789/0}

4个mon关闭1个没问题,关闭2个就卡死

3个mon集群

3个mon的极限

   cluster ace3c18f-b4a5-4342-a598-8104a770d4a8
health HEALTH_WARN
1 mons down, quorum 0,1 lab8107,2
monmap e17: 3 mons at {2=192.168.8.107:6792/0,3=192.168.8.107:6793/0,lab8107=192.168.8.107:6789/0}

3个mon关闭1个没问题,关闭2个就卡死

测试结束

下面为自己玩的一个动态图,10个mon正常,down 4个还是好的,down 5个就无法使用了

mon到底能坏几个的更多相关文章

  1. (转)CDN——到底用还是不用?

    用CDN的七个理由 浏览器从服务器上下载css.js和图片等文件时都要和服务器连接,而大部分浏览器对同一个域名用于下载文件的并发连接数限制在4个,这意味着如果要下载第五个文件就必须等前四个文件中有一个 ...

  2. CDN——到底用还是不用?

    最近在学bootstrap,在知乎上搜索bootstrap看到有人问bootstrap基础包体积较大,对性能影响会不会很大,看到两种方法来减少对性能的影响: 有选择地部分加载,bootstrap带有L ...

  3. 对Oracle数据库坏块的理解

    1.物理坏块和逻辑坏块 在数据库中有一个概念叫做数据块的一致性,Oracle的数据块的一致性包括了两个层次:物理一致性和逻辑一致性,如果一个数据块在这两个层次上存在不一致性,那就对应到了我们今天要要说 ...

  4. paip.编程语言到底有没有优劣之分优秀之分

    paip.编程语言到底有没有优劣之分优秀之分 人有没有优秀之分之分呢??狗有没有优秀之分呢?? 当然是有的,有好人坏人的说法,或者精英平民的区分..狗也有好狗狗,坏狗,疯狗嘛.. 所以,自然,编程语言 ...

  5. 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序

    4.1.6 操作符之间的优先顺序 在表达一些比较复杂的条件判断时,在同一个表达式中,有时可能会存在多个操作符.比如,我们在判断要不要买某个西瓜时,不仅要判断它的总价(单价8.2元/斤,一共10.3斤) ...

  6. HttpClient参观记:.net core 2.2 对HttpClient到底做了什么?

    .net core 于 10月17日发布了 ASP.NET Core 2.2.0 -preview3,在这个版本中,我看到了一个很让我惊喜的新特性:HTTP Client Performance Im ...

  7. Python中的logger和handler到底是个什么鬼

    最近的任务经常涉及到日志的记录,特意去又学了一遍logging的记录方法.跟java一样,python的日志记录也是比较繁琐的一件事,在写一条记录之前,要写好多东西.典型的日志记录的步骤是这样的: 创 ...

  8. 硬盘坏道检测工具对比(DiskGenius/HdTunePro/MHDD等)

    说到硬盘检测软件,大家肯定会想到MHDD,但是MHDD真的好用?反正我觉得太难用了,只能在DOS下运行,不能在Win系统下运行:最重要的是只支持IDE硬盘模式,现在的主板几乎全部默认都是AHCI模式, ...

  9. 所以到底什么是 Growth Hacking?

    Growth hacking 在硅谷的确是有快被用坏的趋势,之所以在大陆的互联网创业圈里还没有普及开来,我想一个是由于这个词并没有对应的中文解释,没有一个能够找到一个相对完美的解释,就像 “hack” ...

随机推荐

  1. allure安装

    allure是一个通用的测试报告框架 下载地址:http://allure.qatools.ru/ 第一步:进入该页面,右上角有个download,点击进入github页面,选择最新版本下载到某个路径 ...

  2. JS获取DropDownList选择项的值

    var dropDownList= document.getElementById("<%=DropDownListID.ClientID %>");//获取DropD ...

  3. S10 TES的八强赛,创造了奇迹,看看比赛时网友们怎么说的

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 我相信很多观众会和我一样吧,当TES赢下第一局后开始心怀侥幸,赢下第二局后觉 ...

  4. 反射(Reflection)

    Java学习笔记--反射(Reflection) 关于反射 能够分析类能力的程序称之为反射(Reflection) 反射机制可以用来: 在运行时分析类的能力 在运行时检查对象,例如:编写一个适合所有类 ...

  5. JUC---02JUC辅助类

    一.java.util.concurrent.CountDownLatch------减少计数 1.执行原理: ①.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这 ...

  6. OpenCascade拓扑对象之:拓扑对象的层次结构

    @font-face { font-family: "Times New Roman" } @font-face { font-family: "宋体" } @ ...

  7. re模块,判断某行/某字符是否存在

    import re ##判断行是否存在def get_need_line(): ## 获取有用信息行 with open('task.log',mode="r") as f: fo ...

  8. React中useLayoutEffect和useEffect的区别

    重点: 1.二者函数签名相同,调用方式是一致的 2. 怎么简单进行选择: 无脑选择useEffect,除非运行效果和你预期的不一致再试试useLayoutEffect 区别详解:useEffect是异 ...

  9. Azure Data Factory(三)集成 Azure Devops 实现CI/CD

    一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...

  10. C语言100题集合-ex003

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...