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

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

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

始める前に

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

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

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

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

コンソール


  1. [インスタンス グループ] ページに移動します。
  2. インスタンス グループがある場合は、それを選択して [グループを編集] をクリックします。インスタンス グループがない場合は、[インスタンス グループを作成] をクリックします。
  3. [自動スケーリング] で [オン] を選択します。
  4. [自動スケーリングの基準] で [CPU 使用率] を選択します。
  5. 必要なターゲット CPU 使用率を入力します。この値は割合として扱われます。たとえば、60% の CPU 使用率を指定するには「60」と入力します。
  6. このインスタンス グループに配置するインスタンスの最大数を指定します。最小数やクールダウン期間も設定できます。クールダウン期間は、VM が開始された後、オートスケーラーがその VM からの情報収集を開始するまで、オートスケーラーが待機する秒数です。VM 初期化中に収集された使用率情報は信頼性が低く、自動スケーリングには不適切であるため、この期間を設定することによって VM の初期化の時間を確保できます。クールダウン期間のデフォルト値は 60 秒です。
  7. 変更を保存します。

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 フラグを使用できます。これは、新しいインスタンスが開始された後、オートスケーラーが、その新しいインスタンスからのデータを算入するまでの秒数をオートスケーラーに指示します。インスタンスの初期化中に収集された使用率データは信頼性が低く、自動スケーリングには不適切であるため、このクールダウン期間を設定することによってインスタンスの初期化の時間を確保できます。クールダウン期間が経過すると、オートスケーラーはインスタンスの使用率データの収集を開始し、そのグループでスケーリングの必要があるかどうかを判断します。クールダウン期間のデフォルト値は 60 秒です。

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

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

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

API


注: 自動スケーリングはマネージド インスタンス グループの機能ですが、個別の API リソースです。自動スケーリング用の API リクエストを作成するときは、その点に注意してください。

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

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

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

必要に応じて、coolDownPeriodSec フィールドを使用できます。これは、新しいインスタンスが開始された後、オートスケーラーが、その新しいインスタンスからのデータを算入するまでの秒数をオートスケーラーに指示します。インスタンスの初期化中に収集された使用率データは信頼性が低く、自動スケーリングには不適切であるため、このクールダウン期間を設定することによってインスタンスの初期化の時間を確保できます。クールダウン期間が経過すると、オートスケーラーはインスタンスの使用率データの収集を開始し、そのグループでスケーリングの必要があるかどうかを判断します。クールダウン期間のデフォルト値は 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% 増やします。