インスタンスのグループの自動スケーリング

マネージド インスタンス グループには、負荷の増減に基づいて、マネージド インスタンス グループからインスタンスを自動的に追加または削除できる自動スケーリング機能が備わっています。自動スケーリングによって、アプリケーションでトラフィックの増加を適切に処理できると同時に、リソースの必要性が低下した場合は費用を削減できます。自動スケーリングのポリシーを定義しておけば、オートスケーラーで測定した負荷に基づいて自動スケーリングが実行されます。

自動スケーリングにより、負荷が多くなるとインスタンス グループにインスタンスが追加され(アップスケーリング)、インスタンスの必要性が低下するとインスタンスが削除されます(ダウンスケーリング)。

基礎知識

自動スケーリングでは、以下の基本的な概念とサービスが使用されます。

マネージド インスタンス グループ

自動スケーリングはマネージド インスタンス グループの機能です。マネージド インスタンス グループは、共通のインスタンス テンプレートから作成された同種のインスタンスのプールです。オートスケーラーは、マネージド インスタンス グループからインスタンスを追加または削除します。Compute Engine にはマネージド インスタンス グループと非マネージド インスタンス グループがありますが、オートスケーラーで使用できるのはマネージド インスタンス グループだけです。

マネージド インスタンス グループと非マネージド インスタンス グループの違いについては、インスタンス グループのドキュメントをご覧ください。

自動的スケーリングのポリシーと目標使用率

オートスケーラーを作成するには、オートスケーラーがグループをスケーリングする時期を判断するために使用する、自動スケーリングのポリシーと目標使用率レベルを指定する必要があります。次のポリシーを使用したスケーリングを選択できます。

  • 平均 CPU 使用率
  • 使用率または 1 秒あたりのリクエスト数のいずれかに基づいた HTTP 負荷分散処理機能
  • Stackdriver Monitoring の指標

オートスケーラーはポリシーに基づいて継続的に使用状況に関する情報を収集し、実際の使用率を目標使用率と比較して、グループのアップスケーリングまたはダウンスケーリングが必要であるかどうかを判断します。

目標使用率のレベルは、仮想マシンのインスタンスで維持するレベルです。たとえば、CPU 使用率に基づいてスケーリングする場合、目標使用率レベルを 75% に設定すると、オートスケーラーは、指定されたインスタンス グループの CPU 使用率を 75% 前後で維持します。各指標の使用率レベルは、自動スケーリングのポリシーに基づいて、異なった方法で解釈されます。

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

クールダウン期間

自動スケーリングを設定する際は、インスタンスに初期化を完了させるためのクールダウン期間を指定します。クールダウン期間の経過後に、オートスケーラーはインスタンスからの情報の収集を開始します。インスタンスの起動中に収集された情報に基づくオートスケーラーの判断は信頼性に欠ける可能性があるため、この期間中のデータは除外することをおすすめします。デフォルトのクールダウン期間は 60 秒です。

安定化期間

オートスケーラーはスケールダウンの目的で、直近の 10 分間におけるピーク負荷に基づいて適切なターゲット サイズを計算します。この直近 10 分間は、安定化期間と呼ばれます。

この 10 分間の安定化期間はダウンスケーリングの遅延のように見えることもありますが、実際には自動スケーリングの組み込み機能です。この遅延により、サイズを小さくしたグループでも、直近 10 分間のピーク負荷に対応できることが確実になります。

仕様

  • オートスケーリングはマネージド インスタンス グループでしか機能しません。非マネージド インスタンス グループはサポートされません。
  • プロアクティブなインスタンス再分配が無効にされている場合、マネージド インスタンス グループでは自動スケーリングが機能しません。
  • Google Kubernetes Engine が所有するマネージド インスタンス グループによる Google Compute Engine 自動スケーリングは使用しないでください。Google Kubernetes Engine グループには、代わりにクラスタの自動スケーリングを使用します。

    グループが Google Kubernetes Engine クラスタに含まれているかどうかが不明な場合、マネージド インスタンス グループ名の gke プレフィックスを確認してください。例: gke-test-1-3-default-pool-eadji9ah

  • オートスケーラーは複数の指標に基づいてスケーリングを決定できますが、指標タイプごとに 1 つのポリシーしか処理できません。ただし、Stackdriver Monitoring の指標は例外であり、オートスケーラーは Stackdriver Monitoring の指標に基づいて最大 5 つのポリシーを処理できます。オートスケーラーは、推奨される仮想マシンの数をポリシーごとに計算し、グループ内の仮想マシンの最大数を指定しているポリシーに基づいてスケーリングを行います。

  • 自動スケーリングは自動修復とは独立して機能します。グループに対して自動修復を構成した場合、インスタンスがヘルスチェックに失敗すると、オートヒーラーによってそのインスタンスの再作成が試みられます。これが原因で、グループ内のインスタンス数が、指定した自動スケーリングのしきい値(minNumReplicas)を下回る場合があります。

始める前に

  1. マネージド インスタンス グループについて

    オートスケーラーはマネージド インスタンス グループの機能であるため、自動スケーリングを使用する前に、マネージド インスタンス グループの動作について理解しておく必要があります。

  2. マネージド インスタンス グループの名前または URL の取得

    すべての自動スケーリング リクエストで、マネージド インスタンス グループの名前または URL を指定する必要があります。gcloud コマンドライン ツールを使用する場合はマネージド インスタンス グループ名を使用できますが、API では完全修飾 URL を使用する必要があります。

    既存のマネージド インスタンス グループの URL を取得するには、instance-groups managed list --uri コマンドまたは instance-groups managed list [INSTANCE_GROUP] --uri コマンドを使用します。たとえば、次のコマンドでは us-central1-f ゾーン内のマネージド インスタンス グループの URL が指定されます。

    gcloud compute instance-groups managed list example-group --uri --filter="zone:(us-central1-f)"
    

    gcloud ツールはマネージド インスタンス グループの URL を返します。

    https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/instanceGroupManagers/example-group
    

    既存のマネージド インスタンス グループがない場合は、マネージド インスタンス グループの作成方法を確認します。

次のステップ

準備ができたら、CPU または負荷分散処理能力、あるいは Stackdriver Monitoring の指標に基づいてスケールするオートスケーラーを作成します。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント