マネージド インスタンス グループ(MIG)を使用する場合は、このドキュメントを読んで、MIG のオートスケーラーを作成、構成、削除する方法を確認してください。
始める前に
-
まだ設定していない場合は、認証を設定します。認証とは、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.
- Google Cloud Console で、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [詳細] をクリックすると、自動スケーリングの設定を含むグループの詳細が表示されます。
- Google Cloud Console で、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [編集] をクリックすると、自動スケーリングの設定を含め、グループの現在の構成を表示し、更新できます。
- 完了したら [保存] をクリックします。
- アプリケーションの初期化には時間がかかる場合です。たとえば、初期化期間を 2 分超に設定する場合です。
- ワークロードは、日単位または週単位のサイクルによって変動すると予測されます。
- スケールインの影響を受けずに VM インスタンスを調査する。
- グループの一部のみを再構成しつつ、スケーリング操作がトリガーされないように MIG の複数のプロパティを再構成する。
- ワークロードを新しい MIG にリダイレクトしつつ、MIG の容量を維持して高速ロールバックを行う。
- 後で予測自動スケーリングを有効にします。予測自動スケーリングでは、予測の基礎となる負荷の履歴の収集を開始するための自動スケーリング ポリシーが必要です。オートスケーラーは、モードが
OFF
に設定されていても、この履歴を検出します。 - オフ: 自動スケーリングを一時的に無効にします。このモードを使用すると、MIG のサイズが自動的に変更されなくなります。自動スケーリングの構成はそのまま維持されるため、後で再び自動スケーリングを有効にできます。
- スケールアウトのみ: 新しい VM インスタンスを追加する場合にのみ自動スケーリングを実行します。このモードを使用すると、グループの縮小を防止できます。また、負荷が増えた場合には追加の VM をプロビジョニングできます。
- オン: ポリシーごとにすべての自動スケーリング オペレーションを有効にします。
- Google Cloud Console で、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
- [自動スケーリング] の [自動スケーリング モード] を設定して、グループの自動スケーリングを無効または制限するか、オートスケーラーを有効に戻すことができます。
- 完了したら [保存] をクリックします。
MODE
:off
にすると、オートスケーラーは無効になりますが、構成は維持されます。only-scale-out
にすると、オートスケーラーのアクティビティが VM インスタンスの追加のみに制限されます。on
にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効になります。
MODE
:OFF
にすると、オートスケーラーは無効になりますが、構成は維持されます。ONLY_SCALE_OUT
にすると、オートスケーラーのアクティビティがインスタンスの追加のみに制限されます。ON
にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効化されます。
- オートスケーラーは、負荷の減少やオートスケーラーの構成の変更に関係なく、MIG の
targetSize
値を減らしません。 - ゾーン MIG のターゲット サイズを手動で変更した場合、その値がオートスケーラーの推奨サイズよりも小さいと、手動で設定した推奨サイズがオーバーライドされます。
- リージョン MIG のターゲット サイズは手動で変更できません。
- オートスケーラーのモードが
ONLY_SCALE_OUT
に設定されているときに、autoscalingPolicy.maxNumReplicas
フィールドにグループの現在のtargetSize
値よりも小さい値を設定すると、オートスケーラーはグループ内のインスタンス数を減らしません。オートスケーラーは通常どおり、グループの推奨サイズを継続的に計算し、新しい最大値に合わせてグループの推奨サイズを減らしますが、グループはスケールインされません。 autoscalers.status
フィールドに「Autoscaling operates in a restricted mode: ONLY_SCALE_OUT」という警告が表示されます。- オートスケーラーは、負荷またはオートスケーラー構成の変更に応じて MIG の
targetSize
値を変更しません。オートスケーラーは通常どおり、グループの推奨サイズを継続的に計算し、新しい最大値に合わせてグループの推奨サイズを減らしますが、グループはスケールインされません。 - ゾーンまたはリージョン MIG のターゲット サイズは手動で変更できます。自動スケーリング ポリシーの
minNumReplicas
とmaxNumReplicas
の値は、設定したサイズに影響しません。 - プロアクティブなインスタンスの再配布が有効になっているリージョン MIG の自動スケーリングをオフにした場合や、MIG によるインスタンスの分配がゾーン間で均一でない場合、グループはプロアクティブにゾーン内のインスタンスを削除または再作成し、均等な分配状態を維持します。
autoscalers.status
フィールドに「Autoscaling operates in a restricted mode: OFF」という警告が表示されます。Google Cloud Console で、[インスタンス グループ] ページに移動します。
自動スケーリングされた MIG の名前をクリックして、グループの概要ページを開きます。
[編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
[自動スケーリング] で [スケールインの制御] をクリックし、[スケールインの制御を有効にする] をオンにします。
[次の数を超えるインスタンスによるスケールインを行わない] で、グループから一度に削除できるインスタンスの最大数または割合を指定します。
[期間] で、インスタンスをグループから削除する頻度を指定します。
[保存] をクリックします。
INSTANCE_GROUP_NAME
: 更新する MIG の名前。MAX_SCALE_IN_REPLICAS
: ピークサイズから減らすことのできる最大 VM 数。ピークサイズは別途指定する追跡時間枠から取得されます。ここで指定する数の VM インスタンスが一度にスケールインされる可能性があります。そのため、サービスには余裕をもたせ、それだけの数の VM が一度に失われてもいいようにしておく必要があります。VM 数は数値または割合で指定できます。割合で指定する場合は%
記号を使用します。例:50%
。TIME_WINDOW
: ピークサイズを取得する追跡時間枠。この追跡時間枠の範囲からピークサイズが取得されます。自動スケーリングは、許可された最大レプリカ数をこのピークサイズから差し引いた数を超えてスケールインされません。この値は、60 から 3,600 の範囲(単位: 秒)で指定します。- 過去 30 分間のピークサイズを取得する(例: 100 VM)。
max-scaled-in-replicas
を取得する(例: VM 10)- 推奨サイズの下限を設定する: ピークサイズ -
max-scaled-in-replicas
(100 - 10 = 90 VM) AUTOSCALER_NAME
: 作成するオートスケーラーの名前。オートスケーラーには、使用する MIG にちなんだ名前を付けることも、別の名前を付けることもできます。INSTANCE_GROUP_NAME
: オートスケーラーを追加する MIG の名前。リージョン MIG の場合は、zones/ZONE
をregions/REGION
に置き換えます。MAX_SCALE_IN_REPLICAS
: 推奨されるターゲット ピークサイズから減らすことのできる最大 VM 数。ピークサイズは別途指定する追跡時間枠から取得されます。ここで指定する数の VM インスタンスが一度にスケールインされる可能性があります。そのため、サービスには余裕をもたせ、それだけの数の VM が一度に失われてもいいようにしておく必要があります。VM 数は数値または割合で指定できます。割合で指定する場合はmaxScaledInReplicas.percentage
を使用します。TIME_WINDOW
: 推奨ピークサイズを取得する追跡時間枠。この追跡時間枠の範囲から推奨ピークサイズが取得されます。自動スケーリングは、許可された最大レプリカ数をこのピークサイズから差し引いた数を超えてスケールインされません。この値は、60 から 3,600 の範囲(単位: 秒)で指定します。例:1800
。- 過去 30 分間のピークサイズを取得する(例: 100 VM)。
max-scaled-in-replicas
を取得する(例: VM 10)- 推奨サイズの下限を設定する: ピークサイズ -
max-scaled-in-replicas
(100 - 10 = 90 VM) Google Cloud Console で、[インスタンス グループ] ページに移動します。
自動スケーリングされた MIG の名前をクリックして、グループの概要ページを開きます。
[編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
[自動スケーリング] で [スケールインの制御] をクリックしてから、[スケールインの制御を有効にする] チェックボックスをオフにします。
[保存] をクリックします。
AUTOSCALER_NAME
: 更新するオートスケーラーの名前。既存のオートスケーラーとそのターゲット MIG のリストを取得するには、autoscalers.aggregatedList
メソッドを使用します。Google Cloud コンソールの [インスタンス グループ] ページに移動します。
リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
[編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
[自動スケーリング] で [自動スケーリング モード] プルダウン リストから [自動スケーリングの構成を削除] を選択します。これにより、オートスケーラーが停止し、構成が削除されます。
完了したら [保存] をクリックします。
- オートスケーラーによる決定の仕組みについて確認する。
- 複数の自動スケーリング信号を使用してグループをスケールする方法を確認する。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。
オートスケーラーの作成
オートスケーラーの作成手順は、使用する自動スケーリングのポリシーによって多少異なります。オートスケーラーの作成手順については次のページをご覧ください。
オートスケーラーに関する情報の取得
特定のオートスケーラーに関する詳細情報を取得するには、コンソールを使用するか、ゾーンまたはリージョンのオートスケーラー REST リソースに
gcloud compute instance-groups managed describe
サブコマンドまたはget
メソッドを実行します。コンソール
gcloud
instance-groups managed describe
コマンドを使用します。gcloud compute instance-groups managed describe INSTANCE_GROUP_NAME
グループにオートスケーラーがアタッチされている場合、このコマンドはオートスケーラーに関する詳細情報を返します。
... autoscaler: autoscalingPolicy: coolDownPeriodSec: 60 cpuUtilization: utilizationTarget: 0.6 maxNumReplicas: 20 minNumReplicas: 10 mode: ON scaleInControl: timeWindowSec: 300 maxScaledInReplicas: fixed: 3 calculated: 3 ...
REST
instanceGroupManagers.get
メソッドを使用します。リージョン MIG の場合は、zones/ZONE
をregions/REGION
に置き換えます。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME
グループにオートスケーラーがアタッチされている場合、このリクエストはオートスケーラー リソースへのリンクを返します。
200 OK { ... "status": { ... "autoscaler": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group" }, }
オートスケーラー リソースの詳細情報を取得するには、
autoscalers.get
メソッド(ゾーン MIG の場合)またはregionAutoscalers.get
メソッド(リージョン MIG の場合)を使用します。GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/example-autoscaler
200 OK { "kind": "compute#autoscaler", "id": "8744945839459481093", "creationTimestamp": "2018-09-28T13:02:50.553-07:00", "name": "example-group", "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/instanceGroupManagers/example-group", "autoscalingPolicy": { "minNumReplicas": 10, "maxNumReplicas": 20, "mode": "ON", "scaleInControl": { "timeWindowSec": 60, "maxScaledInReplicas": { "calculated": 3, "percent": 15 } }, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.6 } }, "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-c/autoscalers/example-group", "status": "ACTIVE" }
オートスケーラーの更新
更新の際には、変更内容が反映されるまでに時間がかかることがあり、オートスケーラーの新しい設定が反映されるまでに数分かかる場合があります。
コンソール
gcloud
update-autoscaling
コマンドを使用します。gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --max-num-replicas MAX_NUM ...
オートスケーラーの作成方法については、オートスケーラーの作成をご覧ください。
REST
オートスケーラー リソースを更新するには、
autoscalers.patch
メソッド(ゾーン MIG の場合)か、regionAutoscalers.patch
メソッド(リージョン MIG の場合)を使用します。リクエストの本文に新しい構成を含めます。PATCH https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler { "autoscalingPolicy": { "maxNumReplicas": 20 } }
200 OK { "kind": "compute#operation", "id": "4244494732310423322", "name": "operation-1556912627871-58800f8216ed7-74ab1720-7d360603", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f", "operationType": "compute.autoscalers.patch", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-f/autoscalers/example-autoscaler", "targetId": "340775527929467142", "status": "RUNNING", ... }
データを変更するリクエストを実行する場合は、zoneOperations または regionOperations のリソースが返されます。そのオペレーションに対して、クエリを実行して変更のステータスを確認できます。
予測自動スケーリングの使用
予測自動スケーリングでは、過去のデータを使用して、予想される負荷に対して事前にグループをスケールアウトします。ワークロードが次の基準を満たすと最適に機能します。
詳しくは、予測に基づくスケーリングをご覧ください。
オートスケーラーの無効化または制限
オートスケーラーをオフにして一時的に MIG のスケーリングを停止したり、オートスケーラーに制限をかけて MIG のスケールアウトだけを行えるようにできます。この機能は、次のような場合に便利です。
オートスケーラーを再び有効にすると、オートスケーラーは自動的に通常のオペレーションを再開します。
このセクションで説明する手順に沿って、オートスケーラーのモードを設定します。次のモードを使用できます。
コンソール
gcloud
オートスケーラーの無効化、制限、再有効化を行うには、
--mode
フラグを指定してupdate-autoscaling
コマンドを使用します。gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --mode MODE
次のように置き換えます。
REST
オートスケーラー リソースのモードを更新するには、
autoscalers.patch
メソッド(ゾーン MIG の場合)またはregionAutoscalers.patch
メソッド(リージョン MIG の場合)を使用します。リクエストの本文にautoscalingPolicy.mode
プロパティを含めます。PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1-f/autoscalers?autoscaler=my-autoscaler { "autoscalingPolicy": { "mode":"MODE" } }
次のように置き換えます。
自動スケーリング モードを
ONLY_SCALE_OUT
に設定すると、オートスケーラーは次のように動作します。オートスケーラーのモードを
OFF
に設定すると、オートスケーラーは次のように動作します。オートスケーラーのスケールイン レートの制御
ワークロードの初期化に時間がかかる場合は、スケールインの制御を構成して、急激なスケールイン イベントによるレスポンスのレイテンシや停止のリスクを軽減してください。たとえば、負荷が減少した直後に急増することが定期的に予想される場合が該当します。スケールイン レートを制限すると、オートスケーラーがワークロード損失の許容範囲を超えて VM インスタンスを割り当て、MIG のサイズを縮小させないようにします。
スケールインの制御の構成
スケールインの制御の構成は任意で、デフォルトでは構成されていません。構成されていない場合、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。
Console
自動スケーリングされた MIG のスケールイン制御を構成するには:
gcloud
オートスケーラーの作成時や更新時に、スケールインの制御を構成できます。
オートスケーラー作成時のスケールインの制御の構成
MIG のオートスケーラーを作成する際に
gcloud compute instance-groups managed set-autoscaling
コマンドで--scale-in-control
フラグを指定すると、スケールインの制御を設定できます。たとえば、example-group
に自動スケーリングを構成するには、次のコマンドを使用します。gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME \ --target-cpu-utilization 0.6 \ --max-num-replicas 50 \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
オートスケーラー更新時のスケールインの制御の構成
MIG の既存のオートスケーラーでスケールインの制御を更新するには、
gcloud compute instance-groups managed update-autoscaling
コマンドで--scale-in-control
フラグを指定します。たとえば、example-group
の既存の自動スケーリング構成でスケールインの制御を設定するには、次のコマンドを使用します。gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --scale-in-control max-scaled-in-replicas=MAX_SCALE_IN_REPLICAS,time-window=TIME_WINDOW
次のように置き換えます。
たとえば、この時間枠を 1,800 秒(30 分)に設定したとします。MIG の現在の推奨サイズを計算するときに、オートスケーラーは次のロジックを使用します。
REST
ゾーンまたはリージョンのオートスケーラー リソースの
autoscalingPolicy.scaleInControl
構造内にmaxScaledInReplicas
フィールドとtimeWindowSec
フィールドを設定して、スケールインの制御を構成します。これらのフィールドにはデフォルト値がありません。両方のフィールドに値を指定する必要があります。オートスケーラーの作成時や更新時に、スケールインの制御を構成できます。
オートスケーラー作成時のスケールインの制御の構成
ゾーン MIG の場合は、
autoscalers.insert
メソッドを使用し、リージョン MIG の場合はregionAutoscalers.insert
メソッドを使用します。POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers/INSTANCE_GROUP_NAME", "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
オートスケーラーの作成について詳しくは、次の記事をご覧ください。
オートスケーラー更新時のスケールインの制御の構成
ゾーン MIG の場合は、
autoscalers.patch
メソッドを使用し、リージョン MIG の場合はregionAutoscalers.patch
メソッドを使用します。PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "minNumReplicas": 1, "maxNumReplicas": 5, "coolDownPeriodSec": 60, "cpuUtilization": { "utilizationTarget": 0.8 }, "scaleInControl": { "maxScaledInReplicas": { "fixed": MAX_SCALE_IN_REPLICAS }, "timeWindowSec": TIME_WINDOW } } }
次のように置き換えます。
たとえば、この時間枠を 1,800 秒(30 分)に設定したとします。MIG の現在の推奨サイズを計算するときに、オートスケーラーは次のロジックを使用します。
スケールインの制御の詳しい仕組みについては、オートスケーラーによる判断についてをご覧ください。
スケールインの制御の現在の構成を取得する
スケールインの制御の現在の構成を取得するには、オートスケーラーに関する情報の取得をご覧ください。
スケールインの制御の削除
Compute Engine API または Compute Engine API を使用すると、スケールイン制御を削除し、スケールイン オペレーションのタイミングと規模を制限できます。
スケールインの制御が構成されていない場合は、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。
コンソール
自動スケーリングされた MIG のスケールイン制御を削除するには:
gcloud
スケールイン制御を削除するには、
gcloud compute instance-groups managed update-autoscaling
コマンドで--clear-scale-in-control
フラグを使用します。たとえば、example-group
の自動スケーリング構成からスケールイン制御を削除するには、次のコマンドを使用します。gcloud compute instance-groups managed update-autoscaling example-group \ --clear-scale-in-control
REST
スケールインの制御を削除するには、ゾーン MIG では
autoscalers.patch
メソッド、リーション MIG ではregionAutoscalers.patch
メソッドを使用し、スケールインの制御用に空の構成を指定します。PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME { "autoscalingPolicy": { "scaleInControl": null } }
次のように置き換えます。
オートスケーラーの削除
オートスケーラー リソースとその履歴は完全に削除できます。自動スケーリングを一時的に停止し、オートスケーラー リソースとその構成と履歴を保持する場合は、オートスケーラーを無効にします。
コンソール
gcloud
stop-autoscaling
コマンドを使用してオートスケーラーを停止し、構成を削除します。gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME
オートスケーラーを停止すると、MIG から削除されます。オートスケーラーを再起動するには、
set-autoscaling
コマンドを使用して再作成する必要があります。gcloud CLI を使用して MIG を削除すると、MIG に接続されているオートスケーラーもすべて削除されます。
REST
オートスケーラーを停止して構成を削除するには、
autoscalers.delete
メソッド(ゾーン MIG の場合)またはregionAutoscalers.delete
メソッド(リージョン MIG の場合)を使用します。DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME
フィードバック
自動スケーリングに関するお客様のユースケース、課題、フィードバックを募集しています。mig-discuss@google.com にフィードバックをお送りください。
次のステップ
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-05 UTC。
-