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

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

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

仕様

  • 自動スケーリングは、ゾーンとリージョンのマネージド インスタンス グループ(MIG)でのみ機能します。非マネージド インスタンス グループはサポートされません。
  • プロアクティブなインスタンスの再分配が無効にされている場合、リージョン 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 全体的の使用率から見るとインスタンスの追加が必要ない場合や、別のゾーンでインスタンスの追加が必要になっている場合に発生します。

基礎知識

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

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

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

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

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

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

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

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

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

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

クールダウン期間

インスタンスの初期化中は、その使用状況に関する情報が通常の状況を反映していないことがあり、使用状況に関する情報に基づくオートスケーラーの判断は信頼性に欠ける可能性があるため、初期化中のデータは除外することをおすすめします。インスタンスに初期化を完了させるためのクールダウン期間を指定します。クールダウン期間の経過後に、オートスケーラーはインスタンスからの使用状況に関する情報の収集を開始します。デフォルトのクールダウン期間は 60 秒です。

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

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

安定化期間

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

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

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

自動スケーリング モード

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

スケールインの制御

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

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

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

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

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

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

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

次のステップ

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

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