このドキュメントでは、グループ全体の平均 CPU 使用率に基づいて、VM を自動的に追加または削除する自動スケーリングされたマネージド インスタンス グループ(MIG)を作成する方法について説明します。たとえば、グループの CPU 使用率が低い場合、グループは費用を節約するために VM を自動的に削除します。
MIG は、さまざまな種類の自動スケーリング シグナルに基づいて自動的にスケーリングできます。詳細については、オートスケーラーの概要をご覧ください。
MIG を作成するための基本的なシナリオもご覧ください。
始める前に
- インスタンス テンプレートを作成します。マネージド インスタンス グループを作成するために必要です。
-
まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- デフォルトのリージョンとゾーンを設定します。
Terraform
このページの Terraform サンプルをローカル開発環境から使用するには、gcloud CLI をインストールして初期化し、自身のユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定してください。
- 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.
詳細については、 ローカル開発環境の認証の設定 をご覧ください。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
制限事項
使用する構成に応じて変動する MIG の制限事項に関する全リストについては、MIG の制限事項をご覧ください。
MIG を作成して自動スケーリングを有効にする
Google Cloud コンソール、gcloud CLI、Terraform、または REST を使用します。
Console
-
コンソールで、[インスタンス グループ] ページに移動します。
残りの手順は、Google Cloud コンソールに表示されます。
-
インスタンス グループがある場合は、それを選択して [編集] をクリックします。インスタンス グループがない場合は、[
インスタンス グループを作成 ] をクリックします。 - 新しいインスタンス グループの場合は、名前を割り当ててから、インスタンス グループのインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します。
- 自動スケーリング構成が存在しない場合は、[自動スケーリング] で [自動スケーリングを構成] をクリックします。
-
[
自動スケーリング モード ] で [オン: グループに対してインスタンスを追加および削除します] を選択して、自動スケーリングを有効にします。 - このグループでオートスケーラーが作成するインスタンスの数の最小値と最大値を指定します。
- [自動スケーリング 指標] セクションで、既存の CPU 使用率の指標がまだ存在しない場合は、1 つ追加します。
- [
指標を追加 ] をクリックします。 -
[
指標タイプ ] で、[CPU 使用率] を選択します。 -
必要な CPU 使用率の目標値を入力します。この値は割合として扱われます。たとえば、75% の CPU 使用率を指定するには「
75
」と入力します。 -
[予測自動スケーリング] で [
オフ ] を選択します。予測自動スケーリングの詳細とワークロードに適しているかどうかについては、予測に基づくスケーリングをご覧ください。 - [完了] をクリックします。
- [
- 初期化期間を使用すると初期化期間を設定できます。これにより、アプリケーションの初期化に要する時間をオートスケーラーに指示できます。正確な初期化期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。デフォルトの初期化期間は 60 秒です。
- MIG を作成するには、[
作成 ] をクリックします。
gcloud
自動スケーリングを有効にするには、その前に MIG を作成する必要があります。手順に沿って、1 つのゾーンに VM が制限された MIG を作成、またはリージョン内の複数のゾーンに分散した VM を持つ MIG を作成します。
次に、set-autoscaling
サブコマンドを使用して、グループの自動スケーリングを有効にします。たとえば次のコマンドでは、CPU 使用率の目標値が 60% のオートスケーラーを作成しています。オートスケーラーを作成する場合は、--target-cpu-utilization
パラメータだけではなく、--max-num-replicas
パラメータも必要です。
必要に応じて、--min-num-replicas
を設定し、グループに含める VM の最小数を指定できます。最小値を設定しない場合、MIG はこの値をデフォルトで 2 に設定します。
--cool-down-period
フラグを使用して初期化期間を設定できます。これにより、アプリケーションの初期化に要する時間をオートスケーラーに指定できます。正確な初期化期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。デフォルトの初期化期間は 60 秒です。
gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \ --max-num-replicas 20 \ --target-cpu-utilization 0.60 \ --cool-down-period 90
必要に応じて、予測自動スケーリングを有効にして、予測される負荷の前にスケールアウトできます。予測自動スケーリングがワークロードに適しているかどうかを確認するには、予測に基づくスケーリングをご覧ください。
instance-groups managed describe
コマンドを使用して、自動スケーリングが正常に有効になっていることを確認できます。これによって、対応する MIG が記述され、そのグループの自動スケーリング機能に関する情報が提供されます。
gcloud compute instance-groups managed describe example-managed-instance-group
Terraform
自動スケーリングを有効にするには、その前に MIG を作成する必要があります。手順に沿って、1 つのゾーンに VM が制限された MIG を作成、またはリージョン内の複数のゾーンに分散した VM を持つ MIG を作成します。
MIG で自動スケーリングを構成するには、google_compute_autoscaler
リソースを使用します。
次のサンプルでは、ゾーン MIG の CPU 使用率に基づいて自動スケーリングを構成します。
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
REST
自動スケーリングを有効にする前に、VM が単一のゾーンに制限された MIG を作成するか、リージョン内の複数のゾーンに分散した VM を含む MIG を作成する必要があります。
ゾーン MIG がある場合は、autoscalers.insert
メソッドに POST
リクエストを行います。リージョン MIG がある場合は、regionAutoscalers.insert
メソッドを使用します。
次に例を示します。
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/
リクエスト本文には name
フィールド、target
フィールド、autoscalingPolicy
フィールドを含める必要があります。autoscalingPolicy
フィールドでは、ターゲットの cpuUtilization
値と maxNumReplicas
値を定義する必要があります。
必要に応じて、minNumReplicas
を設定し、グループに含める VM の最小数を指定できます。最小値を設定しない場合、MIG はこの値をデフォルトで 2 に設定します。
coolDownPeriodSec
フィールドを使用して初期化期間を設定できます。これにより、アプリケーションの初期化に要する時間をオートスケーラーに指示できます。正確な初期化期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。デフォルトの初期化期間は 60 秒です。
{ "name": "example-autoscaler", "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-managed-instance-group", "autoscalingPolicy": { "maxNumReplicas": 10, "cpuUtilization": { "utilizationTarget": 0.6 }, "coolDownPeriodSec": 90 } }
必要に応じて、予測自動スケーリングを有効にして、予測される負荷の前にスケールアウトできます。予測自動スケーリングがワークロードに適しているかどうかを確認するには、予測に基づくスケーリングをご覧ください。
CPU 使用率に基づく自動スケーリングの有効化の詳細については、CPU 使用率に基づくスケーリングをご覧ください。
次のステップ
- 自動スケーリングと、自動スケーリング ポリシーに追加できるさまざまな種類のスケーリング シグナルについて学習する。
- オートスケーラーの管理に関するドキュメントを読む。
- アプリケーション ベースの自動修復を設定する。これにより、MIG の各 VM でアプリケーションが意図したとおりに応答していることが定期的に確認され、応答しない VM が自動的に再作成されます。
- 新しいインスタンス テンプレート、全インスタンスの構成、またはインスタンスごとの構成を設定して適用することで、MIG の VM のすべてまたはサブセットに新しい構成を適用する方法を学習する。
- 外部 HTTP(S) ロードバランサのフロントエンドをインスタンス グループに追加する方法を学習する。他の種類のロードバランサについては、ロード バランシングの概要をご覧ください。