功能作用
提供 Cluster Map 信息
Ceph Mon 既不保存客户端业务数据,也不向客户端提供业务数据。所有集群节点均向 Ceph Mon 报告并共享有关其状态的每个更改信息,然后 Ceph Mon 将其保存在 Cluster Map 中。Ceph Mon 负责向客户端和集群的其他节点提供一直保持更新的 Cluster Map(包括集群拓扑);
Ceph Client 在读写数据(OSD)前,都需要和 Ceph Mon 通信,以获取最新的 Cluster Map 副本;
Ceph Client 只需连接某个 Ceph Mon 节点并检索当前的 Cluster Map,便能确定所有 Monitor 和 OSD 节点的位置;
Ceph Client 和其他节点,周期性地与 Ceph Mon 通信,来获取最新的 Cluster Map 副本,以得知整个集群的当前状态;
Authentication
Auth:Monitors are also responsible for managing authentication between daemons and clients.
高可用性
Ceph Cluster 可以在只有一个 Ceph Mon 的情形下运行,然而这会带来单点故障的风险。也就是说,如果该 Ceph Mon 停止工作,Ceph Client 就再也无法读、写数据;
要克服该风险,典型的 Ceph Cluster 必须组建 Ceph Mon 集群,这些运行 Ceph Mon 服务的节点被称为 Ceph Mon 节点;
节点数量
Monitor使用Paxos算法来保证分布式数据一致。Cluster Map一致性的保证需要集群的大多数Monitor存活,以建立仲裁集。例如3个Monitor中有2个存活,5个Monitor中有3个存活,6个Monitor中有4个存活等,这就是大多数Monitor存活原则。在生产环境中至少要运行3个Monitor,以确保高可用性。当集群规模增大的时候,考虑增加Monitor的存活个数到5个以上。
在 Ceph 集群中有多个 MON 时,MON 的数目必须是奇数,最小的数目是 1,最小的推荐数目是 3。因为 monitor 将运行于仲裁模式中,超过总数一半的 monitor 必须保持运行状态来避免脑裂。所有的 monitor 中,有一个将作为 leader 运行。当 leader 不工作时,其他 Monitor 节点被选举为 Leader 节点。
数据一致
分布式性算法
多个 monitor 使用 Paxos 算法来保证主 Cluster Map 的一致性,对Ceph集群所做的任何更新,都要由Paxos来保证Cluster Map分布式的一致性。
Monitor将监控服务中的所有更改信息写入单个Paxos,并且Paxos更改写入的K/V存储,以实现强一致性。Ceph Monitor使用K/V存储的快照和迭代器(LevelDB数据库)来执行整个存储的同步。换句话说,Paxos是Ceph Monitor的核心服务,专门负责数据一致性工作。
在 Ceph Monitor 中,包含 Paxos 服务(分别负责OSD Map、Monitor Map、PG Map、CRUSH Map等)。
Paxos服务负责将自己对应的数据序列化为K/V并写入Paxos层。
Ceph集群中所有与Monitor节点的交互最终都是在调用对应的Paxos服务功能,多种Paxos服务将不同组件的Map数据序列化为K/V,共用同一个Paxos实例。
网络端口
默认情况下,Monitor 监听端口为 6789。此外,Monitor 始终在网络上运行,提供给 Ceph Client 访问。