自動スケーリングが有効な MIG を作成する


このドキュメントでは、グループ全体の平均 CPU 使用率に基づいて、VM を自動的に追加または削除する自動スケーリングされたマネージド インスタンス グループ(MIG)を作成する方法について説明します。たとえば、グループの CPU 使用率が低い場合、グループは費用を節約するために VM を自動的に削除します。

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

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. Terraform

      ローカル開発環境でこのページの Terraform サンプルを使用するには、gcloud CLI をインストールして初期化し、ユーザー認証情報を使用してアプリケーションのデフォルト認証情報を設定します。

      1. Install the Google Cloud CLI.
      2. To initialize the gcloud CLI, run the following command:

        gcloud init
      3. 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.

      詳細については Set up authentication for a local development environment をご覧ください。

      REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

制限事項

使用する構成に応じて変動する MIG の制限事項に関する全リストについては、MIG の制限事項をご覧ください。

MIG を作成して自動スケーリングを有効にする

Google Cloud コンソールgcloud CLI、Terraform、または REST を使用します。

Console

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

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

    残りの手順は、Google Cloud コンソールに表示されます。

  2. インスタンス グループがある場合は、それを選択して [編集] をクリックします。インスタンス グループがない場合は、[インスタンス グループを作成] をクリックします。
  3. 新しいインスタンス グループの場合は、名前を割り当ててから、インスタンス グループのインスタンス テンプレートを選択するか、新しいインスタンス テンプレートを作成します
  4. 自動スケーリング構成が存在しない場合は、[自動スケーリング] で [自動スケーリングを構成] をクリックします。
  5. [自動スケーリング モード] で [オン: グループに対してインスタンスを追加および削除します] を選択して、自動スケーリングを有効にします。
  6. このグループでオートスケーラーが作成するインスタンスの数の最小値と最大値を指定します。
  7. [自動スケーリング 指標] セクションで、既存の CPU 使用率の指標がまだ存在しない場合は、1 つ追加します。
    1. [指標を追加] をクリックします。
    2. [指標タイプ] で、[CPU 使用率] を選択します。
    3. 必要な CPU 使用率の目標値を入力します。この値は割合として扱われます。たとえば、75% の CPU 使用率を指定するには「75」と入力します。
    4. [予測自動スケーリング] で [オフ] を選択します。予測自動スケーリングの詳細とワークロードに適しているかどうかについては、予測に基づくスケーリングをご覧ください。
    5. [完了] をクリックします。
  8. 初期化期間を使用すると初期化期間を設定できます。これにより、アプリケーションの初期化に要する時間をオートスケーラーに指示できます。正確な初期化期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。デフォルトの初期化期間は 60 秒です。
  9. 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 使用率に基づいて自動スケーリングを構成します。

resource "google_compute_autoscaler" "default" {
  name   = "example-autoscaler"
  zone   = "us-central1-f"
  target = google_compute_instance_group_manager.default.id

  autoscaling_policy {
    max_replicas    = 20
    min_replicas    = 0
    cooldown_period = 90

    cpu_utilization {
      target = 0.60
    }
  }
}

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 使用率に基づくスケーリングをご覧ください。

次のステップ