第3章 Greenboot ヘルスチェック
Greenboot は、RPM-OSTree ベースのシステム上の systemd
サービスの一般的なヘルスチェックフレームワークです。microshift-greenboot
RPM と greenboot-default-health-checks
は、インストールできるオプションの RPM パッケージです。greenboot は、システムの状態を評価し、ソフトウェアに問題が発生した場合に最後の正常な状態へのロールバックを自動化するために使用されます。
このヘルスチェックフレームワークは、ソフトウェアの問題をチェックし、直接的なサービスが制限されているか存在しないエッジデバイスでシステムロールバックを実行する必要がある場合に特に役立ちます。ヘルスチェックスクリプトをインストールして設定すると、システムが起動するたびにヘルスチェックが実行します。
greenboot を使用すると、更新中にエッジデバイスからロックアウトされるリスクを軽減し、更新が失敗した場合にサービスが大幅に中断されるのを防ぐことができます。障害が検出されると、システムは rpm-ostree
ロールバック機能を使用して、最後に認識された動作設定で起動します。
MicroShift ヘルスチェックスクリプトは、microshift-greenboot
RPM に含まれています。greenboot-default-health-checks
RPM には、DNS および ostree
サービスにアクセスできることを確認するヘルスチェックスクリプトが含まれています。実行中のワークロードに基づいて、独自のヘルスチェックスクリプトを作成することもできます。たとえば、アプリケーションが開始したことを確認するものを作成できます。
OSTree を使用していないシステムで更新に失敗した場合、ロールバックはできません。これは、ヘルスチェックが実行される場合にも当てはまります。
3.1. greenboot がディレクトリーを使用してスクリプトを実行する方法
ヘルスチェックスクリプトは、4 つの /etc/greenboot
ディレクトリーから実行します。これらのスクリプトはアルファベット順に実行します。ワークロードのスクリプトを設定するときは、このことに留意してください。
システムが起動すると、greenboot は、required.d
および wanted.d
ディレクトリーでスクリプトを実行します。これらのスクリプトの結果に応じて、greenboot は起動を続行するか、次のようにロールバックを試みます。
-
システムが想定どおりの場合:
required.d
ディレクトリー内のすべてのスクリプトが成功すると、greenboot は/etc/greenboot/green.d
ディレクトリーにあるすべてのスクリプトを実行します。 -
システムに問題が発生している場合:
required.d
ディレクトリー内のいずれかのスクリプトが失敗した場合、greenboot はred.d
ディレクトリー内に存在するプレロールバックスクリプトを実行してから、システムを再起動します。
greenboot は、スクリプトとヘルスチェックの出力をシステムログにリダイレクトします。ログインすると、毎日のメッセージでシステム全体の状態が出力されます。
3.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 のクリーンアップを実行して、システムが以前のバージョンにロールバックされた後の潜在的な競合を回避します。