複数のポリシーの使用

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

自動スケーリング ポリシーの詳細については、ポリシーをご覧ください。

始める前に

オートスケーラーが複数のポリシーを処理する方法

オートスケーラーは、ポリシーごとに推奨される 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 に変更されます。

複数のポリシーを使用したオートスケーラーの作成

複数のポリシーを使用したオートスケーラーの作成手順は、Cloud Console、gcloud ツール、Compute Engine API のいずれを使用するかによって多少異なります。

Console

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

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

  2. リストから MIG の名前をクリックします。[グループを編集] をクリックします。

  3. 編集ページの [自動スケーリング モード] で、プルダウン メニューから [自動スケーリング] を選択して自動スケーリングを有効にします。

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

    • 平均 CPU 使用率に基づいて自動スケーリング ポリシーを作成するには、[指標タイプ] でプルダウン メニューから [CPU 使用率] を選択します。[ターゲットの CPU 使用率] に値を入力して、[完了] をクリックします。詳しくは、CPU の使用率に基づくスケーリングをご覧ください。
    • HTTP 負荷分散処理能力に基づく自動スケーリング ポリシーを作成するには、指標タイプのプルダウン メニューから [HTTP 負荷分散の使用率] を選択します。[HTTP 負荷分散の目標使用率] に値を入力して、[完了] をクリックします。詳しくは、負荷分散処理能力に基づくスケーリングをご覧ください。
    • Cloud Monitoring の指標に基づく自動スケーリング ポリシーを作成するには、[指標タイプ] のプルダウン メニューから [Stackdriver Monitoring] を選択します。残りのフィールドに値を入力して、[完了] をクリックします。詳しくは、Cloud Monitoring の指標に基づくスケーリングをご覧ください。
  5. スケジュール ベースの自動スケーリング ポリシーを追加する場合は、[自動スケーリング ポリシー] で、[Add new scaling schedule] をクリックします。

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

  6. [クールダウン期間] で、アプリケーションの初期化に必要な秒数を入力します。これにより、VM の初期化が終了してから、オートスケーラーが使用状況に関する情報の収集を開始するようになります。詳細については、クールダウン期間をご覧ください。

  7. [インスタンスの最小数] に、この MIG に必要な VM の最小数を入力します。この MIG の最小サイズは、自動スケーリング ポリシーによって生成された推奨サイズに関係なく常に維持されます。

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

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

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

gcloud

複数のポリシーを使用したオートスケーラーを作成するには、該当するコマンドライン フラグを使用して、複数のポリシー指定を渡します。スケーリング スケジュールを含むオートスケーラーを作成する場合は、gcloud beta compute instance-groups managed set-autoscaling コマンドを使用します。それ以外の場合は、gcloud compute instance-groups managed set-autoscaling コマンドを使用します。

たとえば、次のコマンドは、CPU 使用率、負荷分散処理能力、2 つのカスタム指標、1 つのスケーリング スケジュールを使用するオートスケーラーを作成します。--max-num-replicas フラグと --min-num-replicas フラグは、各ポリシーの推奨サイズに関係なく、MIG が読み取ることができる最大サイズまたは最小サイズを制限します。

gcloud beta 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 つのコマンドに複数のカスタム指標を指定できます。

自動スケーリング ポリシーのタイプごとにフラグを構成する方法については、次のページをご覧ください。

API

オートスケーラーを作成するには、autoscalers.insert メソッド(ゾーン MIG の場合)または regionAutoscalers.insert メソッド(リージョン MIG の場合)を使用します。スケーリング スケジュールを含むオートスケーラーを作成する場合、ゾーン MIG であれば ベータ版 autoscalers.insert メソッドを使用し、リージョン MIG であればベータ版 regionAutoscalers.insert メソッドを使用する必要があります。

たとえば、次のリクエストでは、CPU 使用率、負荷分散処理能力、2 つのカスタム指標、1 つのスケーリング スケジュールを使用するオートスケーラーを作成します。maxNumReplicas フィールドと minNumReplicas フィールドは、各ポリシーの推奨サイズに関係なく、MIG が読み取ることができる最大サイズまたは最小サイズを制限します。

POST https://compute.googleapis.com/compute/beta/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 などの形式のカスタム指標のパス。これは省略可能です。詳細については、カスタム指標をご覧ください。

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

自動スケーリング ポリシーのタイプごとにフィールドを構成する方法については、次のページをご覧ください。