1.     当前monitor可以通过3种途径检测到osd离线

1)      Osd自主上报

2)      Osd通过投票的方式(满足一下条件之一,mon会将osd标记为down)

a)      投票携带了Force/Immediate标识(和其他osd建立链接时返回econnrefused)

b)      有效票数已经达到阈值mon_osd_min_down_reporters(默认为2)(同一故障域只会记1票)

<1>   选择每个pg的Up与Acting中的osd

<2>   选择在编号上与本osd相邻的前一个和后一个状态为Up的osd

<3>   如果该osd的心跳伙伴个数小于最小值osd_heartbeat_min_peers(默认为10),则以本osd编号作为基准,依次选择集群中下一个状态为Up,编号相邻的osd,直至达到最小值

Note: osd之间的心跳采用单播(点对点)的方式(如果集群较大,采用广播可能会导致广播风暴)

3)      周期性向monitor发送beacon消息进行保活

Osd周期性向monitor发送beacon消息进行保活osd_beacon_report_interval(默认100秒),超过mon_osd_report_timeout(默认 300秒)没有收到osd的beacon消息,则将该osd标记为Down

2.     osd心跳

1)      osd之间的心跳:

       OSD 之间每 osd_heartbeat_interval(默认 2 秒)会有一个来回心跳包的检测,该心跳包会分别从public和cluster网分别发出,当一个 OSD 在 osd_heartbeat_grace(默认 7 秒)时间内没有收到其他 OSD 心跳的时候,那么这个 OSD 会向 MON 汇报说另一个 OSD 心跳已经超时。当MON 收到多个来自不同故障域的 OSD 都汇报了同一个 OSD 的心跳问题,就会将这个 OSD mark DOWN

2)      OSD向mon报告自己的状态:

       OSD每最小osd_beacon_report_interval(默认100秒),如果一 OSD 在 mon_osd_report_timeout(默认300秒) 时间内没向mon报告过自己的状态,mon就认为它 down 了。

3)      Osd向mon报告自己的事件

       从一 OSD 启动或其它可报告事件发生以来,osd_mon_report_interval_min(默认3秒)时间内必须向监视器报告一次,监视器允许 OSD 报告的最大间隔为osd_mon_report_interval_max(默认为15秒),超时将认为 OSD 挂了( down )

4)      Osd心跳参数:

osd_heartbeat_interval

描述:默认值2,osd发送heartbeat给其他osd的间隔时间

osd_heartbeat_grace

描述:默认值7,OSD 多久没心跳就会被集群认为它挂( down )了

5)      Osd向mon心跳参数

osd_beacon_report_interval

描述:默认值100,osd报告beacon消息间隔

mon_osd_report_timeout

描述:默认值300,宣布无响应 OSD down 前的宽限期,秒

mon_osd_adjust_heartbeat_grace

描述:默认值false,设置为 true 时, Ceph 将根据滞后量伸缩

6)      Osd事件参数:

osd_mon_report_interval_min

描述:默认值3,从一 OSD 启动或其它可报告事件发生以来,多长时间内必须向监视器报告一次

osd_mon_report_interval_max

描述:默认值15,监视器允许 OSD 报告的最大间隔,超时将认为 OSD 挂了( down )

mon_osd_down_out_interval

描述:默认值10800,在 OSD 停止响应多少秒后把它标记为 down 且 out

mon_osd_adjust_down_out_interval

描述:默认值false,设置为 true 时, Ceph 将根据滞后量伸缩

3.     参考资料:

1、http://wiki.xsky.com

2、《ceph之rados设计原理与实现》

3、http://docs.ceph.com

ceph_osd故障检测的更多相关文章

  1. Ceph剖析:故障检测

    作者:吴香伟 发表于 2014/10/10 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 心跳是用于OSD节点间检测对方是否故障的,以便及时发现故障节点进入相应 ...

  2. LTE Module User Documentation(翻译15)——示例程序、参考场景以及故障检测和调试技巧

    LTE用户文档 (如有不当的地方,欢迎指正!)     21 Examples Programs(示例程序)   路径 src/lte/examples/ 包含一些示例仿真程序,这些例子表明如何仿真不 ...

  3. Windows10系统故障检测你知道多少-上海IT33

    Windows 10作为微软公司最新的一款操作系统,从使用的方便和界面的整洁上来说,固然是很好的,但是其因为隐私问题,致使很多人不惜一切代价想要远离Windows 10这款操作系统.尽管Windows ...

  4. 剑指Offer——知识点储备-故障检测、性能调优与Java类加载机制

    剑指Offer--知识点储备-故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以 ...

  5. [深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras 1D卷积 val_acc:0.99780)

    [深度应用]·DC竞赛轴承故障检测开源Baseline(基于Keras1D卷积 val_acc:0.99780) 个人网站--> http://www.yansongsong.cn/ Githu ...

  6. Greenplum FTS故障检测原理

    前言 FTS(Fault Tolerance Serve)是GreenPlum中的故障检测服务,是保证GP高可用的核心功能.GreenPlum的Segment的健康检测及HA是由GP Master实现 ...

  7. 故障检测、性能调优与Java类加载机制

    故障检测.性能调优与Java类加载机制 故障检测.性能调优 用什么工具可以查出内存泄露 (1)MerroyAnalyzer:一个功能丰富的java堆转储文件分析工具,可以帮助你发现内存漏洞和减少内存消 ...

  8. 基于案例分析 MySQL Group Replication 的故障检测流程

    故障检测(Failure Detection)是 Group Replication 的一个核心功能模块,通过它可以及时识别集群中的故障节点,并将故障节点从集群中剔除掉.如果不将故障节点及时剔除的话, ...

  9. Windows Azure的故障检测和重试逻辑

    高度可用的应用程序设计的一个关键点,是利用代码中的重试逻辑正常处理临时中断的服务.Microsoft 模式和实践团队开发的暂时性故障处理应用程序块可协助应用程序开发人员完成此过程.“暂时性”一词表示仅 ...

随机推荐

  1. Spring AOP基于注解的“零配置”方式实现

    为了在Spring中启动@AspectJ支持,需要在类加载路径下新增两个AspectJ库:aspectjweaver.jar和aspectjrt.jar.除此之外,Spring AOP还需要依赖一个a ...

  2. css字体属性(font)

    字体名称属性(font-family) 这个属性设定字体名称,如Arial, Tahoma, Courier等.例句如下: .s1 {font-family:Arial}     字体大小属性(fon ...

  3. myeclipse,eclipse设置编码格式的4种情况,以及遇见部分问题的解决办法。

    (1).设置myeclipse工作空间的编码格式,作用范围最大 window-->preference-->general-->workspace-->text file en ...

  4. JDK的安装和环境配置

    安装环境:网上下载的JDK一般都包含JRE在里面,安装JDK完成后会提示接着装JRE,如果没提示再去下载另装如:jdk_8u101_windows_x64_8.0.1010.13 配置环境:新建系统变 ...

  5. Intent对象若干数据项的含义总结

    Intent作为组件之间通信的手段和协议,包含了诸如Action.Data.Type.Category.Component.Extras和Flags等数据项,各自拥有各自的含义和作用.当调用组件发出一 ...

  6. integer encoding vs 1-hot (py)

    https://github.com/szilard/benchm-ml/issues/1 glouppe commented on 7 May 2015 Thanks for the benchma ...

  7. c++模板实现 linq

    // ConsoleApplication32.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" using namespace std; # ...

  8. hrabs的数据库session的修改

    using System;using System.Data;using System.Collections;using System.Collections.Generic;using Syste ...

  9. 用JQuery获取输入框中的光标位置

    (function ($, undefined) { $.fn.getCursorPosition = function () { var el = $(this).get(0); var pos = ...

  10. Monkey基础命令

    最近一直在看关于自动化测试的文章和工具,这是之前学习monkey的一些知识,想总结一下,方便以后查看,当然也可以提供一些参考.monkey 适合做压力测试,我们可以发送命令让它自己运行,并且指定运行动 ...