2019 年 9 月 15 日以降、レガシー ヘルスチェックを使用していてもアプリケーションは引き続き実行されてヘルスチェックを受けますが、こうしたアプリケーションの新しいバージョンはデプロイできなくなります。
このページでは、レガシー ヘルスチェックからスプリット ヘルスチェックへのアップグレードについて説明します。
ヘルスチェックのタイプを確認する
アプリケーションで使用しているヘルスチェックのタイプを確認するには、次のコマンドを実行します。
gcloud app describe
アプリケーションでスプリット ヘルスチェックを使用している場合は、出力される説明に次の情報が含まれます。
featureSettings:
splitHealthChecks: true
重要な相違点について
スプリット ヘルスチェックにアップグレードする前に、以下に示すレガシー ヘルスチェックとスプリット ヘルスチェックとの重要な相違点を確認してください。
スプリット ヘルスチェックの HTTP リクエストは、デフォルトでは転送されません。一方、レガシー ヘルスチェックではデフォルトでアプリケーションの
/_ah/health
パスに転送されます。スプリット ヘルスチェックが転送された場合、
200 OK
が返されなければ、アプリが正常な状態であるとはみなされません。レガシー ヘルスチェックでは、次の HTTP コードが正常とみなされます。200
、301
、302
、303
、307
、401
、402
、403
、404
、405
。
実行チェックパスまたは準備チェックパスを指定しない場合、デフォルトではスプリット ヘルスチェックにより、VM インスタンスと Docker コンテナが実行中であることだけが確認されます。こうした条件が満たされている限り、VM はトラフィックを受信し続け、アプリの内部状態に関係なく存続します。
一方、レガシー ヘルスチェックが有効になっている場合、アプリの /_ah/health
パスが異常を示す HTTP エラーコード(例: 5XX
)を返すと、レガシー ヘルスチェックが失敗し、VM はトラフィックの受信を停止して再起動します。
アプリがデフォルトのレガシー ヘルスチェックの動作に依存している場合は、状況に応じて実行チェックパスと準備チェックパスを設定します。
レガシー ヘルスチェック オプションを変換する
レガシー ヘルスチェックの各オプションは、スプリット ヘルスチェックを使用して次のように書き換えることができます。
オプション | スプリット ヘルスチェックで同じ動作を維持する |
---|---|
enable_health_check |
True または未設定の場合、liveness_check.path と readiness_check.path を、アプリが正常な場合に 200 OK を返すパスに構成します。 |
check_interval_sec |
liveness_check.check_interval_sec と readiness_check.check_interval_sec を同じ値に構成します。 |
timeout_sec |
liveness_check.timeout_sec と readiness_check.timeout_sec を同じ値に構成します。 |
unhealthy_threshold |
readiness_check.failure_threshold を同じ値に構成します。 |
healthy_threshold |
liveness_check.success_threshold と readiness_check.success_threshold を同じ値に構成します。 |
restart_threshold |
liveness_check.failure_threshold を同じ値に構成します。check_interval_sec オプションに failure_threshold オプションを掛けた値が、異常な VM を使用不可にするためにかかる時間になります。 |
スプリット ヘルスチェックを有効にする
レガシー ヘルスチェックからスプリット ヘルスチェックに移行し、昇格された 5xx
ステータス コードが表示されないようにするには、次の手順を行います。
レガシー ヘルスチェックとスプリット ヘルスチェックとの重要な相違点を理解します。
アプリケーションの各バージョンのレガシー ヘルスチェック オプションを変換します。
別の方法として、
app.yaml
ファイルのliveness_check
セクションまたはreadiness_check
セクションをバージョンごとにカスタマイズすることもできます。例については、実行チェックと準備チェックをご覧ください。次のコマンドを実行します。
gcloud app update --split-health-checks --project [YOUR_PROJECT_ID]
レガシー ヘルスチェックにカスタマイズした設定を使用した場合、
app.yaml
ファイルからhealth_check
セクションを削除する必要があります。新しいメジャー バージョンのアプリをデプロイし、実行状況と準備状況のヘルスチェックを開始します。