オートスケーラーの管理

マネージド インスタンス グループ(MIG)を使用する場合、このページで、MIG のオートスケーラーを作成、記述、更新、制限、停止、削除する方法を確認してください。

MIG の詳細については、概要をご覧ください。

始める前に

オートスケーラーの作成

オートスケーラーの作成手順は、使用する自動スケーリングのポリシーによって多少異なります。オートスケーラーの作成手順については次のページをご覧ください。

オートスケーラーに関する情報の取得

特定のオートスケーラーの詳細を取得するには、Console を使用するか、ゾーンまたはリージョンのオートスケーラー リソースに gcloud compute instance-groups managed describe サブコマンドまたは Compute Engine API の get メソッドを実行します。

Console

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. リストで MIG の名前をクリックして、そのグループの詳細ページを開きます。
  3. [詳細] をクリックすると、自動スケーリングの設定を含むグループの詳細が表示されます。

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
...

API

instanceGroupManagers.get メソッドを使用します。リージョン MIG の場合は、zones/ZONEregions/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 メソッドを使用します。リージョン オートスケーラーの場合は、zones/ZONEregions/REGION に置き換えます。

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 Console、gcloud ツール、または Compute Engine API を使用します。

更新の際には、変更内容が反映されるまでに時間がかかることがあり、オートスケーラーの新しい設定が反映されるまでに数分かかる場合があります。

Console

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. リストで MIG の名前をクリックして、そのグループの詳細ページを開きます。
  3. [グループを編集] をクリックすると、自動スケーリングの設定を含め、グループの現在の構成を表示し、更新できます。
  4. 完了したら [保存] をクリックします。

gcloud

update-autoscaling コマンドを使用します。

gcloud compute instance-groups managed update-autoscaling INSTANCE_GROUP_NAME \
        --max-num-replicas MAX_NUM ...

オートスケーラーの作成方法については、オートスケーラーの作成をご覧ください。

API

ゾーン MIG のオートスケーラー リソースを更新するには、ゾーン オートスケーラーの patch メソッドを使用します。リージョン MIG の場合は、リージョン オートスケーラーの patch メソッドを使用します。リクエストの本文に新しい構成を含めます。

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",
 ...
}

データを変更するリクエストを実行する場合は、zoneOperationsregionOperations のリソースが返されます。そのオペレーションに対して、クエリを実行して変更のステータスを確認できます。

オートスケーラーの無効化または制限

オートスケーラーをオフにして一時的に MIG のスケーリングを停止したり、オートスケーラーに制限をかけて MIG のスケールアップだけを行えるようにできます。この機能は、次のような場合に便利です。

  • スケールインの影響を受けずに VM インスタンスを調査する。
  • グループの一部のみを再構成しつつ、スケーリング操作がトリガーされないように MIG の複数のプロパティを再構成する。
  • ワークロードを新しい MIG にリダイレクトしつつ、MIG の容量を維持して高速ロールバックを行う。

オートスケーラーを再び有効にすると、オートスケーラーは自動的に通常のオペレーションを再開します。

Google Cloud Console、gcloud ツール、または Compute Engine API で、オートスケーラーの mode を次のように設定します。

  • オフ: 自動スケーリングを一時的に無効にします。このモードを使用すると、MIG のサイズが自動的に変更されなくなります。自動スケーリングの構成はそのまま維持されるため、後で再び自動スケーリングを有効にできます。
  • スケールアウトのみ: 新しい VM インスタンスを追加する場合にのみ自動スケーリングを実行します。このモードを使用すると、グループの縮小を防止できます。また、負荷が増えた場合には追加の VM をプロビジョニングできます。
  • オン: ポリシーごとにすべての自動スケーリング オペレーションを有効にします。

Console

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. リストで MIG の名前をクリックして、そのグループの詳細ページを開きます。
  3. [グループを編集] をクリックして、自動スケーリングの設定を含め、グループの現在の構成を表示します。
  4. [自動スケーリング] の [自動スケーリング モード] を設定して、グループの自動スケーリングを無効または制限するか、オートスケーラーを有効に戻すことができます。
  5. 完了したら [保存] をクリックします。

gcloud

オートスケーラーの無効化、制限、再有効化を行うには、--mode フラグを指定して set-autoscaling コマンドを使用します。

gcloud compute instance-groups managed set-autoscaling INSTANCE_GROUP_NAME 
--mode MODE

次のように置き換えます。

  • MODE:
    • off にすると、オートスケーラーは無効になりますが、構成は維持されます。
    • only-scale-out にすると、オートスケーラーのアクティビティが VM インスタンスの追加のみに制限されます。
    • on にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効化されます。

API

ゾーン MIG のオートスケーラー リソースのモードを更新するには、オートスケーラーの patch メソッドを使用します。リージョン MIG の場合は、リージョン オートスケーラーの patch メソッドを使用します。リクエストの本文に 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 にすると、ポリシーに従って、すべてのオートスケーラーのアクティビティが再び有効化されます。

オートスケーラーのスケールイン レートの制御

ワークロードの初期化に時間がかかる場合は、スケールインの制御を構成して、急激なスケールイン イベントによるレスポンスのレイテンシや停止のリスクを軽減してください。たとえば、負荷が減少した直後に急増することが定期的に予想される場合が該当します。スケールイン レートを制限すると、オートスケーラーがワークロード損失の許容範囲を超えて VM インスタンスを割り当て、MIG のサイズを縮小させないようにします。

スケールインの制御の構成

gcloud ツール、または Compute Engine API を使用してスケールインの制御を構成します。スケールインの制御の構成は任意で、デフォルトでは構成されていません。構成されていない場合、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、直近 10 分の安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。

Console

自動スケーリングされた MIG のスケールイン制御を構成するには:

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. 自動スケーリングされた MIG の名前をクリックして、グループの詳細ページを開きます。

  3. [グループを編集] をクリックして、自動スケーリングの設定を含め、グループの現在の構成を表示します。

  4. [自動スケーリング] で [スケールインの制御を有効にする] を選択します。

  5. [次の数を超えるインスタンスによるスケールインを行わない] で、グループから一度に削除できるインスタンスの最大数または割合を指定します。

  6. [期間] で、インスタンスをグループから削除する頻度を指定します。

  7. [保存] をクリックします。

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)

API

ゾーンまたはリージョンのオートスケーラー リソースの autoscalingPolicy.scaleInControl 構造内に maxScaledInReplicas フィールドと timeWindowSec フィールドを設定して、スケールインの制御を構成します。これらのフィールドにはデフォルト値がありません。両方のフィールドに値を指定する必要があります。

オートスケーラーの作成時や更新時に、スケールインの制御を構成できます。

オートスケーラー作成時のスケールインの制御の構成

ゾーン MIG の場合は、ゾーンの autoscaler 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 の場合は、ゾーンの autoscaler 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/ZONEregions/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)

スケールインの制御の詳しい仕組みについては、オートスケーラーによる判断についてをご覧ください。

スケールインの制御の現在の構成を取得する

スケールインの制御の現在の構成を取得するには、オートスケーラーに関する情報の取得をご覧ください。

スケールインの制御の削除

gcloud コマンドライン ツールまたは Compute Engine API を使用すると、スケールイン制御を削除し、スケールイン オペレーションのタイミングと規模を制限できます。

スケールインの制御が構成されていない場合は、オートスケーラーにはデフォルトの安定化メカニズムがそのまま適用されます。つまり、推奨サイズが、直近 10 分の安定化期間中に観測されたピーク負荷への対応に必要なレベルに維持されます。

Console

自動スケーリングされた MIG のスケールイン制御を削除するには:

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. 自動スケーリングされた MIG の名前をクリックして、グループの詳細ページを開きます。

  3. [グループを編集] をクリックして、自動スケーリングの設定を含め、グループの現在の構成を表示します。

  4. [自動スケーリング] で [スケールインの制御を有効にする] チェックボックスをオフにします。

  5. [保存] をクリックします。

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

API

スケールインの制御を削除するには、autoscalers.patch メソッドを使用して、スケールインの制御の構成に空の値を指定します。リージョン MIG の場合は、zones/ZONEregions/REGION に置き換えます。

PATCH
https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers?autoscaler=AUTOSCALER_NAME

{
  "autoscalingPolicy": {
    "scaleInControl": null
  }
}

次のように置き換えます。

  • AUTOSCALER_NAME: 更新するオートスケーラーの名前。既存のオートスケーラーとターゲット MIG のリストを取得するには、ゾーンまたはリージョン オートスケーラーの aggregatedList メソッドを使用します。

オートスケーラーの削除

Google Cloud Console、gcloud ツール、または Compute Engine API を使用して、オートスケーラー リソースを完全に削除できます。自動スケーリングを一時的に停止し、オートスケーラー リソースとその構成を保持する場合は、オートスケーラーを無効にします。

Console

  1. Cloud Console で、[インスタンス グループ] ページに移動します。

    [インスタンス グループ] ページに移動

  2. リストで MIG の名前をクリックして、そのグループの詳細ページを開きます。

  3. [グループを編集] をクリックして、自動スケーリングの設定を含め、グループの現在の構成を表示します。

  4. [自動スケーリング] で [自動スケーリングの構成を削除] をクリックして、オートスケーラーを停止し、構成を削除します。

  5. 完了したら [保存] をクリックします。

gcloud

stop-autoscaling コマンドを使用してオートスケーラーを停止し、構成を削除します。

gcloud compute instance-groups managed stop-autoscaling INSTANCE_GROUP_NAME

オートスケーラーを停止すると、MIG から削除されます。オートスケーラーを再起動するには、set-autoscaling コマンドを使用して再作成する必要があります。

gcloud ツールを使用して MIG を削除すると、MIG に接続されているオートスケーラーもすべて削除されます。

API

オートスケーラーを停止して構成を削除するには、delete メソッドを呼び出します。リージョン MIG の場合は、zones/ZONEregions/REGION に置き換えます。

 DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers/AUTOSCALER_NAME

フィードバック

自動スケーリングに関するお客様のユースケース、課題、フィードバックを募集しています。mig-discuss@google.com にフィードバックをお送りください。

次のステップ