複数のシグナルで自動スケーリング ポリシーを使用する


複数のシグナルを使用して自動スケーリング ポリシーを作成すると、オートスケーラーは、マネージド インスタンス グループ(MIG)内で仮想マシン(VM)インスタンスの最大数を示すシグナルに基づいてスケーリングします。これにより、アプリケーションのワークロードを処理するのに十分な VM が常に提供され、複数のボトルネックが想定されるアプリケーションをスケーリングできます。

自動スケーリングのさまざまなタイプのシグナルに関する詳細は、自動スケーリング ポリシーをご覧ください。

始める前に

  • オートスケーラーの基礎知識を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、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. REST

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

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

        gcloud init

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

オートスケーラーが複数のシグナルを処理する仕組み

オートスケーラーは、各シグナルに対して推奨される VM の数を計算し、MIG 内の VM を最大にするシグナルを選択することで、複数のシグナルを処理します。

オートスケーラーは、指標タイプごとに 1 つのシグナルを扱うことができます。ただし、Cloud Monitoring の指標とスケーリング スケジュールは除きます。Cloud Monitoring の指標には最大 5 つの自動スケーリング シグナルを選択でき、MIG ごとに最大 128 個のスケジュールを作成できます。たとえば、最大 1 つの CPU 使用率シグナル、最大 1 つの負荷分散シグナル、最大 5 つのカスタム指標シグナル、最大 128 個のスケーリング スケジュールを使用するオートスケーラーを作成できます。

たとえば、次のすべてのシグナルを含むオートスケーラーを定義できます。

  • 目標値が 0.8 の cpuUtilization
  • 目標値が 0.6 の loadBalancingUtilization
  • metric1 の目標値が 1000 の customMetricUtilization
  • metric2 の目標値が 2000 の customMetricUtilization
  • scalingSchedules
    • 毎週土曜日と日曜日の午前 12 時から 24 時間、最小 6 台の VM
    • 毎週月曜日から金曜日の午前 9 時から 8 時間、最小 15 台の VM

この例では、測定時に 10 個の VM を含む MIG に対して、オートスケーラーが次の平均使用率を測定したとします。

  • CPU 使用率が 0.5
  • ロードバランサの使用率が 0.4
  • metric1 が 1100
  • metric2 が 2700

オートスケーラーは、前述の値を使用して、各シグナルに基づき推奨される VM 数を計算します。

  • CPU 使用率に基づいて 7 台の VM
  • ロードバランサの使用率に基づいて 7 台の VM
  • metric1 に基づいて 11 台の VM
  • metric2 に基づいて 14 台の VM
  • 最初のスケーリング スケジュールに基づいて毎週土曜日と日曜日に 6 台の VM
  • 2 番目のスケーリング スケジュールに基づいて毎週月曜日から金曜日の午前 9 時から午後 5 時までに 15 台の VM

オートスケーラーは、MIG 内の VM 数を最大にするポリシーを選択し、MIG の推奨サイズをその値に設定します。この場合、オートスケーラーによって 2 番目のスケジュールが現在アクティブであれば、MIG が 15 台の VM に変更されます。それ以外の場合は 14 台の VM に変更されます。

複数のシグナルを使用してオートスケーラーを作成する

複数のシグナルを使用したオートスケーラーの作成手順は、Google Cloud コンソール、gcloud CLI、REST のいずれを使用するかによって若干異なります。

コンソール

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

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

  2. リストから MIG の名前をクリックします。次に [編集] をクリックします。

  3. 編集ページの [自動スケーリング モード] で、プルダウン メニューから [オン: グループに対してインスタンスを追加および削除します] を選択して自動スケーリングを有効にします。

  4. [インスタンスの最小数] に、この MIG に必要な VM の最小数を入力します。この MIG の最小サイズは、自動スケーリング シグナルに関係なく常に維持されます。

  5. [インスタンスの最大数] で、この MIG に必要な VM の最大数を入力します。自動スケーリング シグナルによって生成された推奨サイズに関係なく、この MIG の最大サイズを超過することはありません。

  6. 追加する指標ベースの自動スケーリング シグナルごとに、[自動スケーリング シグナル] で [シグナルを追加] をクリックします。

    • 平均 CPU 使用率に基づく自動スケーリング シグナルを作成するには、[シグナルの種類] のプルダウン メニューから [CPU 使用率] を選択します。[ターゲットの CPU 使用率] に値を入力して、[完了] をクリックします。詳しくは、CPU の使用率に基づくスケーリングをご覧ください。
    • HTTP ロード バランシングの処理能力に基づく自動スケーリング シグナルを作成するには、[シグナルタイプ] のプルダウン メニューから [HTTP ロード バランシングの使用率] を選択します。[HTTP 負荷分散の目標使用率] に値を入力して、[完了] をクリックします。詳しくは、負荷分散処理能力に基づくスケーリングをご覧ください。
    • Cloud Monitoring の指標に基づく自動スケーリング シグナルを作成するには、[シグナルの種類] のプルダウン メニューから [Cloud Monitoring の指標] を選択します。残りのフィールドに値を入力して、[完了] をクリックします。詳しくは、Cloud Monitoring の指標に基づくスケーリングをご覧ください。
  7. 追加するスケジュール ベースの自動スケーリング シグナルごとに、[自動スケーリングのスケジュール] セクションを展開し、[スケジュールを管理] をクリックしてから、[スケジュールを作成] をクリックします。

  8. 新しい [スケーリング スケジュールの作成] ペインで、必須フィールドに入力して、[保存] をクリックします。次に、[スケーリング スケジュール] ペインで [完了] をクリックします。詳しくは、スケジュールに基づくスケーリングをご覧ください。

  9. [初期化期間] で、アプリケーションが初期化に必要とする秒数を入力します。これにより、オートスケーラーが使用状況データの信頼性を検討する前に、VM の初期化が終了します。詳細については、初期化期間をご覧ください。

  10. 省略可: スケールインの制御を有効にするには、[スケールインの制御] をクリックし、[スケールインの制御を有効にする] チェックボックスをオンにします。詳細については、スケールインの制御をご覧ください。

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

gcloud

複数のシグナルを持つオートスケーラーを作成するには、set-autoscaling コマンドを使用します。それぞれのコマンドライン フラグを使用して、複数のシグナルの仕様を渡します。

たとえば、次のコマンドは、CPU 使用率、負荷分散処理能力、2 つのカスタム指標、1 つのスケーリング スケジュールを使用するオートスケーラーを作成します。--max-num-replicas フラグと --min-num-replicas フラグは、最大値と最小値で MIG のサイズを制限します。

gcloud compute instance-groups managed set-autoscaling MIG_NAME \
   --target-cpu-utilization=0.8 \
   --target-load-balancing-utilization=0.6 \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_1,utilization-target=1000.0,utilization-target-type=GAUGE \
   --custom-metric-utilization metric=PATH_TO_CUSTOM_METRIC_2,utilization-target=2000.0,utilization-target-type=DELTA_PER_SECOND \
   --set-schedule=workday-capacity \
   --schedule-cron="30 8 * * Mon-Fri" \
   --schedule-duration-sec=30600 \
   --schedule-min-required-replicas=10 \
   --schedule-description="Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC" \
   --min-num-replicas=1 \
   --max-num-replicas=50

以下を置き換えます。

  • MIG_NAME: MIG の名前。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2: custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2 などの形式のカスタム指標のパス。これは省略可能です。詳細については、カスタム指標をご覧ください。

カスタム指標フラグを除き、1 つの gcloud コマンドで渡すことができる指標タイプは 1 つだけです。カスタム指標の場合、--custom-metric-utilization フラグを繰り返すことで 1 つのコマンドに複数のカスタム指標を指定できます。

自動スケーリングのシグナルの種類ごとにフラグを構成する方法の詳細については、次に挙げる各ページをご覧ください。

REST

オートスケーラーを作成するには、autoscalers.insert メソッド(ゾーン MIG の場合)または regionAutoscalers.insert メソッド(リージョン MIG の場合)を使用します。

たとえば、次のリクエストでは、CPU 使用率、負荷分散処理能力、2 つのカスタム指標、2 つのスケーリング スケジュールを使用するオートスケーラーを作成します。maxNumReplicas フィールドと minNumReplicas フィールドは、最大値と最小値で MIG のサイズを制限します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT/zones/ZONE/autoscalers

{
  "autoscalingPolicy" : {
    "cpuUtilization":{
      "utilizationTarget": 0.8
    },
    "loadBalancingUtilization":{
      "utilizationTarget": 0.6
    },
    "customMetricUtilizations":[
      {
        "metric": "PATH_TO_CUSTOM_METRIC_1",
        "utilizationTarget": 1000,
        "utilizationTargetType":"GAUGE"
      },
      {
        "metric": "PATH_TO_CUSTOM_METRIC_2",
        "utilizationTarget": 2000,
        "utilizationTargetType": "DELTA_PER_SECOND"
      }
    ],
    "scalingSchedules": {
      "workday-capacity": {
        "minRequiredReplicas": 10,
        "schedule": "30 8 * * Mon-Fri",
        "durationSec": 30600,
        "description": "Have at least 10 VMs every Monday through Friday from 8:30 AM to 5 PM UTC"
      },
      "january-30-2030-schedule": {
        "minRequiredReplicas": 30,
        "schedule": "0 0 30 1 * 2030",
        "timeZone": "America/New_York",
        "durationSec": 86400,
        "description": "Schedule a minimum of 30 VMs all day for January 30, 2030"
      }
    },
    "maxNumReplicas": 50,
    "minNumReplicas": 1
  },
  "target": "https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instanceGroupManagers/MIG_NAME",
  "name": "MIG_NAME"
}

以下を置き換えます。

  • PROJECT: 実際のプロジェクト ID
  • ZONE: MIG が配置されているゾーン。
  • MIG_NAME: MIG の名前。
  • PATH_TO_CUSTOM_METRIC_1PATH_TO_CUSTOM_METRIC_2: custom.cloudmonitoring.googleapis.com/path/to/metric1custom.cloudmonitoring.googleapis.com/path/to/metric2 などの形式のカスタム指標のパス。これは省略可能です。詳細については、カスタム指標をご覧ください。

この例に示すように、同じリクエストで複数のカスタム指標とスケーリング スケジュールを指定できます。

自動スケーリングのシグナルの種類ごとにフィールドを構成する方法の詳細については、次に挙げる各ページをご覧ください。