マネージド インスタンス グループ(MIG)には、負荷の増減に基づいて、MIG から仮想マシン(VM)インスタンスを自動的に追加または削除できる自動スケーリング機能が備わっています。自動スケーリングによって、トラフィックの増加をアプリで適切に処理できると同時に、リソースの必要性が低下した場合は費用を削減できます。自動スケーリングのポリシーを定義しておけば、オートスケーラーで測定した負荷に基づいて自動スケーリングが実行されます。
自動スケーリングでは、負荷が多くなると MIG に VM が追加され(スケールアウト、スケールアップとも呼ばれます)、VM の必要性が低下すると VM が削除されます(スケールインまたはスケールダウン)。
仕様
- 自動スケーリングは、ゾーンとリージョンのマネージド インスタンス グループ(MIG)でのみ機能します。非マネージド インスタンス グループはサポートされません。
リージョン MIG を自動スケーリングする場合は、次の制限が適用されます。
- グループのターゲット分配形態は
EVEN
に設定する必要があります。 - スケールインとスケールアウトを行うには、プロアクティブなインスタンスの再分散を有効にする必要があります。オートスケーラーのモードをスケールアウトのみに設定している場合は、プロアクティブなインスタンスの分散を有効にする必要はありません。
Cloud Monitoring の指標に基づいてリージョン 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 全体的の使用率から見るとインスタンスの追加が必要ない場合や、別のゾーンでインスタンスの追加が必要になっている場合に発生します。
基礎知識
自動スケーリングでは、以下の基本的な概念とサービスが使用されます。
マネージド インスタンス グループ
自動スケーリングはマネージド インスタンス グループ(MIG)の機能です。マネージド インスタンス グループは、共通のインスタンス テンプレートから作成されるコレクション仮想マシン(VM)インスタンスです。オートスケーラーは、マネージド インスタンス グループからインスタンスを追加または削除します。Compute Engine にはマネージド インスタンス グループと非マネージド インスタンス グループがありますが、オートスケーラーで使用できるのはマネージド インスタンス グループだけです。
マネージド インスタンス グループと非マネージド インスタンス グループの違いについては、インスタンス グループをご覧ください。
自動スケーリング ポリシー
オートスケーラーを作成するには、1 つ以上の自動スケーリング ポリシーを指定します。自動スケーリング ポリシーにより、オートスケーラーがインスタンス グループのスケーリング方法を決定する際に使用する入力を構成します。各自動スケーリング ポリシーは、目標使用率の指標または特定のスケジュールに従ってスケーリングできます。
このセクションでは、自動スケーリング ポリシーのさまざまなカテゴリの概要を説明します。すべてのポリシーの概要については、ポリシーをご覧ください。各ポリシーの詳細については、以下をご覧ください。
目標使用率の指標
指標ベースの自動スケーリング ポリシーは、インスタンス グループの負荷と容量を反映する指標に従ってスケーリングを行います。インスタンス グループは、次の 1 つ以上のポリシーを使用してスケーリングできます。
- 平均 CPU 使用率
- 使用率または 1 秒あたりのリクエスト数のいずれかに基づいた HTTP 負荷分散処理能力
- Cloud Monitoring の指標
オートスケーラーは、選択された使用率の指標に基づいて使用状況情報を継続的に収集して、実際の使用率と目標使用率を比較し、その情報を使ってグループでインスタンスの削除(スケールイン)、追加(スケールアウト)のいずれが必要であるかを決定します。
目標使用率レベルは、仮想マシン(VM)インスタンスで維持するレベルです。たとえば、CPU 使用率に基づいてスケーリングする場合、目標使用率レベルを 75% に設定すると、オートスケーラーは、指定されたインスタンス グループの CPU 使用率を 75% 前後で維持します。各指標の使用率レベルは、自動スケーリングのポリシーに基づいて、異なった方法で解釈されます。
スケジュール
スケジュール ベースの自動スケーリングを使用すると、予想される負荷に対して容量を割り当てることができます。インスタンス グループごとに最大 128 のスケーリング スケジュールを設定できます。スケーリング スケジュールごとに次の項目を指定します。
- 容量: 最低限必要な VM インスタンス
- スケジュール: 開始時間、期間、繰り返し(例: 1 回のみ、毎日、毎週、毎月)
スケーリング スケジュールは、構成された開始時刻から期間が終了するまでアクティブになります。この間、オートスケーラーはスケーリング スケジュールで定義された数のインスタンス数を持つようにグループをスケーリングします。
クールダウン期間
インスタンスの初期化中は、その使用状況に関する情報が通常の状況を反映していないことがあり、使用状況に関する情報に基づくオートスケーラーの判断は信頼性に欠ける可能性があるため、初期化中のデータは除外することをおすすめします。インスタンスに初期化を完了させるためのクールダウン期間を指定します。クールダウン期間の経過後に、オートスケーラーはインスタンスからの使用状況に関する情報の収集を開始します。デフォルトのクールダウン期間は 60 秒です。
実際の初期化時間は、さまざまな要因によって異なります。アプリケーションの初期化にかかる時間をテストすることをおすすめします。そのためには、インスタンスを作成し、インスタンスが RUNNING
ステータスになってからアプリケーションの準備が完了するまでの起動プロセスの時間を測定します。
インスタンスの初期化に要する時間よりも大幅に長いクールダウン期間の値を設定すると、オートスケーラーが適正な使用率データを無視してしまう可能性があります。その結果、グループの必要なサイズが過小評価され、スケールアウトの遅延が生じることがあります。
安定化期間
オートスケーラーはスケールインの目的で、直近の 10 分間におけるピーク負荷に基づいて適切なターゲット サイズを計算します。この直近 10 分間は、安定化期間と呼ばれます。
安定化期間を使用することで、オートスケーラーはマネージド インスタンス グループの推奨サイズが常に過去 10 分間に観測されたピーク負荷に十分に対応できるようにします。
この 10 分間の安定化期間は、スケールインの遅延のように見えることもありますが、実際には自動スケーリングの組み込み機能によるものです。この遅延により、サイズを小さくしたグループでも、直近 10 分間のピーク負荷に確実に対応できます。
自動スケーリング モード
オートスケーラーによる操作が行われない状態でグループを調査または構成する必要がある場合は、一時的に自動スケーリング アクティビティを無効化または制限できます。無効になっている間や制限されている間もオートスケーラーの構成は保持され、再び有効にするか、制限を解除すると、すべての自動スケーリング アクティビティが再開されます。
スケールインの制御
ワークロードの初期化に時間がかかる場合(インストール タスクが長いなど)、スケールイン制御を構成することで、急激なスケールイン イベントによるレスポンスのレイテンシのリスクを軽減できます。具体的には、負荷が減少した直後に急増が予想される場合が該当します。このような場合には、スケールイン レートを制限して、自動スケーリングがワークロードの許容範囲を超える VM インスタンスを割り当てて MIG のサイズを縮小させないようにします。
スケールアウト時に負荷の急増に対応するのに十分な速さでアプリケーションを初期化する場合は、スケールイン管理を構成する必要はありません。
スケールイン管理を構成するには、自動スケーリング ポリシーの次のプロパティを構成します。
最大許容削減数。指定された後続の時間枠内でワークロードが(ピークサイズから)失っても差し支えがない VM インスタンスの数。このパラメータを使用すると、より多くのインスタンスが処理を開始するまで、想定される負荷の急増に対応できるように、グループのスケーリング範囲を制限できます。最大許容削減値を小さく設定すると、グループのスケールインの時間が長くなります。
後続の時間枠。オートスケーラーによるワークロードに必要なピークサイズのモニタリング履歴。オートスケーラーでは、当該期間中に観察されたピークサイズから最大許容削減数を差し引いた値より小さいサイズには変更されません。このパラメータを使用すると、オートスケーラーがインスタンスから最大許容削減数で定義した分を削除するまでの待機時間を定義できます。オートスケーラーは、後続の時間枠が長くなるほど、ピーク時の履歴を考慮して、スケールインをより慎重かつ安定的に行います。
詳細については、スケールイン管理の構成とオートスケーラーの決定についてをご覧ください。
推奨されるサイズ
推奨グループサイズは、マネージド インスタンス グループが保持する必要があるオートスケーラーの VM の推奨数で、直近 10 分間に観察されたピーク負荷に基づいています。この直近 10 分間は、安定化期間と呼ばれます。推奨ターゲット サイズは、常に再計算されます。スケールインの制御を使用して自動スケーリング ポリシーを設定した場合、recommendedSize
はスケールインの制御によって制限されます。
次のステップ
- 既存の MIG がない場合は、マネージド インスタンス グループの作成方法を確認します。
オートスケーラーを作成します。
オートスケーラーを管理します。たとえば、オートスケーラーに関する情報の取得、スケールイン管理の構成、オートスケーラーの一時的な制限などです。