このドキュメントでは、マネージド インスタンス グループ(MIG)内の VM を自動修復するようにアプリケーション ベースのヘルスチェックを設定する方法について説明します。また、自動修復なしでヘルスチェックを使用する方法、ヘルスチェックを削除する方法、自動修復ポリシーを表示する方法、各 VM のヘルス状態を確認する方法についても説明します。
アプリケーション ベースのヘルスチェックを構成して、VM 上のアプリケーションが期待どおりに応答していることを確認できます。構成したヘルスチェックで VM 上のアプリケーションが応答していないことが検出されると、MIG はその VM を unhealthy とマークして修復します。アプリケーション ベースのヘルスチェックに基づく VM の修復を「自動修復」といいます。
自動修復をトリガーせずにヘルスチェックを使用できるように、MIG で修復をオフにすることもできます。
MIG での修復の詳細については、高可用性のための VM の修復についてをご覧ください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- ヘルスチェックを作成します(まだ作成していない場合)。
- MIG で自動修復ポリシーを構成して、ヘルスチェックを適用します。
ロード バランシングのヘルスチェックよりも慎重に実施される、自動修復のヘルスチェックを作成します。
たとえば、ポート
80
でのレスポンスを確認するヘルスチェックを作成します。このヘルスチェックでは、VM がUNHEALTHY
とマークされて再作成される前にいくつかの障害が許容されます。この例では、ヘルスチェックが 1 回成功すると、VM は healthy とマークされます。ヘルスチェックが連続して3
回失敗すると、VM は unhealthy とマークされます。Google Cloud コンソールで、ヘルスチェックの作成ページに移動します。
ヘルスチェックに
example-check
などの名前を付けます。[スコープ] を選択します。[リージョン] または [グローバル] を選択できます。この例では [グローバル] を選択します。
[プロトコル] で、HTTP が選択されていることを確認します。
[ポート] に「
80
」と入力します。[ヘルス条件] セクションで、以下の値を指定します。
- [チェック間隔] に「
5
」と入力します。 - [タイムアウト] に「
5
」と入力します。 - [正常しきい値] を設定して、ヘルスチェックが何回連続して正常完了したら、unhealthy とマークされていた VM が healthy に変わるかを決定します。この例では「
1
」と入力します。 - [異常しきい値] を設定して、ヘルスチェックに何回連続して失敗したら、healthy とマークされていた VM が unhealthy に変わるかを決定します。この例では「
3
」と入力します。
- [チェック間隔] に「
[作成] をクリックしてヘルスチェックを作成します。
ヘルスチェック プローブにアプリへの接続を許可するファイアウォール ルールを作成します。
ヘルスチェック プローブは、
130.211.0.0/22
と35.191.0.0/16
の範囲のアドレスから接続を行うため、ネットワーク ファイアウォール ルールがヘルスチェックの接続を許可するようにします。この例では、MIG はdefault
ネットワークを使用し、その VM はポート80
をリッスンしています。デフォルト ネットワークでポート80
がまだ開いていない場合は、ファイアウォール ルールを作成します。Google Cloud コンソールで [ファイアウォール ポリシー] ページに移動します。
[ファイアウォール ルールを作成] をクリックします。
ファイアウォール ルールの [名前] を入力します。例:
allow-health-check
[ネットワーク] で、
default
ネットワークを選択します。[ターゲット] で、[
All instances in the network
] を選択します。[ソースフィルタ] で、
IPv4 ranges
を選択します。[送信元 IPv4 範囲] に「
130.211.0.0/22
」と「35.191.0.0/16
」を入力します。[プロトコルとポート] で [指定したプロトコルとポート] を選択して、次の操作を行います。
- [TCP] を選択します。
- [ポート] フィールドに「
80
」と入力します。
[作成] をクリックします。
ロード バランシングのヘルスチェックよりも慎重に実施される、自動修復のヘルスチェックを作成します。
たとえば、ポート
80
でのレスポンスを確認するヘルスチェックを作成します。このヘルスチェックでは、VM がUNHEALTHY
とマークされて再作成される前にいくつかの障害が許容されます。この例では、ヘルスチェックに 1 回成功すると、VM は healthy とマークされます。連続して3
回失敗すると、VM は unhealthy とマークされます。次のコマンドで、グローバル ヘルスチェックが作成されます。gcloud compute health-checks create http example-check --port 80 \ --check-interval 30s \ --healthy-threshold 1 \ --timeout 10s \ --unhealthy-threshold 3 \ --global
ヘルスチェック プローブにアプリへの接続を許可するファイアウォール ルールを作成します。
ヘルスチェック プローブは、
130.211.0.0/22
と35.191.0.0/16
の範囲のアドレスから接続を行うため、ファイアウォール ルールがヘルスチェックの接続を許可するようにします。この例では、MIG はdefault
ネットワークを使用し、その VM はポート80
をリッスンします。デフォルト ネットワークでポート80
がまだ開いていない場合は、ファイアウォール ルールを作成します。gcloud compute firewall-rules create allow-health-check \ --allow tcp:80 \ --source-ranges 130.211.0.0/22,35.191.0.0/16 \ --network default
google_compute_http_health_check
リソースを使用してヘルスチェックを作成します。たとえば、ポート
80
でのレスポンスを確認するヘルスチェックを作成します。このヘルスチェックでは、VM がUNHEALTHY
とマークされて再作成される前にいくつかの障害が許容されます。この例では、ヘルスチェックに 1 回成功すると、VM は healthy とマークされます。連続して3
回失敗すると、VM は unhealthy とマークされます。次のリクエストで、グローバル ヘルスチェックが作成されます。google_compute_firewall
リソースを使用してファイアウォールを作成します。ヘルスチェック プローブは、
130.211.0.0/22
と35.191.0.0/16
の範囲のアドレスから接続を行うため、ファイアウォール ルールがヘルスチェックの接続を許可するようにします。この例では、MIG はdefault
ネットワークを使用し、その VM はポート80
をリッスンしています。デフォルト ネットワークでポート80
がまだ開いていない場合は、ファイアウォール ルールを作成します。ロード バランシングのヘルスチェックよりも慎重に実施される、自動修復のヘルスチェックを作成します。
たとえば、ポート
80
でのレスポンスを確認するヘルスチェックを作成します。このヘルスチェックでは、VM がUNHEALTHY
とマークされて再作成される前にいくつかの障害が許容されます。この例では、ヘルスチェックに 1 回成功すると、VM は healthy とマークされます。連続して3
回失敗すると、VM は unhealthy とマークされます。次のリクエストで、グローバル ヘルスチェックが作成されます。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/healthChecks { "name": "example-check", "type": "http", "port": 80, "checkIntervalSec": 30, "healthyThreshold": 1, "timeoutSec": 10, "unhealthyThreshold": 3 }
ヘルスチェック プローブにアプリへの接続を許可するファイアウォール ルールを作成します。
ヘルスチェック プローブは、
130.211.0.0/22
と35.191.0.0/16
の範囲のアドレスから接続を行うため、ファイアウォール ルールがヘルスチェックの接続を許可するようにします。この例では、MIG はdefault
ネットワークを使用し、その VM はポート80
をリッスンしています。デフォルト ネットワークでポート80
がまだ開いていない場合は、ファイアウォール ルールを作成します。POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls { "name": "allow-health-check", "network": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/default", "sourceRanges": [ "130.211.0.0/22", "35.191.0.0/16" ], "allowed": [ { "ports": [ "80" ], "IPProtocol": "tcp" } ] }
PROJECT_ID
は、実際のプロジェクト ID に置き換えます。- ヘルスチェックをまだ作成していない場合は、作成します。
- 新しいヘルスチェックの設定中に自動修復が誤ってトリガーされないようにするには、まず MIG で修復を無効にしてから、自動修復ポリシーを構成する必要があります。
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
リストの [名前] 列で、ヘルスチェックを適用する MIG の名前をクリックします。
[編集] をクリックして、この MIG を変更します。
[VM インスタンスのライフサイクル] セクションの [自動修復] で、グローバルまたはリージョンのヘルスチェックを選択します。
[初期遅延] 設定を変更または保持します。
初期遅延は、新しい VM が起動スクリプトを初期化して実行するために要する秒数です。VM の初期遅延期間中、MIG は VM が起動プロセス中にある可能性があるため、失敗したヘルスチェックを無視します。これにより、MIG が VM を早期に再作成するのを防ぐことができます。最初の遅延中にヘルスチェックが正常なレスポンスを受信した場合、起動プロセスが完了し、VM の準備が整っていることを示します。初期遅延タイマーは、VM の
currentAction
フィールドがVERIFYING
に変わると開始されます。初期遅延の値は 0~3,600 秒の範囲で指定してください。コンソールでのデフォルト値は 300 秒です。[保存] をクリックして変更を適用します。
MIG_NAME
: 自動修復を設定する MIG の名前。SIZE
: グループ内の VM の数。INSTANCE_TEMPLATE_URL
: グループ内に VM を作成するために使用するインスタンス テンプレートの部分的な URL。次に例を示します。- リージョン インスタンス テンプレート:
projects/example-project/regions/us-central1/instanceTemplates/example-template
- グローバル インスタンス テンプレート:
projects/example-project/global/instanceTemplates/example-template
。
- リージョン インスタンス テンプレート:
HEALTH_CHECK_URL
: 自動修復用に設定するヘルスチェックの部分的な URL。リージョン ヘルスチェックを使用する場合は、リージョン ヘルスチェックの部分的な URL を指定する必要があります。次に例を示します。- リージョン ヘルスチェック:
projects/example-project/regions/us-central1/healthChecks/example-health-check
。 - グローバル ヘルスチェック:
projects/example-project/global/healthChecks/example-health-check
。
- リージョン ヘルスチェック:
INITIAL_DELAY
: 新しい VM が起動スクリプトを初期化して実行するために要する秒数。VM の初期遅延期間中、MIG は VM が起動プロセス中にある可能性があるため、失敗したヘルスチェックを無視します。これにより、MIG が VM を早期に再作成するのを防ぐことができます。最初の遅延中にヘルスチェックが正常なレスポンスを受信した場合、起動プロセスが完了し、VM の準備が整っていることを示します。初期遅延タイマーは、VM のcurrentAction
フィールドがVERIFYING
に変わると開始されます。初期遅延の値は0
~3600
秒の範囲で指定してください。デフォルト値は0
です。ZONE
: MIG が配置されているゾーン。リージョン MIG の場合は、--region
フラグを使用します。- ゾーン MIG の場合は、
instanceGroupManager.patch
メソッドを使用します。 - リージョン MIG の場合は、
regionInstanceGroupManager.patch
メソッドを使用します。 - ゾーン MIG の場合は、
instanceGroupManager.insert
メソッドを使用します。 - リージョン MIG の場合は、
regionInstanceGroupManager.insert
メソッドを使用します。 PROJECT_ID
: プロジェクト ID。MIG_NAME
: 自動修復を設定する MIG の名前。SIZE
: グループ内の VM の数。INSTANCE_TEMPLATE_URL
: グループ内に VM を作成するために使用するインスタンス テンプレートの部分的な URL。次に例を示します。- リージョン インスタンス テンプレート:
projects/example-project/regions/us-central1/instanceTemplates/example-template
- グローバル インスタンス テンプレート:
projects/example-project/global/instanceTemplates/example-template
。
- リージョン インスタンス テンプレート:
HEALTH_CHECK_URL
: 自動修復用に設定するヘルスチェックの部分的な URL。次に例を示します。- リージョン ヘルスチェック:
projects/example-project/regions/us-central1/healthChecks/example-health-check
。 - グローバル ヘルスチェック:
projects/example-project/global/healthChecks/example-health-check
。
- リージョン ヘルスチェック:
INITIAL_DELAY
: 新しい VM が起動スクリプトを初期化して実行するために要する秒数。VM の初期遅延期間中、MIG は VM が起動プロセス中にある可能性があるため、失敗したヘルスチェックを無視します。これにより、MIG が VM を早期に再作成するのを防ぐことができます。最初の遅延中にヘルスチェックが正常なレスポンスを受信した場合、起動プロセスが完了し、VM の準備が整っていることを示します。初期遅延タイマーは、VM のcurrentAction
フィールドがVERIFYING
に変わると開始されます。初期遅延の値は0
~3600
秒の範囲で指定してください。デフォルト値は0
です。ZONE
: MIG が配置されているゾーン。リージョン MIG の場合は、URL でregions/REGION
を使用します。- 自動修復でグループ内の VM のモニタリングが開始されるまでの 10 分の遅延
- + 5 分(構成された初期遅延)
- + 1 分(チェック間隔 × 正常なしきい値(60 秒 × 1))
- = VM が healthy としてマークされるか、再作成されるまでに 16 分
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
- ヘルスチェックを削除する MIG の名前をクリックします。
- [編集] をクリックして、この MIG を変更します。
- [VM インスタンスのライフサイクル] セクションの [自動修復] で、[ヘルスチェックをしない] を選択します。
- [保存] をクリックして変更を適用します。
- ゾーン MIG の場合は、
instanceGroupManagers.patch
メソッドを使用します。 - リージョン MIG の場合は、
regionInstanceGroupManagers.patch
メソッドを使用します。 PROJECT_ID
: プロジェクト ID。MIG_NAME
: 自動修復を設定する MIG の名前。ZONE
: MIG が配置されているゾーン。リージョン MIG の場合は、regions/REGION
を使用します。Google Cloud コンソールの [インスタンス グループ] ページに移動します。
自動修復ポリシーを表示する MIG の名前をクリックします。
[詳細] タブに移動します。
[VM インスタンスのライフサイクル] セクションの [自動修復] フィールドに、自動修復ポリシーで構成されたヘルスチェックと初期遅延が表示されます。
- ゾーン MIG の場合は、
instanceGroupManagers.get
メソッドを使用します。 - リージョン MIG の場合は、
regionInstanceGroupManagers.get
メソッドを使用します。 PROJECT_ID
: プロジェクト ID。MIG_NAME
: 自動修復を設定する MIG の名前。ZONE
: MIG が配置されているゾーン。リージョン MIG の場合は、regions/REGION
を使用します。- 自動修復されていない unhealthy 状態の VM を特定します。VM は、次の状況で unhealthy であると診断されても、すぐに修復されない場合があります。
- VM がまだ起動していて、初期遅延が経過していない。
- かなりの割合の unhealthy 状態のインスタンスが修復中である。MIG では、グループがインスタンスのサブセットを実行し続けるように、自動修復がさらに遅延します。
- ヘルスチェック設定のエラーを検出します。たとえば、インスタンスが
TIMEOUT
のヘルス状態を報告する際に、正しく構成されていないファイアウォール ルールや無効なアプリケーション ヘルスチェック エンドポイントを検出できます。 - VM が
RUNNING
ステータスに移行する時点と VM がHEALTHY
ヘルス状態に移行する時点との間の時間を測定することにより、設定用の初期遅延値を定めます。このギャップを測定するには、list-instances
メソッドをポーリングするか、instances.insert
オペレーションを行ってから最初に正常な信号を受信するまでの時間をモニタリングします。 Google Cloud コンソールの [インスタンス グループ] ページに移動します。
リストの [名前] 列で、確認する MIG の名前をクリックします。ページが開き、インスタンス グループ プロパティと、グループに含まれる VM のリストが表示されます。
VM が異常な場合は、[ヘルスチェックのステータス] 列でヘルス状態を確認できます。
HEALTHY
: VM にアクセス可能です。アプリケーション ヘルスチェック エンドポイントへの接続を確立できます。レスポンスはヘルスチェックで定義された要件を満たしています。DRAINING
: VM はドレイン中です。VM への既存の接続が完了するまでの時間はありますが、新しい接続は受け入れられません。UNHEALTHY
: VM はアクセス可能ですが、ヘルスチェックで定義された要件を満たしていません。TIMEOUT
: VM にアクセスできません。アプリケーション ヘルスチェックエンドポイントへの接続を確立できません。または VM のサーバーが指定されたタイムアウト内に応答しません。これは、たとえば、ファイアウォール ルールが正しく構成されていない、VM のサーバー アプリケーションが過負荷状態であるといったことが原因である可能性があります。UNKNOWN
: ヘルスチェック システムが VM を認識していないか、現在のヘルス状態が不明です。MIG の新しい VM のモニタリングを開始するまでに、10 分ほどかかることがあります。- VM のヘルス状態が
UNHEALTHY
またはTIMEOUT
で、初期化時間を経過した場合には、MIG はすぐに修復を試みます。 - VM のヘルス状態が
UNKNOWN
の場合、MIG は VM をすぐには修復しません。これは、ヘルスチェック シグナルが一時的に利用できない VM を不要に修復することを防ぐためです。 - VM が、複数の連続した修復の後に、異常状態のままの場合。
- 異常な VM がグループ内でかなりの割合を占める場合。
unhealthy-threshold
。1
以上にする必要があります。この値は、3
以上に設定するのが理想的です。これにより、発生頻度の低いネットワーク パケットの損失などの障害を回避できます。healthy-threshold
。ほとんどのアプリは値2
で十分です。timeout
。この時間値には十分な値を設定します(予想されるレスポンス時間の 5 倍以上)。これにより、ビジー状態のインスタンスや低速のネットワーク接続などの予期しない遅延を回避できます。check-interval
。この値は、1 秒からタイムアウトの 2 倍までの値にする必要があります。長すぎず、短すぎない値を設定してください。値が長すぎると、失敗したインスタンスがすぐに捕捉されません。値が短すぎると、毎秒かなりの数のヘルスチェック プローブが送信されるため、インスタンスとネットワークがビジー状態になる可能性があります。- チュートリアルを試す: 高可用性アプリでの自動修復の使用
- VM のヘルス状態の変化をモニタリングする
- 修復中に構成の更新を適用する
Terraform
ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。
詳細については Set up authentication for a local development environment をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
料金
アプリケーション ベースのヘルスチェックを設定すると、デフォルトでは、VM のヘルス状態が変化するたびに、Compute Engine によって Cloud Logging にログエントリが書き込まれます。 Cloud Logging には毎月の無料割り当て量があり、この割り当て量を超過するとロギングのデータ量に応じて課金されます。コストが発生しないようにするには、健全性の変更ログを無効にしてください。
アプリケーション ベースのヘルスチェックと自動修復を設定する
MIG でアプリケーション ベースのヘルスチェックと自動修復を設定するには、次の作業を行う必要があります。
ヘルスチェックの作成
最大で 50 個までの MIG に単一のヘルスチェックを適用できます。50 個を超えるグループがある場合は、複数のヘルスチェックを作成します。
次の例は、自動修復のヘルスチェックを作成する方法を示しています。MIG では、自動修復にリージョン ヘルスチェックまたはグローバル ヘルスチェックを作成できます。この例では、ポート
80
でウェブサーバーのレスポンスを確認するグローバル ヘルスチェックを作成します。ヘルスチェック プローブがウェブサーバーに接続できるように、ファイアウォール ルールを構成します。コンソール
gcloud
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
MIG で自動修復ポリシーを構成する
1 つの MIG でヘルスチェックの適用のために設定できる自動修復ポリシーは 1 つだけです。
MIG では、自動修復にリージョン ヘルスチェックまたはグローバル ヘルスチェックを使用できます。リージョン ヘルスチェックにより、リージョン間の依存関係が軽減され、データ所在地に到達できるようになります。グローバル ヘルスチェックは、複数のリージョンの MIG に同じヘルスチェックを使用する場合に役立ちます。
自動修復ポリシーを構成する前に、次の作業を行います。
コンソール
gcloud
既存の MIG で自動修復ポリシーを構成するには、
update
コマンドを使用します。たとえば、既存のゾーン MIG で自動修復ポリシーを構成するには、次のコマンドを使用します。
gcloud compute instance-groups managed update MIG_NAME \ --health-check HEALTH_CHECK_URL \ --initial-delay INITIAL_DELAY \ --zone ZONE
MIG の作成時に自動修復ポリシーを構成するには、
create
コマンドを使用します。たとえば、ゾーン MIG の作成時に自動修復ポリシーを構成するには、次のコマンドを使用します。
gcloud compute instance-groups managed create MIG_NAME \ --size SIZE \ --template INSTANCE_TEMPLATE_URL \ --health-check HEALTH_CHECK_URL \ --initial-delay INITIAL_DELAY \ --zone ZONE
次のように置き換えます。
Terraform
MIG で自動修復ポリシーを構成するには、
auto_healing_policies
ブロックを使用します。次のサンプルでは、ゾーン MIG で自動修復ポリシーを構成します。サンプルで使用されているリソースの詳細については、
google_compute_instance_group_manager
をご覧ください。リージョン MIG の場合は、google_compute_region_instance_group_manager
リソースを使用します。Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
既存の MIG で自動修復ポリシーを構成するには、
patch
メソッドを次のように使用します。たとえば、既存のゾーン MIG で自動修復を設定するには、次の呼び出しを行います。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "autoHealingPolicies": [ { "healthCheck": "HEALTH_CHECK_URL", "initialDelaySec": INITIAL_DELAY } ] }
MIG の作成時に自動修復ポリシーを構成するには、
insert
メソッドを次のように使用します。たとえば、ゾーン MIG の作成時に自動修復ポリシーを構成するには、次の呼び出しを行います。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "MIG_NAME", "targetSize": SIZE, "instanceTemplate": "INSTANCE_TEMPLATE_URL" "autoHealingPolicies": [ { "healthCheck": "HEALTH_CHECK_URL", "initialDelaySec": INITIAL_DELAY } ], }
次のように置き換えます。
自動修復の設定が完了してからグループ内の VM のモニタリングが開始されるまでに、10 分かかることがあります。モニタリングが開始されると、Compute Engine は自動修復構成に基づいて VM を healthy としてマークします(または再作成します)。たとえば、初期遅延を 5 分、ヘルスチェック間隔を 1 分、正常しきい値を 1 チェックに構成した場合、タイムラインは次のようになります。
自動修復ポリシーを構成する前に MIG で修復をオフにした場合は、VM のヘルス状態をモニタリングしてヘルスチェックが想定どおりに機能していることを確認してから、MIG で VM の修復をオンに戻します。
自動修復なしでヘルスチェックを使用する
MIG で自動修復なしで構成されたヘルスチェックを使用するには、MIG で修復をオフにします。これは、アプリケーションのヘルス状態のモニタリングだけのためにヘルスチェックを使用する場合や、ヘルスチェックに基づいて独自の修復ロジックを実装する場合に便利です。
unhealthy 状態の VM を修復するように MIG の設定を戻すには、失敗した VM および unhealthy 状態の VM を修復するように MIG を設定するをご覧ください。
ヘルスチェックを削除する
自動修復ポリシーで構成されたヘルスチェックを削除する方法は次のとおりです。
コンソール
gcloud
自動修復ポリシーでヘルスチェック構成を削除するには、
update
コマンドで--clear-autohealing
フラグを次のように使用します。gcloud compute instance-groups managed update MIG_NAME \ --clear-autohealing
MIG_NAME
は、MIG の名前に置き換えます。REST
自動修復ポリシーでヘルスチェック構成を削除するには、自動修復ポリシーを空の値に設定します。
たとえば、ゾーン MIG でヘルスチェックを削除するには、次のリクエストを行います。
PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME { "autoHealingPolicies": [ {} ] }
次のように置き換えます。
MIG で自動修復ポリシーを表示する
MIG の自動修復ポリシーを表示する手順は次のとおりです。
コンソール
gcloud
MIG の自動修復ポリシーを表示するには、次のコマンドを使用します。
gcloud compute instance-groups managed describe MIG_NAME \ --format="(autoHealingPolicies)"
MIG_NAME
は、MIG の名前に置き換えます。出力例は次のとおりです。
autoHealingPolicies: healthCheck: https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check initialDelaySec: 300
REST
MIG の自動修復ポリシーを表示するには、次のように REST メソッドを使用します。
たとえば、ゾーン MIG の自動修復ポリシーを表示するには、次のリクエストを送信します。
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME
レスポンスの本文で、
autoHealingPolicies[]
オブジェクトを確認します。レスポンスの例を次に示します。
{ ... "autoHealingPolicies": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/example-project/global/healthChecks/example-health-check", "initialDelaySec": 300 } ], ... }
次のように置き換えます。
ステータスの確認
MIG でアプリケーション ベースのヘルスチェックを設定したら、VM が実行中であり、そのアプリケーションが応答していることを次の方法で確認できます。
VM が healthy かどうかを確認する
MIG でアプリケーション ベースのヘルスチェックが構成済みである場合は、各マネージド インスタンスのヘルス状態を確認できます。
マネージド インスタンスのヘルス状態を次のように検査します。
ヘルス状態を確認するには、コンソール、
gcloud
コマンドライン ツール、または REST を使用します。コンソール
gcloud
list-instances
サブコマンドを使用してください。gcloud compute instance-groups managed list-instances instance-group NAME ZONE STATUS HEALTH_STATE ACTION INSTANCE_TEMPLATE VERSION_NAME LAST_ERROR igm-with-hc-fvz6 europe-west1 RUNNING HEALTHY NONE my-template igm-with-hc-gtz3 europe-west1 RUNNING HEALTHY NONE my-template
HEALTH_STATE
列に、各 VM のヘルス状態が表示されます。REST
リージョンの MIG の場合は、
listManagedInstances
メソッドに対してPOST
リクエストを作成します。POST https://compute.googleapis.com/compute/v1/projects/project-id/regions/region/instanceGroupManagers/instance-group/listManagedInstances
ゾーンの MIG の場合は、ゾーン MIG
listManagedInstances
メソッドを使用します。POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/instanceGroupManagers/instance-group/listManagedInstances
リクエストは、次のようなレスポンスを返します。レスポンスには、各マネージド インスタンスの
instanceHealth
フィールドが含まれます。{ "managedInstances": [ { "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-5485", "instanceStatus": "RUNNING", "currentAction": "NONE", "lastAttempt": { }, "id": "6159431761228150698", "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template", "version": { "instanceTemplate": "https://www.googleapis.com/compute/v1/projects/project-id/global/instanceTemplates/example-template" }, "instanceHealth": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check", "detailedHealthState": "HEALTHY" } ] }, { "instance": "https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/example-group-sfdp", "instanceStatus": "STOPPING", "currentAction": "DELETING", "lastAttempt": { }, "id": "6622324799312181783", "instanceHealth": [ { "healthCheck": "https://www.googleapis.com/compute/v1/projects/project-id/global/healthChecks/http-basic-check", "detailedHealthState": "TIMEOUT" } ] } ] }
ヘルス状態
次のような VM のヘルス状態があります。
新しい VM は、ヘルスチェック システムによって検証されるまで、
UNHEALTHY
状態を返します。VM が修復されるかどうかは、ヘルス状態によって異なります。
次の場合、自動修復の開始が遅れることがあります。
ユーザーから、VM のヘルス状態の値に関してのフィードバック、ユースケース、課題事項といった情報を求めています。フィードバックを Google チーム(mig-discuss@google.com)までお送りください。
VM での現在のアクションを確認する
MIG は VM インスタンスの作成中に、対象インスタンスの読み取り専用
currentAction
フィールドをCREATING
に設定します。自動修復ポリシーがグループに接続されている場合は、VM が作成されて実行されると、MIG がインスタンスの現在のアクションをVERIFYING
に設定し、ヘルス チェッカーが VM のアプリケーションの調査を開始します。アプリケーションの起動に要する時間内にこの初期ヘルスチェックにパスすると、VM が確認され、MIG が VM のcurrentAction
フィールドをNONE
に変更します。VM での現在のアクションを確認するには、VM での現在のアクションを表示するをご覧ください。
MIG が安定しているかどうかを確認する
グループレベルで、Compute Engine は、
isStable
フラグを含むstatus
という読み取り専用フィールドに値を設定します。グループ内のすべての VM が正常に稼働している(つまり、各マネージド インスタンスの
currentAction
フィールドがNONE
に設定されている)場合、MIG はstatus.isStable
フィールドをtrue
に設定します。MIG の安定性は、自動修復ポリシー以外のグループ構成にも依存します。たとえば、グループが自動スケーリングされており、スケールインまたはスケールアウト中である場合、MIG はオートスケーラーのオペレーションに基づいてstatus.isStable
フィールドをfalse
に設定します。MIG の
status.isStable
フィールドの値を確認するには、MIG が安定しているかどうかを確認するをご覧ください。自動修復オペレーション履歴を表示する
過去の自動修復イベントを表示するには、gcloud CLI または REST を使用します。
gcloud
プロジェクトの自動修復イベントのみを確認するには、フィルタ付きの
gcloud compute operations list
コマンドを使用します。gcloud compute operations list --filter='operationType~compute.instances.repair.*'
特定の修復オペレーションの詳細を確認するには、
describe
コマンドを使用してください。例:gcloud compute operations describe repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5 --zone us-east1-b
REST
リージョン MIG の場合、
GET
リクエストをregionOperations
リソースに送信し、出力リストをcompute.instances.repair.*
イベントにスコープするフィルタを追加します。GET https://compute.googleapis.com/compute/v1/projects/project-id/region/region/operations?filter=operationType+%3D+%22compute.instances.repair.*%22
ゾーン MIG の場合は、
zoneOperations
リソースを使用します。GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations?filter=operationType+%3D+%22compute.instances.repair.*%22
特定の修復オペレーションの詳細については、そのオペレーションに関する
GET
リクエストを送信してください。例:GET https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/operations/repair-1539070348818-577c6bd6cf650-9752b3f3-1d6945e5
適切な自動修復ヘルスチェックについて
自動修復で使用するヘルスチェックは、インスタンスを予防的に削除、再作成しないよう、慎重に実施しなければなりません。自動修復ツールによるヘルスチェックを積極的に実施しすぎると、自動修復ツールがビジー状態のインスタンスを障害が発生したものと誤って判断し、不必要にインスタンスを再起動して可用性を低下させる可能性があります。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-11-19 UTC。
-