第 6 章 greenboot 健康检查框架


Greenboot 是 rpm-ostree 系统上 systemd 服务的通用健康检查框架,如 Red Hat Enterprise Linux for Edge (RHEL for Edge)。此框架包含在 MicroShift 安装中,带有 microshift-greenbootgreenboot-default-health-checks RPM 软件包。

Greenboot 健康检查会多次运行,以评估系统健康状况,并在软件出现问题时自动回滚到最后一个健康状态,例如:

  • 每次系统启动时都运行默认健康检查脚本。
  • 除了默认的健康检查外,您还可以编写、安装和配置应用程序健康检查脚本,以便在系统每次启动时也运行。
  • Greenboot 可减少在更新过程中锁定边缘设备的风险,并防止在更新失败时中断服务。
  • 当检测到失败时,系统会使用 rpm-ostree 回滚功能引导至最后一个已知的工作配置中。此功能对于直接服务有限或不存在的边缘设备特别有用。

MicroShift 应用程序健康检查脚本包含在 microshift-greenboot RPM 中。greenboot-default-health-checks RPM 包括健康检查脚本,验证 DNS 和 ostree 服务是否可以访问。您可以为正在运行的工作负载创建自己的健康检查脚本。您可以编写一个来验证应用程序是否已启动,例如:

注意

在不使用 rpm-ostree 的系统上更新失败时,无法进行回滚。即使可能运行健康检查,也是如此。

6.1. Greenboot 如何使用目录运行脚本

从四个 /etc/greenboot 目录运行的健康检查脚本。这些脚本按字母顺序运行。当您为工作负载配置脚本时请注意这一点。

当系统启动时,greenboot 在 required.d 和 want .d 目录中运行脚本。根据这些脚本的结果,greenboot 会继续启动或尝试回滚,如下所示:

  1. 系统如预期:当 required.d 目录中的所有脚本都成功运行时,greenboot 会运行 /etc/greenboot/green.d 目录中存在的任何脚本。
  2. 系统问题:如果 required.d 目录中任何脚本失败,greenboot 会运行 red.d 目录中存在的任何预滚动脚本,然后重新启动系统。
注意

greenboot 将脚本和健康检查输出重定向到系统日志。登录后,每日信息会提供整个系统健康输出。

6.1.1. Greenboot 目录详情

从任何脚本返回非零退出代码意味着该脚本失败。greenboot 在尝试回滚到之前的版本前,会多次重启系统以重试脚本。

  • /etc/greenboot/check/required.d 包含不能失败的健康检查。

    • 如果脚本失败,greenboot 默认会重试三次。您可以通过将 GREENBOOT_MAX_BOOTS 参数设置为所需的重试次数,在 /etc/greenboot/greenboot.conf 文件中配置重试次数。
    • 在所有重试失败后,如果可用,greenboot 会自动启动回滚。如果没有回滚,系统日志输出显示需要手动干预。
    • MicroShift 的 40_microshift_running_check.sh 健康检查脚本被安装到这个目录中。
  • /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 清理,以避免在系统回滚到以前的版本后潜在的冲突。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.