マネージド インスタンス グループ(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
- デフォルトのリージョンとゾーンを設定します。
REST
このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
オートスケーラーの作成
オートスケーラーの作成手順は、使用する自動スケーリングのポリシーによって多少異なります。オートスケーラーの作成手順については次のページをご覧ください。
オートスケーラーに関する情報の取得
特定のオートスケーラーに関する詳細情報を取得するには、コンソールを使用するか、ゾーンまたはリージョンのオートスケーラー REST リソースに gcloud compute instance-groups managed describe
サブコマンドまたは get
メソッドを実行します。
コンソール
- Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [詳細] をクリックすると、自動スケーリングの設定を含むグループの詳細が表示されます。
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" }
オートスケーラーの更新
更新の際には、変更内容が反映されるまでに時間がかかることがあり、オートスケーラーの新しい設定が反映されるまでに数分かかる場合があります。
コンソール
- Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [編集] をクリックすると、自動スケーリングの設定を含め、グループの現在の構成を表示し、更新できます。
- 完了したら [保存] をクリックします。
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 のリソースが返されます。そのオペレーションに対して、クエリを実行して変更のステータスを確認できます。
予測自動スケーリングの使用
予測自動スケーリングでは、過去のデータを使用して、予想される負荷に対して事前にグループをスケールアウトします。ワークロードが次の基準を満たすと最適に機能します。
- アプリケーションの初期化に時間がかかる。たとえば、2 分を超える初期化期間を構成した場合です。
- ワークロードが、日単位または週単位のサイクルで定期的に変動する。
詳しくは、予測に基づくスケーリングをご覧ください。
オートスケーラーの無効化または制限
オートスケーラーをオフにして一時的に MIG のスケーリングを停止したり、オートスケーラーに制限をかけて MIG のスケールアウトだけを行えるようにできます。この機能は、次のような場合に便利です。
- スケールインの影響を受けずに VM インスタンスを調査する。
- グループの一部のみを再構成しつつ、スケーリング操作がトリガーされないように MIG の複数のプロパティを再構成する。
- ワークロードを新しい MIG にリダイレクトしつつ、MIG の容量を維持して高速ロールバックを行う。
- 後で予測自動スケーリングを有効にします。予測自動スケーリングでは、予測の基礎となる負荷の履歴の収集を開始するための自動スケーリング ポリシーが必要です。オートスケーラーは、モードが
OFF
に設定されていても、この履歴を検出します。
オートスケーラーを再び有効にすると、オートスケーラーは自動的に通常のオペレーションを再開します。
このセクションで説明する手順に沿って、オートスケーラーのモードを設定します。次のモードを使用できます。
- オフ: 自動スケーリングを一時的に無効にします。このモードを使用すると、MIG のサイズが自動的に変更されなくなります。自動スケーリングの構成はそのまま維持されるため、後で再び自動スケーリングを有効にできます。
- スケールアウトのみ: 新しい VM インスタンスを追加する場合にのみ自動スケーリングを実行します。このモードを使用すると、グループの縮小を防止できます。また、負荷が増えた場合には追加の VM をプロビジョニングできます。
- オン: ポリシーごとにすべての自動スケーリング オペレーションを有効にします。
コンソール
- Google Cloud コンソールで、[インスタンス グループ] ページに移動します。
- リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
- [編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
- [自動スケーリング] の [自動スケーリング モード] を設定して、グループの自動スケーリングを無効または制限するか、オートスケーラーを有効に戻すことができます。
- 完了したら [保存] をクリックします。
gcloud
オートスケーラーの無効化、制限、再有効化を行うには、--mode
フラグを指定して update-autoscaling
コマンドを使用します。
gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \ --mode MODE
次のように置き換えます。
MODE
:off
にすると、オートスケーラーは無効になりますが、構成は維持されます。only-scale-out
にすると、オートスケーラーのアクティビティが VM インスタンスの追加のみに制限されます。on
にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効になります。
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" } }
次のように置き換えます。
MODE
:OFF
にすると、オートスケーラーは無効になりますが、構成は維持されます。ONLY_SCALE_OUT
にすると、オートスケーラーのアクティビティがインスタンスの追加のみに制限されます。ON
にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効化されます。
自動スケーリング モードを ONLY_SCALE_OUT
に設定すると、オートスケーラーは次のように動作します。
- オートスケーラーは、負荷の減少やオートスケーラーの構成の変更に関係なく、MIG の
targetSize
値を減らしません。 - ゾーン MIG のターゲット サイズを手動で変更した場合、その値がオートスケーラーの推奨サイズよりも小さいと、手動で設定した推奨サイズがオーバーライドされます。
- リージョン MIG のターゲット サイズは手動で変更できません。
- オートスケーラーのモードが
ONLY_SCALE_OUT
に設定されているときに、autoscalingPolicy.maxNumReplicas
フィールドにグループの現在のtargetSize
値よりも小さい値を設定すると、オートスケーラーはグループ内のインスタンス数を減らしません。オートスケーラーは通常どおり、グループの推奨サイズを継続的に計算し、新しい最大値に合わせてグループの推奨サイズを減らしますが、グループはスケールインされません。 autoscalers.status
フィールドに「Autoscaling operates in a restricted mode: ONLY_SCALE_OUT」という警告が表示されます。
オートスケーラーのモードを OFF
に設定すると、オートスケーラーは次のように動作します。
- オートスケーラーは、負荷またはオートスケーラー構成の変更に応じて MIG の
targetSize
値を変更しません。オートスケーラーは通常どおり、グループの推奨サイズを継続的に計算し、新しい最大値に合わせてグループの推奨サイズを減らしますが、グループはスケールインされません。 - ゾーンまたはリージョン MIG のターゲット サイズは手動で変更できます。自動スケーリング ポリシーの
minNumReplicas
とmaxNumReplicas
の値は、設定したサイズに影響しません。 - プロアクティブなインスタンスの再配布が有効になっているリージョン MIG の自動スケーリングをオフにした場合や、MIG によるインスタンスの分配がゾーン間で均一でない場合、グループはプロアクティブにゾーン内のインスタンスを削除または再作成し、均等な分配状態を維持します。
autoscalers.status
フィールドに「Autoscaling operates in a restricted mode: OFF」という警告が表示されます。
オートスケーラーのスケールイン レートの制御
ワークロードの初期化に時間がかかる場合は、スケールインの制御を構成して、急激なスケールイン イベントによるレスポンスのレイテンシや停止のリスクを軽減してください。たとえば、負荷が減少した直後に急増することが定期的に予想される場合が該当します。スケールイン レートを制限すると、オートスケーラーがワークロード損失の許容範囲を超えて VM インスタンスを割り当て、MIG のサイズを縮小させないようにします。
スケールインの制御の構成
スケールインの制御の構成は任意で、デフォルトでは構成されていません。構成されていない場合、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。
Console
自動スケーリングされた MIG のスケールイン制御を構成するには:
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
自動スケーリングされた 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
次のように置き換えます。
INSTANCE_GROUP_NAME
: 更新する MIG の名前。MAX_SCALE_IN_REPLICAS
: ピークサイズから減らすことのできる最大 VM 数。ピークサイズは別途指定する追跡時間枠から取得されます。ここで指定する数の VM インスタンスが一度にスケールインされる可能性があります。そのため、サービスには余裕をもたせ、それだけの数の VM が一度に失われてもいいようにしておく必要があります。VM 数は数値または割合で指定できます。割合で指定する場合は%
記号を使用します。例:50%
。TIME_WINDOW
: ピークサイズを取得する追跡時間枠。この追跡時間枠の範囲からピークサイズが取得されます。自動スケーリングは、許可された最大レプリカ数をこのピークサイズから差し引いた数を超えてスケールインされません。この値は、60 から 3,600 の範囲(単位: 秒)で指定します。
たとえば、この時間枠を 1,800 秒(30 分)に設定したとします。MIG の現在の推奨サイズを計算するときに、オートスケーラーは次のロジックを使用します。
- 過去 30 分間のピークサイズを取得する(例: 100 VM)。
max-scaled-in-replicas
を取得する(例: VM 10)- 推奨サイズの下限を設定する: ピークサイズ -
max-scaled-in-replicas
(100 - 10 = 90 VM)
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 } } }
次のように置き換えます。
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
。
たとえば、この時間枠を 1,800 秒(30 分)に設定したとします。MIG の現在の推奨サイズを計算するときに、オートスケーラーは次のロジックを使用します。
- 過去 30 分間のピークサイズを取得する(例: 100 VM)。
max-scaled-in-replicas
を取得する(例: VM 10)- 推奨サイズの下限を設定する: ピークサイズ -
max-scaled-in-replicas
(100 - 10 = 90 VM)
スケールインの制御の詳しい仕組みについては、オートスケーラーによる判断についてをご覧ください。
スケールインの制御の現在の構成を取得する
スケールインの制御の現在の構成を取得するには、オートスケーラーに関する情報の取得をご覧ください。
スケールインの制御の削除
Google Cloud CLI または Compute Engine API を使用すると、スケールイン制御を削除し、スケールイン オペレーションのタイミングと規模を制限できます。
スケールインの制御が構成されていない場合は、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。
コンソール
自動スケーリングされた MIG のスケールイン制御を削除するには:
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
自動スケーリングされた 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 } }
次のように置き換えます。
AUTOSCALER_NAME
: 更新するオートスケーラーの名前。既存のオートスケーラーとそのターゲット MIG のリストを取得するには、autoscalers.aggregatedList
メソッドを使用します。
オートスケーラーの削除
オートスケーラー リソースとその履歴は完全に削除できます。自動スケーリングを一時的に停止し、オートスケーラー リソースとその構成と履歴を保持する場合は、オートスケーラーを無効にします。
コンソール
Google Cloud コンソールの [インスタンス グループ] ページに移動します。
リストで MIG の名前をクリックして、そのグループの概要ページを開きます。
[編集] をクリックすると、自動スケーリングの設定をはじめとするグループの現在の構成が表示されます。
[自動スケーリング] で [自動スケーリング モード] プルダウン リストから [自動スケーリングの構成を削除] を選択します。これにより、オートスケーラーが停止し、構成が削除されます。
完了したら [保存] をクリックします。
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 にフィードバックをお送りください。
次のステップ
- オートスケーラーによる決定の仕組みについて確認する。
- 複数の自動スケーリング信号を使用してグループをスケールする方法を確認する。