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


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

ロード バランシング処理能力Monitoring の指標スケジュールに基づいて MIG を自動スケーリングすることもできます。

始める前に

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

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

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

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

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

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

Console

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

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

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

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

  4. [自動スケーリング モード] で [オン: グループに対してインスタンスを追加および削除します] を選択して、自動スケーリングを有効にします。

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

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

    1. [指標を追加] をクリックします。
    2. [指標タイプ] で、[CPU 使用率] を選択します。
    3. 必要な [ターゲットの CPU 使用率] を入力します。この値はパーセント値として扱われます。たとえば、75% の CPU 使用率を指定するには「75」と入力します。
    4. [予測自動スケーリング] で [オフ] を選択します。予測自動スケーリングの詳細とワークロードに適しているかどうかについては、予測に基づくスケーリングをご覧ください。
    5. [完了] をクリックします。
  7. 初期化期間を使用すると、アプリケーションの初期化に要する時間をオートスケーラーに指定できます。正確な初期化期間を指定することで、オートスケーラーによる判断が向上します。たとえば、スケールアウト時、オートスケーラーは初期化中の VM のデータを無視します。初期化中の VM はアプリケーションの通常の使用状況を表していない可能性があるためです。デフォルトの初期化期間は 60 秒です。

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

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 リファレンスをご覧ください。

REST

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

次の例では、ゾーン MIG にオートスケーラーを作成します。

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% 増やします。

次のステップ