Monitor 是Ceph 元数据管理组件,一个Ceph存储集群中往往存在多个Monitor实例(通常为奇数个),它们基于Paxos算法,以Monitor集群方式对外提供一致性的元数据访问和更新。
Mon 架构
Ceph 的设计思路是尽可能由更智能的OSD以及Client 来降低Monitor 作为中心节点的负担,所以需要Monitor 介入的场景并不多,主要集中在以下几点:
- Client 首次访问数据需要从获取当前集群状态和CRUSH Map等信息
- 发生故障时,OSD 节点自己或者依靠同伴向Monitor报告故障信息
- OSD 恢复,加入集群时,会首先报告Monitor并获得当前的集群状态。
Ceph 整体架构如图所示:
![](https://img.haomeiwen.com/i7304940/61f093f41e362684.png)
Mon 总体上分为PaxosService,Paxos,LevelDB三层,其中 PaxosService 层将 不同元数据信息封装成单条kv,LevelDB 层则作为最终的数据和Log存储。Paxos 层基于Paxos算法,通过一些列的节点间的通信来实现集群间一致性的读写以及故障检测和恢复。Paxos 将整个过程分为多个阶段,每个阶段会达成一定的目的,进而进入不同的状态。阶段如下:
-
Boostrap 阶段
节点启动或者之后的多数故障情况 -
选主阶段
-
Recovery 阶段
-
读写阶段
一致性算法Paxos介绍
TODO
网友评论