js心跳间隔怎么确定_Ceph心跳机制

本文详细介绍了Ceph心跳机制,包括OSD之间的相互心跳检测、与Monitor的心跳检测,以及Ceph如何通过心跳判断OSD节点失效。Ceph通过设置心跳间隔、宽限期和报告次数等参数来平衡故障检测的及时性和系统压力。此外,还讲解了配置心跳设置的方法,以优化集群性能。
摘要由CSDN通过智能技术生成

6af01ad4ce97e97ba213e299ea55c5f3.png

1. 心跳介绍


心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。问题:

  • 故障检测时间和心跳报文带来的负载之间做权衡。
  • 心跳频率太高则过多的心跳报文会影响系统性能。
  • 心跳频率过低则会延长发现故障节点的时间,从而影响系统的可用性。

故障检测策略应该能够做到:

  • 及时:节点发生异常如宕机或网络中断时,集群可以在可接受的时间范围内感知。
  • 适当的压力:包括对节点的压力,和对网络的压力。
  • 容忍网络抖动:网络偶尔延迟。
  • 扩散机制:节点存活状态改变导致的元信息变化需要通过某种机制扩散到整个集群。

2. Ceph 心跳检测

72f469920900acf41d45f651036cbfff.png

OSD节点会监听public、cluster、front和back四个端口

  • public端口:监听来自Monitor和Client的连接。
  • cluster端口:监听来自OSD Peer的连接。
  • front端口:供客户端连接集群使用的网卡, 这里临时给集群内部之间进行心跳。
  • back端口:供客集群内部使用的网卡。集群内部之间进行心跳。
  • hbclient:发送ping心跳的messenger。

3. Ceph OSD之间相互心跳检测

8a67810a1e3ee4c9e5f2a48240ff9a80.png

步骤:

  • 同一个PG内OSD互相心跳,他们互相发送PING/PONG信息。
  • 每隔6s检测一次(实际会在这个基础上加一个随机时间来避免峰值)。
  • 20s没有检测到心跳回复,加入failure队列。

4. Ceph OSD与Mon心跳检测

10b16728f5268d5d281c9b01fcefa54d.png

OSD报告给Monitor:

  • OSD有事件发生时(比如故障、PG变更)。
  • 自身启动5秒内。
  • OSD周期性的上报给Monito
    • OSD检查failure_queue中的伙伴OSD失败信息。
    • 向Monitor发送失效报告,并将失败信息加入failure_pending队列,然后将其从failure_queue移除。
    • 收到来自failure_queue或者failure_pending中的OSD的心跳时,将其从两个队列中移除,并告知Monitor取消之前的失效报告。
    • 当发生与Monitor网络重连时,会将failure_pending中的错误报告加回到failure_queue中,并再次发送给Monitor。
  • Monitor统计下线OSD
    • Monitor收集来自OSD的伙伴失效报告。
    • 当错误报告指向的OSD失效超过一定阈值,且有足够多的OSD报告其失效时,将该OSD下线。

5. Ceph心跳检测总结


Ceph通过伙伴OSD汇报失效节点和Monitor统计来自OSD的心跳两种方式判定OSD节点失效。

  • 及时:伙伴OSD可以在秒级发现节点失效并汇报Monitor,并在几分钟内由Monitor将失效OSD下线。
  • 适当的压力:由于有伙伴OSD汇报机制,Monitor与OSD之间的心跳统计更像是一种保险措施,因此OSD向Monitor发送心跳的间隔可以长达600秒,Monitor的检测阈值也可以长达900秒。Ceph实际上是将故障检测过程中中心节点的压力分散到所有的OSD上,以此提高中心节点Monitor的可靠性,进而提高整个集群的可扩展性。
  • 容忍网络抖动:Monitor收到OSD对其伙伴OSD的汇报后,并没有马上将目标OSD下线,而是周期性的等待几个条件:
    • 目标OSD的失效时间大于通过固定量osd_heartbeat_grace和历史网络条件动态确定的阈值。
    • 来自不同主机的汇报达到mon_osd_min_down_reporters。
    • 满足前两个条件前失效汇报没有被源OSD取消。
  • 扩散:作为中心节点的Monitor并没有在更新OSDMap后尝试广播通知所有的OSD和Client,而是惰性的等待OSD和Client来获取。以此来减少Monitor压力并简化交互逻辑。

6. 心跳设置


6.1 配置监视器/ OSD互动
您已完成初始Ceph的配置之后,您可以部署和运行的Ceph。当你执行一个命令,如ceph health 或 ceph -s , Ceph的监视器将报告 CEPH存储集群的当前状态。Ceph的监视器通过每个 Ceph的OSD守护实例,以及相邻的Ceph OSD守护实例,了解Ceph的存储集群的相关状态。Ceph的监视器如果没有收到报告,或者如果它接收Ceph的存储集群的变化的报告,Ceph的监视器更新的的 CEPH集群映射图的状态。
Ceph为Ceph的监视器/ Ceph的OSD守护程序交互提供合理的默认设置。但是,您可以覆盖默认值。以下部分描述如何用Ceph的监视器和Ceph的OSD守护实例互动来达到Ceph的存储集群监控的目的。


6.2. OSDS检查心跳
每个Ceph的OSD守护程序检查其他Ceph的OSD守护进程的心跳每6秒。Ceph的配置文件下的[OSD]部分加入OSD osd heartbeat interval ,或通过设定值在运行时,您可以更改心跳间隔。如果在20秒的宽限期内邻居的Ceph的OSD守护进程不显示心跳,Ceph的OSD守护进程可能考虑周边的Ceph OSD守护挂掉,并向一个Ceph的Monitor报告,这将更新的CEPH集群地图。一个OSD osd heartbeat grace 可以在Ceph的配置文件下的[OSD]部分设置,或在运行时,你通过设置这个值改变这个宽限期。


6.3. OSDS报告挂掉的OSD
默认情况下,Ceph的OSD守护程序必须向Ceph的监视器报告三次:另一个Ceph的OSD守护程序已经挂掉,在Ceph的Monitor承认该报告Ceph的OSD守护挂掉之前。在(早期V0.62版本之前)Ceph的配置文件下的[MON]部分添加 osd min down reports setting,或者通过设定值在运行时,您可以更改OSD报告的挂掉的最低数量 。默认情况下,只有一个Ceph的OSD守护进程是必需报告另一个Ceph的OSD守护进程。您可以更改向Ceph监视器报告Ceph的OSD守护进程的Ceph的OSD Daemones 的数量,通过添加一个mon osd min down reporters设置在Ceph的配置文件中,或者通过设定值在运行时。


6.4. 凝视失败的OSD报告
Ceph的OSD守护进程如果不能和Ceph的配置文件(或群集地图)中定义的OSD守护同行,它将每30秒ping一个Ceph的监视器,为了最新副本的集群映射图。Ceph的配置文件 下的[OSD]部分加入 osd mon heartbeat interval 设置,或通过在运行时设定值,您可以更改Ceph的监控心跳间隔。


6.5. OSDS报告其状态
Ceph的OSD守护进程如果不向Ceph的监视器报告,至少每120秒一次,Ceph的监视器会考虑Ceph的OSD守护已经挂掉。您可以更改Ceph的监控报告间隔,通过加入 osd mon report interval max 设置在Ceph的配置文件的[OSD]部分,或者通过设置在运行时的值。Ceph的OSD守护进程会尝试报告其状态每30秒。在Ceph的配置文件下的[OSD]部分加入 osd mon report interval min s设置,或者通过设定值在运行时,您可以更改Ceph的OSD守护报告间隔。


7. 配置设置


修改心跳设置时,你应该将它们包括在 您的配置文件的[global]部分。


7.1 监视器MONITOR设置

d5acb3f844162d1dde276d54895741bc.png


7.2 OSD设置

6228cb6b23422f4c9dcaec3717889a7a.png


作者:李航

  • 现在注册滴滴云,有机会可得30元无门槛滴滴出行券
  • 新购云服务1月5折 3月4.5折 6月低至4折
  • 滴滴云使者招募,推荐最高返佣50%
滴滴云-为开发者而生​www.didiyun.com
384f9db4e8b71ac5d21c36f9de8ce466.png
滴滴云使者​www.didiyun.com
384f9db4e8b71ac5d21c36f9de8ce466.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值