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


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

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

始める前に

  • オートスケーラーの基礎知識を確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

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

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

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

オートスケーラーは、各シグナルに対して推奨される 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 などの形式のカスタム指標のパス。これは省略可能です。詳細については、カスタム指標をご覧ください。

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

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