监视器与 OSD 交互的配置
(心跳配置)
完成基本配置后就可以部署、运行 Ceph 了。执行 cephhealth 或 ceph-s 命令时,监视器会报告 Ceph 存储集群的当前状态。监视器通过让各 OSD 自己报告、并接收 OSD 关于邻居状态的报告来掌握集群动态。如果监视器没收到报告,或者它只收到集群的变更报告,那它就要更新集群运行图。
关于监视器与 OSD 的交互 Ceph 提供了合理的默认值,然而你可以覆盖它们。下面几段从集群监控角度描述了 Ceph 监视器与 OSD 如何交互。
OSD 验证心跳
各 OSD 每 6 秒会与其他 OSD 进行心跳检查,用 [osd] 下的 osdheartbeatinterval 可更改此间隔、或运行时更改。如果一个 OSD 20 秒都没有心跳,集群就认为它 down 了,用 [osd] 下的 osdheartbeatgrace 可更改宽限期、或者运行时更改。
OSD 报告死亡 OSD
默认情况下,一个 OSD 必须向监视器报告三次另一个 OSD down 的消息,监视器才会认为那个被报告的 OSD down 了;配置文件里 [mon] 段下的 monosdmindownreports 选项( v0.62 之前是 osdmindownreports )可更改这个最少 osddown 消息次数,或者运行时设置。默认情况下,只要有一个 OSD 报告另一个 OSD 挂的消息即可,配置文件里 [mon] 段下的 monosdmindownreporters 可用来更改必需 OSD 数( v0.62 之前的 osdmindownreporters ),或者运行时更改。
OSD 报告互联失败
如果一 OSD 守护进程不能和配置文件中定义的任何 OSD 建立连接,它会每 30 秒向监视器索要一次最新集群运行图,你可以在 [osd] 下设置 osdmonheartbeatinterval 来更改这个心跳间隔,或者运行时更改。
OSD 报告自己的状态
如果一 OSD 在 monosdreporttimeout 时间内没向监视器报告过,监视器就认为它 down 了。在 OSD 守护进程会向监视器报告某些事件,如某次操作失败、归置组状态变更、 up_thru 变更、或它将在 5 秒内启动。你可以设置 [osd] 下的 osdmonreportintervalmin 来更改最小报告间隔,或在运行时更改。 OSD 守护进程每 120 秒会向监视器报告其状态,不论是否有值得报告的事件。在 [osd] 段下设置 osdmonreportintervalmax 可更改OSD报告间隔,或运行时更改。
配置选项
心跳选项应该置于配置文件的 [global] 段下。
监视器选项
monosdminupratio
描述: | 在把 OSD 标记为 down 前,保持处于 up 状态的 OSD 最小比例。 |
---|
类型: | Double |
---|
默认值: | .3 |
---|
monosdmininratio
描述: | 在把 OSD 标记为 out 前,保持处于 in 状态的 OSD 最小比例。 |
---|
类型: | Double |
---|
默认值: | .3 |
---|
monosdlaggyhalflife
描述: | 滞后量消退时间,秒。 |
---|
类型: | Integer |
---|
默认值: | 60*60 |
---|
monosdlaggyweight
描述: | 滞后量消退时新样本的权重。 |
---|
类型: | Double |
---|
默认值: | 0.3 |
---|
monosdadjustheartbeatgrace
描述: | 设置为 true 时, Ceph 将根据滞后量伸缩。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
monosdadjustdownoutinterval
描述: | 设置为 true 时, Ceph 将根据滞后量伸缩。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
monosdautomarkin
描述: | Ceph 将把任何启动中的 OSD 标记为在集群中( in )。 |
---|
类型: | Boolean |
---|
默认值: | false |
---|
monosdautomarkautooutin
描述: | 把正在启动、且被自动标记为 out 状态的 OSD 标记为 in 。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
monosdautomarknewin
描述: | 把正在启动的新 OSD 标记为 in 。 |
---|
类型: | Boolean |
---|
默认值: | true |
---|
monosddownoutinterval
描述: | 在 OSD 停止响应多少秒后把它标记为 down 且 out 。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 300 |
---|
monosddownoutsubtreelimit
描述: | Ceph 可以把最大为多少的 CRUSH 单元自动标记为 out 。 |
---|
类型: | String |
---|
默认值: | rack |
---|
monosdreporttimeout
描述: | 宣布无响应 OSD down 前的宽限期,秒。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 900 |
---|
monosdmindownreporters
描述: | 确定一 OSD 状态为 down 的最少报告来源 OSD 数。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 1 |
---|
monosdmindownreports
描述: | 一 OSD 必须重复报告另一个 down 的次数。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 3 |
---|
OSD 选项
osdheartbeataddress
描述: | OSD 用于心跳的网络地址。 |
---|
类型: | Address |
---|
默认值: | 此主机的地址。 |
---|
osdheartbeatinterval
描述: | 一 OSD 探测邻居的频率,秒。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 6 |
---|
osdheartbeatgrace
描述: | OSD 多久没心跳就会被集群认为它挂( down )了。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 20 |
---|
osdmonheartbeatinterval
描述: | OSD 没有邻居时多久探测一次监视器。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 30 |
---|
osdmonreportintervalmax
描述: | 监视器允许 OSD 报告的最大间隔,超时将认为 OSD 挂了( down )。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 120 |
---|
osdmonreportintervalmin
描述: | 从一 OSD 启动或其它可报告事件发生以来,多长时间内必须向监视器报告一次。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 5 |
---|
有效范围: | 要小于 osdmonreportintervalmax 。 |
---|
osdmonacktimeout
描述: | OSD 等待监视器提供统计信息的时间,秒。 |
---|
类型: | 32-bit Integer |
---|
默认值: | 30 |
---|