转自:https://www.ustack.com/blog/ceph-monitor/

Ceph rados cluster离不开Monitor,如果没有Monitor,则Ceph将无法执行一条简单的命令。Monitor由于其特殊性,了解它,对于我们深入理解Ceph,保证Ceph的稳定性,有很大帮助。

Monitor 基本架构介绍

Monitor的基本架构图:


Monitor的主要任务就是维护集群视图的一致性,在维护一致性的时候使用了Paxos协议,并将其实例化到数据库中,方便后续的访问。所以Monitor基本上是由三类结构支撑起来的,第一类是管理各种map和相关内容的PaxosService实例,第二类是Paxos实例,第三类是对k/v store的封装,即MonitorDBStore实例。

这样看起来,分工是很明确的,PaxosService handle client过来的请求,Paxos用来处理Paxos协议相关的东西,一般在选主和处理update请求的时候才会涉及,而在处理读请求的时候一般不会涉及。 MonitorDBStore是处理数据存储相关的封装,用来将update的数据进行持久化。

模块详解

1、AuthMonitor

用来提供对auth的一致性,比如keyring,这些keyring的生成都是要走Paxos流程的。

2、LogMonitor
将log的东西写入到monitor,且是一致的,就是所有的mon都有这个日志。比如我们经常看到的wrongly marked me down就是由clog利用monitor的log机制发送到monitor的,这样你在osd上能看到,monitor里也可以查看到。可以将一些重要信息保存下来。

3、MdsMonitor
用来维护Mds的状态,然后通过Mdsmap来进行更新。目前Mds默认有一个Active,其它的是Standby。

4、OsdMonitor
用来维护Osd的状态,当osd有up,down等状态变化的时候,会改变osdmap,然后将osdmap通过随机选择一个osd 的方式将osdmap扩散出去。其中有些细微差别,比如up的时候,除了随机选择的osd外,还会将osdmap直接发送给向mon报启动的osd。

5、PGMonitor
用来维护PG的state,这些信息是由Primary osd来通过tick发送给Mon的。

6、K/V Store
对K/V Store(这里使用的是LevelDB)的封装是主要是在MonitorDBStore这个类中,其中封装的Op主要有三类:

  • PUT操作
  • ERASE操作
  • COMPACT操作
    目前Monitor可以通过重启(mon_compact_on_start)或者命令(ceph compact)来进行Compact,所以Monitor的空间是不会用的那么多。

7、Paxos
Paxos实例主要是实现Paxos协议,然后应用于选主和处理update请求。
选主(三个mon同时启动):
1) mon 启动进入prboing
2) 当一个mon probing到超半数的mon的时候,就会发起选举
3) 发起选举的mon会向所有的mon发起propose
4) mon处理propose消息的时候会根据自己的rank来决定是重新发起选举还是defer
5) 如果所有的mon 都ack,或者过半数mon回复ack(超时后检查),则选举成功,自己进行leader init,向其它mon发victory消息
6) 其它mon则lose_election,进入peon_init。
7) 在此之后,leader会发collect消息去收集peon的信息,为了后续处理请求能达成一致。

转载于:https://www.cnblogs.com/goldd/p/6610600.html

Ceph Monitor基础架构与模块详解相关推荐

  1. 刻意练习:Python基础 -- Task13. datetime模块详解

    datetime模块 datetime 是 Python 中处理日期的标准模块,它提供了 4 种对日期和时间进行处理的类:datetime.date.time 和 timedelta. datetim ...

  2. Python基础学习之 os 模块详解

    Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...

  3. k8s架构及服务详解

    1.容器及其三要素 1.1.容器是什么 容器的本质是一种特殊的进程. 在linux容器中有三个重要的概念:Namespace.Cgroups.rootfs. Namespace做隔离,让进程只能看到N ...

  4. spring(7)---深入理解Spring核心技术——Spring中的各模块详解

    深入理解Spring核心技术--Spring中的各模块详解 Spring框架的两个基本概念IOC容器和AOP,相信大家现在对Spring中的这两个部分的基本概念有了一定的认识,好了,那么今天我们就来正 ...

  5. 2010年系统架构师考试题详解

    原文地址为: 2010年系统架构师考试题详解 考试科目一:综合知识 采用微内核结构的操作系统提高了系统的灵活性和可扩展性,(1) (1)A.并增强了系统的可靠性和可移植性,可运行于分布式系统中 B.并 ...

  6. 2015年系统架构师考试题详解

    原文地址为: 2015年系统架构师考试题详解 考试科目一:综合知识 某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,-,n)管理机票销售.假设Tj(j=1,2,-, ...

  7. Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载)

    Java开源生鲜电商平台-Java分布式以及负载均衡架构与设计详解(源码可下载) 说明:主要是针对一些中大型的项目需要进行分布式以及负载均衡的架构提一些思路与建议. 面对大量用户访问.高并发请求,海量 ...

  8. 2011年系统架构师考试题详解

    原文地址为: 2011年系统架构师考试题详解 考试科目一:综合知识 操作系统为用户提供了两类接口:操作一级和程序控制一级的接口,以下不属于操作一级的接口是(1). (1)A.操作控制命令 B.系统调用 ...

  9. 架构设计-支付宝、京东、美团、去哪儿的支付系统架构整体设计详解!!!

    架构设计-支付宝.京东.美团.去哪儿的支付系统架构整体设计详解!!! 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据支付能力将不同的支付渠道封装 ...

  10. hadoop大数据平台架构之DKhadoop详解

    hadoop大数据平台架构之DKhadoop详解 大数据的时代已经来了,信息的爆炸式增长使得越来越多的行业面临这大量数据需要存储和分析的挑战.Hadoop作为一个开源的分布式并行处理平台,以其高拓展. ...

最新文章

  1. Spring Cloud Zuul
  2. 信息竞赛进阶指南--归并排序求逆序对
  3. 编写区块链_编写由区块链驱动的在线社区的综合指南
  4. 微信发虎年新春贺词领福袋:游戏皮肤、QQ音乐VIP、现金红包等
  5. 拳王虚拟项目公社:通过网络卖虚拟产品,月入1W的全自动化推广引流技术
  6. 2021年12月Python小屋编程比赛获奖名单
  7. python 自定义词典_cawdrey-Python的几个有用的自定义词典 -Dominic Davis-Foster
  8. 利用ettercap进行简单的基于数据库的ARP毒化攻击
  9. c语言实验报告函数及其应用,2020c语言实验报告函数总结心得.docx
  10. 【人工智能】一文读懂人脸识别技术
  11. 小狮子荣光不复 瑞星信息去年亏损7300万元
  12. Oracle HFM OHS服务无法启动
  13. php网页跳转支付宝app,php 做支付宝电脑网站和app支付
  14. 关于html 背景图片的引用格式
  15. 基于C语言的飞机票预订系统
  16. 【学术相关】有什么事情是你读博以后才知道的?
  17. Microsoft Edge浏览器打不开
  18. Python 库打包分发(setup.py 编写)
  19. Windows 系统下搭建 WAMP 环境
  20. 随诊医生3---应用介绍页面

热门文章

  1. 使用 Eclipse 平台进行调试
  2. Django - 补充目录
  3. 【转】vim ctag使用方法
  4. 翻译:与包括索引列:5级阶梯SQL Server索引
  5. Codeforces 620E New Year Tree
  6. yii2得到的数据对象转化成数组
  7. 点击某些按钮不要触发验证控件
  8. vue轮播插件vue-awesome-swiper
  9. sqltext的参数化处理
  10. Equivalent String