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

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

自動スケーリングでは、負荷が多くなると MIG に VM が追加され(スケールアウト、スケールアップとも呼ばれます)、VM の必要性が低下すると VM が削除されます(スケールインまたはスケールダウン)。

仕様

  • 自動スケーリングはマネージド インスタンス グループ(MIG)でのみ機能します。非マネージド インスタンス グループはサポートされません。
  • リージョン MIG を自動スケーリングする場合は、次の制限が適用されます。
  • 自動スケーリングが有効になっているときに、特定の名前を持つインスタンスを作成することはできません。ただし、特定の名前を持つ VM インスタンスが作成された後にオートスケーラーを有効にすることはできます。
  • MIG にステートフルな構成がある場合は、自動スケーリングを使用できません。
  • Google Kubernetes Engine に所有される MIG では Compute Engine の自動スケーリングを使用しないでください。Google Kubernetes Engine グループには、代わりにクラスタの自動スケーリングを使用します。

    グループが GKE クラスタの一部であるかどうか不明な場合は、MIG 名の gke 接頭辞を確認します。例: gke-test-1-3-default-pool-eadji9ah

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

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

  • リージョン MIG を自動スケーリングすると、インスタンスが追加された後、すぐにいずれかのゾーンから削除されることがあります。これは、ゾーン内の使用率からスケールアウトが発生しても、リージョン MIG 全体的の使用率から見るとインスタンスの追加が必要ない場合や、別のゾーンでインスタンスの追加が必要になっている場合に発生します。

前提条件

オートスケーラーは、Compute Engine サービス エージェントを使用して、グループ内のインスタンスを追加および削除します。Compute Engine API が有効になっている場合、Google Cloud はこのサービス アカウントと、Compute Engine サービス エージェント ロールへの IAM ポリシー バインディングを自動的に作成します。

プロジェクトにこのアカウントがない場合(たとえば、アカウントを削除した場合)は、手動で追加できます。

Console

  1. Cloud Console で [IAM] ページに移動します。

    IAM に移動

  2. [追加] をクリックします。

  3. service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com」と入力します。

  4. Compute Engine サービス エージェントのロールを選択します。

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

gcloud

gcloud projects add-iam-policy-binding PROJECT_ID \
   --member serviceAccount:service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com \
   --role roles/compute.serviceAgent

基礎知識

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

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

自動スケーリングはマネージド インスタンス グループ(MIG)の機能です。マネージド インスタンス グループは、共通のインスタンス テンプレートから作成された仮想マシン(VM)インスタンスの集まりです。オートスケーラーは、グループの自動スケーリング ポリシーに基づいて、マネージド インスタンス グループからインスタンスを追加または削除します。Compute Engine にはマネージド インスタンス グループと非マネージド インスタンス グループがありますが、オートスケーラーで使用できるのはマネージド インスタンス グループだけです。

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

マネージド インスタンス グループの作成方法については、MIG の作成をご覧ください。

自動スケーリング ポリシー

グループに自動スケーリング ポリシーを定義する場合、オートスケーラーがグループのスケーリングに使用するシグナルを 1 つ以上指定します。ポリシーで複数のシグナルを設定すると、オートスケーラーは、各シグナルの推奨 VM 数を計算し、グループの推奨サイズを最大数に設定します。

以下のセクションでは、ターゲット使用率の指標に基づくシグナルの概要と、スケジュールに基づくシグナルについて説明します。

目標使用率の指標

インスタンス グループの負荷を反映する以下の指標に基づいて自動スケーリングできます。

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

オートスケーラーは、選択された使用率の指標に基づいて使用状況情報を継続的に収集して、実際の使用率と目標使用率を比較し、その情報を使ってグループでインスタンスの削除(スケールイン)、追加(スケールアウト)のいずれが必要であるかを決定します。

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

目標使用率の指標に基づくスケーリングの詳細については、次のページをご覧ください。

スケジュール

スケジュール ベースの自動スケーリングを使用すると、予想される負荷に対して容量を割り当てることができます。インスタンス グループごとに最大 128 のスケーリング スケジュールを設定できます。スケーリング スケジュールごとに次の項目を指定します。

  • 容量: 最低限必要な VM インスタンス
  • スケジュール: 開始時間、期間、繰り返し(例: 1 回のみ、毎日、毎週、毎月)

スケーリング スケジュールは、構成された開始時刻から期間が終了するまでアクティブになります。この間、オートスケーラーはスケーリング スケジュールで定義された数のインスタンス数を持つようにグループをスケーリングします。

詳しくは、スケジュールに基づくスケーリングをご覧ください。

クールダウン期間

クールダウン期間は、アプリケーションの初期化期間とも呼ばれます。アプリケーションがインスタンスで初期化されている間に、インスタンスの使用状況は通常の状況を反映していない可能性があります。オートスケーラーは、次の方法でクールダウン期間を使用してスケーリングを決定します。

  • スケールインを判断する場合、クールダウン期間中であっても、オートスケーラーはすべてのインスタンスの使用状況データを使用します。すべてのインスタンスの平均使用率がターゲット使用率を下回っている場合、オートスケーラーはインスタンスの削除を推奨します。
  • スケールアウトを判断する場合、オートスケーラーはクールダウン期間中のインスタンスの使用状況データを無視します。
  • 予測モードを有効にすると、クールダウン期間により、予測される負荷が発生する前に予測オートスケーラーがスケールアウトされます。これにより、アプリケーションは負荷が発生したときに初期化されます。たとえば、クールダウン期間を 300 秒に設定した場合、予測オートスケーラーは予測負荷の 5 分前に VM を作成します。

クールダウン期間として、インスタンスでアプリケーションの初期化に要する時間を指定します。デフォルトのクールダウン期間は 60 秒です。

実際の初期化時間は、さまざまな要因によって異なります。アプリケーションの初期化にかかる時間をテストすることをおすすめします。そのためには、インスタンスを作成し、インスタンスが RUNNING ステータスになってからアプリケーションの準備が完了するまでの起動プロセスの時間を測定します。

インスタンスの初期化に要する時間よりも大幅に長いクールダウン期間の値を設定すると、オートスケーラーが適正な使用率データを無視してしまう可能性があります。その結果、グループの必要なサイズが過小評価され、スケールアウトの遅延が生じることがあります。

安定化期間

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

安定化期間を使用することで、オートスケーラーはマネージド インスタンス グループの推奨サイズが常に過去 10 分間に観測されたピーク負荷に十分に対応できるようにします。

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

自動スケーリング モード

オートスケーラーによる操作が行われない状態でグループを調査または構成する必要がある場合は、一時的に自動スケーリング アクティビティを無効化または制限できます。無効になっている間や制限されている間もオートスケーラーの構成は保持され、再び有効にするか、制限を解除すると、すべての自動スケーリング アクティビティが再開されます。

予測オートスケーリング

可用性の目的で MIG を最適化するために予測自動スケーリングを有効にすると、オートスケーラーは過去のデータに基づいて予測し、予測される負荷の前に MIG をスケールアウトします。これにより、負荷が発生したときに新しいインスタンスがサービスを提供できるようになります。

予測自動スケーリングは、ワークロードが次の基準を満たしている場合に最適に機能します。

  • アプリケーションの初期化には時間がかかります。たとえば、クールダウン期間を構成する場合は、2 分を超えます。
  • ワークロードは、日単位または週単位のサイクルによって変動すると予測されます。

詳細については、予測自動スケーリングの使用をご覧ください。

スケールインの制御

ワークロードの初期化に時間がかかる場合(インストール タスクが長いなど)、スケールイン制御を構成することで、急激なスケールイン イベントによるレスポンスのレイテンシのリスクを軽減できます。具体的には、負荷が減少した直後に急増が予想される場合が該当します。このような場合には、スケールイン レートを制限して、自動スケーリングがワークロードの許容範囲を超える VM インスタンスを割り当てて MIG のサイズを縮小させないようにします。

スケールアウト時に負荷の急増に対応するのに十分な速さでアプリケーションを初期化する場合は、スケールイン管理を構成する必要はありません。

スケールイン管理を構成するには、自動スケーリング ポリシーの次のプロパティを構成します。

  • 最大許容削減数。指定された後続の時間枠内でワークロードが(ピークサイズから)失っても差し支えがない VM インスタンスの数。このパラメータを使用すると、より多くのインスタンスが処理を開始するまで、想定される負荷の急増に対応できるように、グループのスケーリング範囲を制限できます。最大許容削減値を小さく設定すると、グループのスケールインの時間が長くなります。

  • 後続の時間枠。オートスケーラーによるワークロードに必要なピークサイズのモニタリング履歴。オートスケーラーでは、当該期間中に観察されたピークサイズから最大許容削減数を差し引いた値より小さいサイズには変更されません。このパラメータを使用すると、オートスケーラーがインスタンスから最大許容削減数で定義した分を削除するまでの待機時間を定義できます。オートスケーラーは、後続の時間枠が長くなるほど、ピーク時の履歴を考慮して、スケールインをより慎重かつ安定的に行います。

詳細については、スケールイン管理の構成オートスケーラーの決定についてをご覧ください。

推奨グループサイズは、マネージド インスタンス グループが保持する必要があるオートスケーラーの VM の推奨数で、直近 10 分間に観察されたピーク負荷に基づいています。この直近 10 分間は、安定化期間と呼ばれます。推奨サイズは常に再計算されます。スケールインの制御を使用して自動スケーリング ポリシーを設定した場合、推奨サイズはスケールインの制御によって制限されます。

料金

自動スケーリング ポリシーの構成に対して追加料金は発生しません。オートスケーラーは VM インスタンスを動的に追加または削除するため、MIG が使用するリソースに対してのみ課金されます。自動スケーリング ポリシーでインスタンスの最小数と最大数を構成することで、リソースの費用を制御できます。Compute Engine の料金については、料金をご覧ください。

次のステップ

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

  3. オートスケーラーを管理します。たとえば、オートスケーラーに関する情報の取得、スケールイン管理の構成、オートスケーラーの一時的な制限などです。