Ceph使用心跳机制来检测和维护集群中各个组件(如Monitor、OSD、MDS等)的状态和可用性。心跳机制确保集群中的各个节点之间的通信正常,并及时检测和处理故障,通过心跳机制,Ceph能够实时监测和响应集群中的故障,确保数据的可靠性和可用性。当发生故障时,Ceph会自动进行故障恢复和自愈操作,以尽可能地保持集群的正常运行状态。
介绍
-
Monitor(监视器):
-
Monitor之间通过互相发送心跳消息来检测彼此的可用性。
-
Monitor还会发送心跳消息给OSD和MDS,以检测它们的状态。
-
如果Monitor无法接收到其他Monitor、OSD或MDS的心跳消息,它将认为相应的组件可能发生了故障,并采取相应的措施,如重新选举Monitor或标记OSD为离线状态。
-
-
OSD(对象存储守护进程):
-
OSD会定期向Monitor发送心跳消息,以通知自己的存在和状态。
-
如果Monitor在一定时间内没有收到来自OSD的心跳消息,它将认为该OSD可能发生了故障,并采取相应的措施,如重新复制丢失的数据或重新启动OSD。
-
-
MDS(元数据服务器):
-
MDS之间通过互相发送心跳消息来检测彼此的可用性。
-
MDS还会发送心跳消息给Monitor,以通知自己的存在和状态。
-
如果Monitor在一定时间内没有收到来自MDS的心跳消息,它将认为该MDS可能发生了故障,并采取相应的措施,如重新选举MDS或标记文件系统为不可用状态。
-
流程
监听
如上图所示,OSD节点会监听public、cluster、front和back四个端口
-
public端口:监听来自Monitor和Client的连接
-
cluster端口:监听来自OSD Peer的连接
-
front端口:供客户端连接集群使用的网卡,这里临时给集群内部之间进行心跳
-
back端口:供集群内部使用的网卡。集群内部之间进行心跳
-
hbclient:发送ping心跳的messenger
OSD之间互相心跳检测
1).同一个PG内OSD互相心跳,他们互相发送PING/PONG信息。 2).每隔6s检测一次 (实际会在这个基础上加上一个随机时间来避免峰值) 3).20s没有检测到心跳回复,加入failure队列 (失败)
OSD与Mon心跳检测
OSD报告给Monitor
-
OSD发生问题时 (比如故障、PG变更)
-
自身启动5秒内
-
OSD周期性的上报给Monito 1️⃣ OSD检查failure_queue中的伙伴OSD失败信息 2️⃣ 向Monitor发送失效报告,并将失败信息加入failure_pending队列,然后将其从failure_queue移除 3️⃣ 收到来自failure_queue或者failure_pending中的OSD的心跳时,将其从两个队列中移除,并告知Monitor取消之前失效的报告 4️⃣ 当发生与Monitor网络重连时,将会failure_pending中的错误报告加回到failure_queue中,并再次发送给Monitor
-
Monitor 统计下线OSD (1) Monitor收集来自OSD的伙伴无效报告 (2)当错误报告指向的OSD失效超过一定阈值,且有足够多的OSD报告其失效时,将该OSD下线
端口(扩展)
Public端口
-
Public端口是OSD节点监听来自Monitor和Client的连接的端口。
-
Monitor使用Public端口与OSD节点进行通信,发送命令和接收状态信息。
-
Client通过Public端口与OSD节点进行数据读写操作。
Cluster端口
-
Cluster端口是OSD节点监听来自其他OSD节点(OSD Peer)的连接的端口。
-
OSD节点之间通过Cluster端口进行数据复制、数据恢复和集群内部的通信。
-
使用Cluster端口可以确保集群内部的数据传输和通信是安全和可靠的。
Front端口
-
Front端口是供客户端连接集群使用的网卡端口。
-
客户端可以通过Front端口与Ceph集群进行数据读写操作。
-
Front端口通常对外提供服务,允许外部主机通过网络连接到Ceph集群。
Back端口
-
Back端口是供Ceph集群内部使用的网卡端口。
-
集群内部的各个组件(如Monitor、OSD、MDS等)可以通过Back端口进行通信和心跳检测。
-
Back端口通常用于集群内部的数据传输和通信,以确保集群的正常运行和故障检测。
HBclient(心跳客户端)
-
HBclient是一种Ceph Messenger,用于发送ping心跳消息。
-
它用于在Ceph集群中的不同节点之间进行心跳检测。
-
通过发送ping心跳消息,Ceph可以实时检测节点的可用性和状态,并采取相应的措施来处理故障情况。
原创文章,作者:geeklinux.cn,如若转载,请注明出处:https://www.geeklinux.cn/cloud-native/ceph/759.html