リージョン マネージド インスタンス グループ(MIG)が十分にオーバープロビジョニングされており、ゾーンがサービス停止した場合でも継続できることをテストするには、次のサンプルを使用して、ゾーンの障害をシミュレートします。
始める前に
- このガイドのコマンドラインの例を使用する場合は、Google Cloud CLI をインストールします。
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
Select the tab for how you plan to use the samples on this page:
gcloud
-
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
- Set a default region and zone.
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Google Cloud CLI をインストールします。 インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
詳細については、 Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
スクリプトを使用してゾーンの停止をシミュレートする
このスクリプトはデフォルトのシナリオとして、Apache を停止して開始します。使用しているアプリケーションに適さない場合は、Apache を停止および開始するコマンドを、該当する障害と復元のシナリオに置き換えます。
このスクリプトをグループ内のすべての VM にデプロイし、継続的に実行します。それには、スクリプトをインスタンス テンプレートに追加するか、カスタム イメージにスクリプトを組み込んで、そのイメージをインスタンス テンプレートで使用します。
2 つのプロジェクトのメタデータ フィールドを設定して、ゾーンの障害をシミュレーションします。
failed_zone
: 停止した場合をシミュレーションするゾーンを設定します(障害が発生するゾーンを 1 つに限定します)。failed_instance_names
: オフラインにする VM を名前で選択します(これにより、この文字列を含む VM 名のみに障害が限定されます)。
このメタデータを設定するには、gcloud CLI を使用します。たとえば、次のコマンドではゾーンの停止を
europe-west1-b
ゾーンに設定し、base-instance-name
で始まる名前の VM にゾーン停止状態を適用します。gcloud compute project-info add-metadata --metadata failed_zone='europe-west1-b',failed_instance_names='base-instance-name-'
停止状態をシミュレーションしたら、メタデータキーを削除して障害から復元します。
gcloud compute project-info remove-metadata --keys failed_zone,failed_instance_names
このスクリプトを使用して実行できる障害の事例は次のとおりです。
- アプリケーションを完全に停止して、MIG がどのように対処するかを確認する。
- VM に対するロード バランシング ヘルスチェックの結果が「異常」になるようにする。
- VM との間で一部のトラフィックの流れが遮断されるように、iptables を変更する。
- VM をシャットダウンする。デフォルトでは直後にリージョン MIG によって VM が再作成されますが、新しく作成された VM も、メタデータ値が設定されている限り、スクリプトが実行されるとすぐにシャットダウンします。その結果、障害ループが発生します。
次のステップ
- 拡張性と復元性の高いウェブ アプリケーションを構築する方法の詳細を知る。
- Google Cloud Platform での障害復旧の詳細を知る。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-10-19 UTC。
-