第 5 章 greenboot 健康检查框架
Greenboot 是 rpm-ostree
系统上 systemd
服务的通用健康检查框架,如 Red Hat Enterprise Linux for Edge (RHEL for Edge)。此框架包含在 MicroShift 安装中,带有 microshift-greenboot
和 greenboot-default-health-checks
RPM 软件包。
Greenboot 健康检查会多次运行,以评估系统健康状况,并在软件出现问题时自动回滚到最后一个健康状态,例如:
- 每次系统启动时都运行默认健康检查脚本。
- 除了默认的健康检查外,您还可以编写、安装和配置应用程序健康检查脚本,以便在系统每次启动时也运行。
- Greenboot 可减少在更新过程中锁定边缘设备的风险,并防止在更新失败时中断服务。
-
当检测到失败时,系统会使用
rpm-ostree
回滚功能引导至最后一个已知的工作配置中。此功能对于直接服务有限或不存在的边缘设备特别有用。
MicroShift 应用程序健康检查脚本包含在 microshift-greenboot
RPM 中。greenboot-default-health-checks
RPM 包括健康检查脚本,验证 DNS 和 ostree
服务是否可以访问。您可以为正在运行的工作负载创建自己的健康检查脚本。您可以编写一个来验证应用程序是否已启动,例如:
在不使用 rpm-ostree
的系统上更新失败时,无法进行回滚。即使可能运行健康检查,也是如此。
5.1. Greenboot 如何使用目录运行脚本
从四个 /etc/greenboot
目录运行的健康检查脚本。这些脚本按字母顺序运行。当您为工作负载配置脚本时请注意这一点。
当系统启动时,greenboot 在 required.d
和 want .d
目录中运行脚本。根据这些脚本的结果,greenboot 会继续启动或尝试回滚,如下所示:
-
系统如预期:当
required.d
目录中的所有脚本都成功运行时,greenboot 会运行/etc/greenboot/green.d
目录中存在的任何脚本。 -
系统问题:如果
required.d
目录中任何脚本失败,greenboot 会运行red.d
目录中存在的任何预滚动脚本,然后重新启动系统。
greenboot 将脚本和健康检查输出重定向到系统日志。登录后,每日信息会提供整个系统健康输出。
5.1.1. Greenboot 目录详情
从任何脚本返回非零退出代码意味着该脚本失败。greenboot 在尝试回滚到之前的版本前,会多次重启系统以重试脚本。
/etc/greenboot/check/required.d
包含不能失败的健康检查。-
如果脚本失败,greenboot 默认会重试三次。您可以通过将
GREENBOOT_MAX_BOOTS
参数设置为所需的重试次数,在/etc/greenboot/greenboot.conf
文件中配置重试次数。 - 在所有重试失败后,如果可用,greenboot 会自动启动回滚。如果没有回滚,系统日志输出显示需要手动干预。
-
MicroShift 的
40_microshift_running_check.sh
健康检查脚本被安装到这个目录中。
-
如果脚本失败,greenboot 默认会重试三次。您可以通过将
/etc/greenboot/check/wanted.d
包含允许失败的健康脚本,而不会导致系统被回滚。- 如果这些脚本失败,greenboot 会记录失败,但不会启动一个回滚。
-
/etc/greenboot/green.d
包含在 greenboot 声明开始成功后运行的脚本。 -
/etc/greenboot/red.d
包含在 greenboot 声明启动失败时运行的脚本,包括40_microshift_pre_rollback.sh
prerollback 脚本。这个脚本在系统回滚前执行。脚本执行 MicroShift pod 和 OVN-Kubernetes 清理,以避免在系统回滚到以前的版本后潜在的冲突。