CPU 使用率に基づくスケーリング

自動スケーリングの最も簡単な形式は、インスタンスの CPU 使用率に基づいてマネージド インスタンス グループ(MIG)をスケーリングすることです。

外部 HTTP(S) ロードバランサの処理能力またはモニタリング指標に基づいて MIG をスケーリングすることもできます。

始める前に

CPU 使用率に基づくスケーリング

マネージド インスタンス グループ(MIG)の平均 CPU 使用率に基づいて自動スケーリングできます(MIG)。このポリシーを使用すると、グループ内のインスタンスの CPU 使用率を収集して、スケーリングが必要かどうかを判断するようにオートスケーラーに指示されます。オートスケーラーが維持するターゲット CPU 使用率を設定することにより、オートスケーラーはそのレベルを維持するように動作します。

オートスケーラーでは、ターゲット CPU 使用率レベルがインスタンス グループ内のすべての vCPU の経時的な平均使用量の比率として扱われます。vCPU 全体の平均使用率がターゲット使用率を超えている場合、オートスケーラーは VM インスタンスを追加します。vCPU 全体の平均使用率がターゲット使用率を下回る場合、オートスケーラーはインスタンスを削除します。たとえば、ターゲット使用率を 0.75 に設定すると、インスタンス グループ内のすべての vCPU の平均使用率を 75% に維持するようにオートスケーラーに指示されます。

また、予測された CPU 使用率に基づいてスケールすることも可能です。詳細と、これがワークロードに適しているかどうかを確認するには、予測自動スケーリングの使用をご覧ください。

CPU 使用率に基づく自動スケーリングの有効化

Console

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

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

  2. インスタンス グループがある場合は、それを選択して [編集] をクリックします。インスタンス グループがない場合は、[インスタンス グループを作成] をクリックします。

  3. 自動スケーリング構成が存在しない場合は、[自動スケーリング] で [自動スケーリングを構成] をクリックします。

  4. [自動スケーリング モード] で [自動スケーリング] を選択して自動スケーリングを有効にします。

  5. [自動スケーリング ポリシー] セクションで、既存の CPU 使用率の指標がまだ存在しない場合は、1 つ追加します。

    1. [新しい指標を追加] をクリックします。
    2. [指標タイプ] で、[CPU 使用率] を選択します。
    3. 必要な [ターゲットの CPU 使用率] を入力します。この値はパーセント値として扱われます。たとえば、75% の CPU 使用率を指定するには「75」と入力します。
    4. [完了] をクリックします。
  6. [予測オートスケーリング] で [オフ] を選択します。予測自動スケーリングの詳細とワークロードに適しているかどうかについては、予測自動スケーリングの使用をご覧ください。

  7. クールダウン期間を使用すると、アプリケーションの初期化に要する時間をオートスケーラーに指定できます。正確なクールダウン期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。クールダウン期間のデフォルト値は 60 秒です。

  8. このグループでオートスケーラーが作成するインスタンスの数の最小値と最大値を指定します。

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

gcloud

set-autoscaling サブコマンドを使用して、マネージド インスタンス グループに対する自動スケーリングを有効にします。たとえば次のコマンドでは、目標の CPU 使用率が 60% のオートスケーラーを作成しています。オートスケーラーを作成する場合は、--target-cpu-utilization パラメータだけではなく、--max-num-replicas パラメータも必要です。

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
  --max-num-replicas 20 \
  --target-cpu-utilization 0.60 \
  --cool-down-period 90

--cool-down-period フラグを使用して、アプリケーションの初期化に要する時間をオートスケーラーに指定できます。正確なクールダウン期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。クールダウン期間のデフォルト値は 60 秒です。

必要に応じて、予測自動スケーリングを有効にし、負荷の予測に先立ってスケールアウトできます。自動スケーリングがワークロードに適しているかどうかを確認するには、予測自動スケーリングの使用をご覧ください。

instance-groups managed describe サブコマンドを使用して、自動スケーリングが正常に有効になっていることを確認できます。これは、対応するマネージド インスタンス グループを記述し、そのインスタンス グループの自動スケーリング機能に関する情報を提供します。

gcloud compute instance-groups managed describe example-managed-instance-group

利用可能な gcloud コマンドとフラグの一覧については、gcloud リファレンスをご覧ください。

API

API で、autoscalers.insert メソッドに対する POST リクエストを行います。

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

リクエスト本文には name フィールド、target フィールド、autoscalingPolicy フィールドを含める必要があります。autoscalingPolicycpuUtilizationmaxNumReplicas を定義する必要があります。

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 使用率の処理方法

CPU 使用率が高い期間中に使用率が 100% に近づくと、オートスケーラーはそのグループがすでに過負荷状態になっている可能性があると判断します。そのような場合、オートスケーラーは仮想マシンの数を最大で 50% 増やします。

次のステップ