注意
本文档适用于 Ceph 的开发版本。
合规性检查
Ceph 集群的稳定性和可靠性不仅取决于 Ceph 守护程序,还取决于安装 Ceph 的操作系统和硬件。本文档旨在推动关于在 mgr/cephadm 中提供“合规性”功能的设计讨论,该功能将负责识别可能影响 Ceph 稳定性和操作的常见平台相关问题。
这些检查的最终目标是及早发现问题并发出健康检查 WARN 事件,以提醒管理员注意该问题。
先决条件
为了有效地分析部署 Ceph 的主机,此功能需要主机相关元数据的缓存。元数据已可从 cephadm 的 HostFacts 类和 gather-facts cephadm 命令中获取。出于本文档的目的,我们将假设此数据在 mgr/cephadm 的“缓存”结构中可用。
某些检查将要求主机状态也已填充,例如 ONLINE、OFFLINE、MAINTENANCE
管理员交互
并非所有用户都需要此功能,并且必须能够“选择退出”。因此,mgr/cephadm 必须提供控制,例如以下内容;
ceph cephadm compliance enable | disable | status [--format json]
ceph cephadm compliance ls [--format json]
ceph cephadm compliance enable-check <name>
ceph cephadm compliance disable-check <name>
ceph cephadm compliance set-check-interval <int>
ceph cephadm compliance get-check-interval
status 选项将显示该功能的启用/禁用状态以及检查间隔。
ls 子命令将以以下格式显示所有检查;
check-name status description
拟议集成
合规性检查不需要一直运行,而是应该以离散的间隔运行。间隔可通过 set-check-interval 子命令配置(默认为每 12 小时)
mgr/cephadm 当前执行事件驱动(基于时间)的服务循环来处理部署/移除和协调活动。为了执行合规性检查,合规性检查代码将从此主服务循环中调用 - 当满足 set-check-interval 时。
拟议检查
所有检查都会将任何错误推送到一个列表,以便可以同时向管理员升级多个问题。下面的列表提供了每个检查的描述,名称后面的文本指示了短名称版本(短名称是启用或禁用检查时用于命令交互的引用)
操作系统一致性 (OS)
所有主机必须使用相同的供应商
所有主机必须处于相同的主要版本(此检查仅适用于提供长期支持策略的分发版(RHEL、CentOS、SLES、Ubuntu 等)
src: gather-facts output
Linux 内核安全模式 (LSM)
所有主机应具有一致的 SELINUX/AppArmor 配置
src: gather-facts output
服务检查 (SERVICES)
处于 ONLINE 状态的主机应遵守以下规定;
所有守护程序(systemd 单元)应启用
所有守护程序应运行(未停止)
src: list_daemons output
支持状态 (SUPPORT)
如果检测到支持状态,则在所有主机上应保持一致。目前支持状态仅适用于 Red Hat 机器。
src: gather-facts output
网络:MTU (MTU)
同一 Ceph 网络(公共/集群)上的所有网络接口应具有相同的 MTU
src: gather-facts output
网络:链路速度 (LINKSPEED)
同一 Ceph 网络(公共/集群)上的所有网络接口应具有相同的链路速度
src: gather-facts output
网络:一致性 (INTERFACE)
所有具有 OSD 的主机应具有一致的网络配置 - 例如,如果某些主机不分离集群/公共流量而其他主机分离,则这是一种异常情况,会生成合规性检查警告。
src: gather-facts output
通知策略
如果任何检查失败,mgr/cephadm 将发出 WARN 级别警报
未来
此处强调的检查仅作为起点,我们应该期望随着时间的推移扩展这些检查。