注意

本文档适用于 Ceph 的开发版本。

配置监视器/OSD 交互

完成初始 Ceph 配置后,即可部署并运行 Ceph。当您执行诸如 ceph healthceph -s 的命令时,Ceph 监视器会报告 Ceph 存储集群的当前状态。Ceph 监视器通过要求每个 Ceph OSD 守护程序报告,以及接收 Ceph OSD 守护程序关于其相邻 Ceph OSD 守护程序状态的报告来了解 Ceph 存储集群。如果 Ceph 监视器没有收到报告,或者收到了关于 Ceph 存储集群变化的报告,Ceph 监视器就会更新 Ceph 集群图的状态。

Ceph 为 Ceph 监视器/Ceph OSD 守护程序交互提供了合理的默认设置。但是,您可以覆盖这些默认值。以下部分描述了 Ceph 监视器和 Ceph OSD 守护程序如何为了监控 Ceph 存储集群而进行交互。

OSD 检查心跳

每个 Ceph OSD 守护程序都会以小于每 6 秒的随机间隔检查其他 Ceph OSD 守护程序的心跳。如果在 20 秒的宽限期内相邻的 Ceph OSD 守护程序没有显示心跳,则该 Ceph OSD 守护程序可能会认为相邻的 Ceph OSD 守护程序处于 down 状态,并将其报告给 Ceph 监视器,后者将更新 Ceph 集群图。您可以通过在 Ceph 配置文件的 [mon][osd][global] 部分添加 osd heartbeat grace 设置,或在运行时设置该值来更改此宽限期。

OSD 报告宕机的 OSD

默认情况下,必须有两个来自不同主机的 Ceph OSD 守护程序向 Ceph 监视器报告另一个 Ceph OSD 守护程序处于 down 状态,Ceph 监视器才会承认被报告的 Ceph OSD 守护程序处于 down 状态。但有可能所有报告故障的 OSD 都位于同一个机架上,该机架上的交换机存在问题,导致无法连接到另一个 OSD。为了避免这种误报,我们将报告故障的对等点视为潜在“子集群”的代理,该子集群在整个集群中同样滞后。这显然并非在所有情况下都成立,但有时可以帮助我们将宽限期校正本地化到系统中某个不正常的子集。 mon osd reporter subtree level 用于根据 CRUSH 图中的共同祖先类型将对等点分组到“子集群”中。默认情况下,只需要来自不同子树的两个报告即可报告另一个 Ceph OSD 守护程序 down。您可以通过在 Ceph 配置文件的 [mon] 部分添加 mon osd min down reportersmon osd reporter subtree level 设置,或在运行时设置该值来更改报告 Ceph OSD 守护程序 down 到 Ceph 监视器所需的唯一子树报告数量和共同祖先类型。

OSD 报告对等故障

如果 Ceph OSD 守护程序无法与其 Ceph 配置文件(或集群图)中定义的任何 Ceph OSD 守护程序对等,它将每 30 秒 ping 一次 Ceph 监视器以获取集群图的最新副本。您可以通过在 Ceph 配置文件的 [osd] 部分添加 osd mon heartbeat interval 设置,或在运行时设置该值来更改 Ceph 监视器心跳间隔。

OSD 报告自身状态

如果 Ceph OSD 守护程序没有向 Ceph 监视器报告,Ceph 监视器将在 mon osd report timeout 超时后认为该 Ceph OSD 守护程序处于 down 状态。当发生可报告事件(例如故障、放置组统计信息更改、up_thru 更改或启动)时,Ceph OSD 守护程序会在 5 秒内向 Ceph 监视器发送报告。您可以通过在 Ceph 配置文件的 [osd] 部分添加 osd mon report interval 设置,或在运行时设置该值来更改 Ceph OSD 守护程序最小报告间隔。无论是否发生任何值得注意的变化,Ceph OSD 守护程序都会每 120 秒向 Ceph 监视器发送一次报告。您可以通过在 Ceph 配置文件的 [osd] 部分添加 osd mon report interval max 设置,或在运行时设置该值来更改 Ceph 监视器报告间隔。

配置设置

修改心跳设置时,应将其包含在配置文件的 [global] 部分。

监视器设置

mon_osd_min_up_ratio

Ceph 标记 Ceph OSD 守护程序 down 之前处于 up 状态的 Ceph OSD 守护程序的最小比例。

类型:

float

默认值:

0.3

另请参阅:

mon_osd_down_out_interval

mon_osd_min_in_ratio

Ceph 标记 Ceph OSD 守护程序 out 之前处于 in 状态的 Ceph OSD 守护程序的最小比例。

类型:

float

默认值:

0.75

另请参阅:

mon_osd_down_out_interval

mon_osd_laggy_halflife

滞后估计衰减的秒数。

类型:

int

默认值:

1 hour

mon_osd_laggy_weight

滞后估计衰减中新样本的权重。

类型:

float

默认值:

0.3

允许范围:

[0, 1]

mon_osd_laggy_max_interval

滞后估计中 laggy_interval 的最大值(以秒为单位)。监视器使用自适应方法评估特定 OSD 的 laggy_interval。此值将用于计算该 OSD 的宽限时间。

类型:

int

默认值:

5 minutes

mon_osd_adjust_heartbeat_grace

如果设置为 true,Ceph 将根据滞后估计进行缩放。

类型:

bool

默认值:

true

另请参阅:

mon_osd_laggy_halflife, mon_osd_laggy_weight, mon_osd_laggy_max_interval

mon_osd_adjust_down_out_interval

如果设置为 true,Ceph 将根据滞后估计进行缩放。

类型:

bool

默认值:

true

另请参阅:

mon_osd_adjust_heartbeat_grace

mon_osd_auto_mark_in

Ceph 会将任何正在启动的 Ceph OSD 守护程序标记为在 Ceph 存储集群中 in

类型:

bool

默认值:

false

mon_osd_auto_mark_auto_out_in

Ceph 会将自动标记为 out 的正在启动的 Ceph OSD 守护程序标记为在集群中 in

类型:

bool

默认值:

true

另请参阅:

mon_osd_down_out_interval

mon_osd_auto_mark_new_in

Ceph 会将正在启动的新 Ceph OSD 守护程序标记为在 Ceph 存储集群中 in

类型:

bool

默认值:

true

mon_osd_down_out_interval

如果 Ceph OSD 守护程序没有响应,Ceph 在将其标记为 downout 之前等待的秒数。

类型:

int

默认值:

10 minutes

mon_osd_down_out_subtree_limit

Ceph **不会**自动标记 out 的最小 CRUSH 单元类型。例如,如果设置为 host,并且主机中的所有 OSD 都宕机了,Ceph 将不会自动标记这些 OSD out

类型:

str

默认值:

rack

另请参阅:

mon_osd_down_out_interval

mon_osd_report_timeout

在宣布无响应的 Ceph OSD 守护程序 down 之前,宽限期的秒数。

类型:

int

默认值:

15 minutes

mon_osd_min_down_reporters

报告 down 的 Ceph OSD 守护程序所需的 Ceph OSD 守护程序的最小数量。

类型:

uint

默认值:

2

另请参阅:

mon_osd_reporter_subtree_level

mon_osd_reporter_subtree_level

在哪个父桶级别计算报告者。如果 OSD 发现对等点没有响应,它们会向监视器发送故障报告。监视器会在宽限期后将报告的 OSD 标记为 out,然后标记为 down

类型:

str

默认值:

host

OSD 设置

osd_heartbeat_interval

Ceph OSD 守护程序 ping 其对等点的频率(以秒为单位)。

类型:

int

默认值:

6

允许范围:

[1, 1_min]

osd_heartbeat_grace

Ceph 存储集群认为 Ceph OSD 守护程序处于 down 状态时,它没有显示心跳的经过时间。此设置必须在 [mon] 和 [osd] 或 [global] 部分中设置,以便监视器和 OSD 守护程序都能读取它。

类型:

int

默认值:

20

osd_mon_heartbeat_interval

如果 Ceph OSD 守护程序没有 Ceph OSD 守护程序对等点,则 ping Ceph 监视器的频率。

类型:

int

默认值:

30

osd_mon_heartbeat_stat_stale

停止报告在此秒数内未更新的心跳 ping 时间。设置为 0 以禁用此操作。

类型:

int

默认值:

1 hour

osd_mon_report_interval

Ceph OSD 守护程序从启动或另一个可报告事件到向 Ceph 监视器报告之间可能等待的秒数。

类型:

int

默认值:

5

由 Ceph 基金会为您呈现

Ceph 文档是由非营利性 Ceph 基金会 资助和托管的社区资源。如果您希望支持这项工作和我们的其他努力,请考虑 立即加入