第5章 Greenboot ヘルスチェックフレームワーク
Greenboot は、rpm-ostree
システム (Red Hat Enterprise Linux for Edge (RHEL for Edge) など) の systemd
サービスの汎用ヘルスチェックフレームワークです。このフレームワークは、microshift-greenboot
および greenboot-default-health-checks
RPM パッケージとともに MicroShift インストールに組み込まれています。
Greenboot ヘルスチェックは、システムの健全性を評価し、ソフトウェアトラブルが発生した場合の最後の健全な状態へのロールバックを自動化するために、次のようにさまざまなタイミングで実行されます。
- デフォルトのヘルスチェックスクリプトは、システムが起動するたびに実行されます。
- デフォルトのヘルスチェックに加えて、システムが起動するたびに実行されるようにアプリケーションヘルスチェックスクリプトを作成、インストール、設定することもできます。
- Greenboot を使用すると、更新中にエッジデバイスからロックアウトされるリスクを軽減し、更新が失敗した場合にサービスが大幅に中断されるのを防ぐことができます。
-
障害が検出されると、システムは
rpm-ostree
ロールバック機能を使用して、最後に認識された動作設定で起動します。この機能は、直接的な保守機能が制限されているか存在しないエッジデバイスに特に役立つ自動化機能です。
MicroShift アプリケーションのヘルスチェックスクリプトは、microshift-greenboot
RPM に含まれています。greenboot-default-health-checks
RPM には、DNS および ostree
サービスにアクセスできることを確認するヘルスチェックスクリプトが含まれています。実行しているワークロード用に独自のヘルスチェックスクリプトを作成できます。たとえば、アプリケーションが開始したことを確認するものを作成できます。
rpm-ostree
を使用していないシステムで更新に失敗した場合、ロールバックはできません。これは、ヘルスチェックが実行される場合にも当てはまります。
5.1. greenboot がディレクトリーを使用してスクリプトを実行する方法
ヘルスチェックスクリプトは、4 つの /etc/greenboot
ディレクトリーから実行します。これらのスクリプトはアルファベット順に実行します。ワークロードのスクリプトを設定するときは、このことに留意してください。
システムが起動すると、greenboot は、required.d
および wanted.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 はデフォルトでスクリプトを 3 回再試行します。
/etc/greenboot/greenboot.conf
ファイルで再試行回数を設定するには、GREENBOOT_MAX_BOOTS
パラメーターを目的の再試行回数に設定します。 - すべての再試行が失敗すると、ロールバックが利用可能であれば greenboot が自動的に開始します。ロールバックが利用できない場合、システムログ出力は手動介入が必要であることを示します。
-
MicroShift の
40_microshift_running_check.sh
ヘルスチェックスクリプトは、このディレクトリーにインストールされます。
-
スクリプトが失敗すると、greenboot はデフォルトでスクリプトを 3 回再試行します。
/etc/greenboot/check/wanted.d
には、システムをロールバックさせずに失敗できるヘルススクリプトが含まれています。- これらのスクリプトのいずれかが失敗すると、greenboot は失敗を記録しますが、ロールバックを開始しません。
-
/etc/greenboot/green.d
には、greenboot が起動の成功を宣言した後に実行されるスクリプトが含まれています。 -
/etc/greenboot/red.d
には、40_microshift_pre_rollback.sh
プレロールバックスクリプトなど、greenboot が起動の失敗を宣言した後に実行するスクリプトが含まれています。このスクリプトは、システムロールバックの直前に実行されます。このスクリプトは、MicroShift Pod と OVN-Kubernetes のクリーンアップを実行して、システムが以前のバージョンにロールバックされた後の潜在的な競合を回避します。