オートスケーラーによる判断の理解

自動スケーリングでは、マネージド インスタンス グループのスケーリングがユーザーに代わって自動的に実行されます。このドキュメントを読むと、オートスケーラーがマネージド インスタンス グループをスケーリングする際に行う判断について理解できます。

目標と実際の使用率のギャップ

自動スケーリングの処理時に、小規模なインスタンス グループではインスタンス グループの実際の使用率と目標使用率がかけ離れていることがあります。これは、オートスケーラーが、使用率データの解釈時や、追加または削除するインスタンス数の判断時に、値を切り上げまたは切り捨てることによって常に余裕を持つように動作するためです。そうすることで、オートスケーラーがリソースを追加するときに数が不足していたり、必要以上の数のリソースを削除したりすることは回避されます。

たとえば、目標使用率を 0.7 に設定していて、アプリケーションがその目標使用率を超えている場合、オートスケーラーは使用率を 0.7 前後に減らすために 1.5 台の仮想マシンの追加が必要と判断したとします。1.5 台の仮想マシンを追加することはできないため、オートスケーラーはその値を切り上げて 2 台の仮想マシンを追加します。これにより平均 CPU 使用率が 0.7 の値を下回っても、アプリケーションには十分なリソースが提供されます。

同様に、オートスケーラーが、使用率を 0.7 前後に増やすために 1.5 台の仮想マシンの削除が必要と判断した場合、1 台の仮想マシンだけを削除することになります。

より多くの仮想マシンがある大規模なグループでは、使用率は多数のインスタンスで分配されるため、仮想マシンの追加または削除によって、実際の使用率と目標使用率とのギャップは小さくなります。

スケールダウンの遅延

スケールダウンに関連して、オートスケーラーは仮想マシン インスタンスの直近 10 分間の使用状況を考慮して、どのようにスケールするかを判断します。直近 10 分間の使用状況を使用することにより、次のことが可能になります。

  • インスタンス グループから収集した情報が安定していることを確認できます。
  • オートスケーラーが連続して頻繁にインスタンスを追加または削除することを回避できます。
  • オートスケーラーはインスタンスを削除しても安全であることを判断できます。オートスケーラーは、直近 10 分間の負荷に小規模なグループサイズで対応できると判断した場合にのみ、インスタンスを削除します。

この 10 分間の遅延は、スケールダウンの遅延に見えることがありますが、実際にはオートスケーラーの組み込み機能です。この遅延によって、マネージド インスタンス グループに仮想マシンの新規インスタンスが追加された場合、そのインスタンスが終了の対象となるまでに 10 分間以上実行されることになります。

グループをスケールダウンするかどうかの判断時には、新規インスタンスに対するクールダウン期間は無視されます。

遅延の原因となる接続ドレイン

グループが属するバックエンド サービス接続ドレインが有効になっていると、接続ドレインの期間が経過してから VM インスタンスが削除されるまでに 60 秒ほどかかる場合があります。

インスタンス終了の準備

オートスケーラーは、スケールダウンの際に、シャットダウンする必要がある仮想マシンの数を決定し、インスタンス グループの中で使用率が低い仮想マシン インスタンスを選択して終了させます。インスタンスを終了する前に、そのインスタンスで特定のタスク(既存の接続の終了、アプリケーションやアプリケーション サーバーの正常なシャットダウン、ログのアップロード、など)が確実に実行されるようにしたい場合があります。シャットダウン スクリプトを使用すると、それらのタスクを実行するようにインスタンスに指示できます。

シャットダウン スクリプトは、終了リクエストの発行からインスタンスの実際の終了までの短い期間にベスト エフォート型で実行されます。この期間中に、Compute Engine はシャットダウン スクリプトを実行して、スクリプトで指定されたタスクを実行しようとします。

これは、マネージド インスタンス グループで負荷分散を使用している場合に特に役に立ちます。インスタンスが正常でない状態になった場合、そのインスタンスが正常でないことをロードバランサが認識するまでに時間がかかることがあるために、ロードバランサはそのインスタンスに新しいリクエストを送信し続けることがあります。シャットダウン スクリプトを使用すれば、そのインスタンスはシャットダウン時に正常でないことを報告できるため、ロードバランサはそのインスタンスへのトラフィックの送信を停止できます。詳細については、負荷分散のドキュメントにある正常でないインスタンスの処理をご覧ください。

シャットダウン スクリプトの詳細については、シャットダウン スクリプトをご覧ください。

インスタンスのシャットダウンの詳細については、インスタンスの停止、削除をご覧ください。

CPU 使用率の自動スケーリング グラフの表示

CPU 使用率に基づいて自動スケーリングされるマネージド インスタンス グループがある場合、Compute Engine に任意の時点における CPU 使用率の合計と自動スケーリングされたインスタンス数を追跡する自動スケーリング グラフが用意されています。このグラフは Google Cloud Platform Console でアクセスできます。

  1. GCP Console の [インスタンス グループ] ページに移動します。

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

  2. 表示する自動スケーリングされたマネージド インスタンス グループの名前をクリックします。このグループは、CPU 使用率に基づく自動スケーリングを使用している必要があります(他の自動スケーリング指標はまだサポートされていません)。
  3. マネージド インスタンス グループの詳細ページで、[メンバー] タブを選択します(選択されていない場合)。

    [メンバー] タブのスクリーンショット

  4. プルダウン メニューで [自動スケーリングされたサイズ] が選択されていることを確認します。

グラフは CPU 使用率でのインスタンス数を示します。次の情報を利用してグラフを確認してください。

  • 青色の線は、マネージド インスタンス グループのインスタンス数を示します。
  • 暗緑色の線は、そのグループの合計 CPU 使用率を示します。
  • 薄緑色の網掛け部分は、マネージド インスタンス グループの使用可能な残りの容量を示します。薄緑色の網掛け部分が大きく、暗緑色の線よりも高い場合は、使用可能な容量が大量にあり、VM インスタンスが十分に使われていない可能性があります。薄緑色の網掛け部分が小さい、あるいはない場合は、残りの容量があるとしても非常に少なく、さらにインスタンスをインスタンス グループに追加する必要があります。

  • 容量が低下すると、インスタンス グループのサイズが減少するため、青色の線も降下すると考えられます。同様に、容量が上昇すると、インスタンス グループのサイズも増加すると考えられます。

たとえば、次のグラフは、自動スケーリングされるマネージド インスタンス グループが容量に達する様子をとらえたものです。これにより、オートスケーラーは VM インスタンスをさらにそのグループに追加し、そのグループの容量が増加します。

自動スケーリング グラフのスクリーンショット

ステータス メッセージの表示

オートスケーラーでスケーリングの問題が発生した場合、警告またはエラー メッセージが返されます。これらのステータス メッセージは、次の 2 つの方法のいずれかにより確認できます。

[インスタンス グループ] ページでステータス メッセージを表示する

Google Cloud Platform Console の [インスタンス グループ] ページで、ステータス メッセージを直接表示できます。

  1. Google Cloud Platform Console の [インスタンス グループ] ページに移動します。

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

  2. 注意アイコン ! の表示されているインスタンス グループを探します。次に例を示します。

    [インスタンス グループ] ページでのステータス メッセージのスクリーンショット

  3. ステータス アイコンの上にカーソルを置くと、ステータス メッセージの詳細が表示されます。

[インスタンス グループの詳細] ページでステータス メッセージを表示する

特定のインスタンス グループの詳細ページに直接移動することにより、関連するステータス メッセージを表示できます。

  1. Google Cloud Platform Console の [インスタンス グループ] ページに移動します。

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

  2. ステータス メッセージを表示するインスタンス グループをクリックします。
  3. 詳細ページの [メンバー] タブでステータス メッセージを確認します。次に例を示します。

    [インスタンス グループの詳細] ページでのステータス メッセージのスクリーンショット

よく返されるステータス メッセージ

オートスケーラーでスケーリングの問題が発生した場合、警告またはエラー メッセージが返されます。以下に、よく返されるメッセージとその意味を示します。

All instances in the instance group are unhealthy (not in RUNNING state). If this is an error, check the instances.

インスタンス グループ内のすべてのインスタンスは RUNNING 以外の状態になっています。これが意図している状態である場合は、このメッセージを無視できます。意図している状態ではない場合は、インスタンス グループのトラブルシューティングを行ってください。

The number of instances has reached the maxNumReplicas. The Autoscaler cannot add more instances.

オートスケーラーを作成したときに、インスタンス グループが維持できるインスタンスの最大数を指定しています。オートスケーラーは現在、需要を満たすためにインスタンス グループのサイズの拡大を試行していますが、maxNumReplicas に達しました。maxNumReplicas をより大きい数に更新するには、オートスケーラーの更新をご覧ください。

The monitoring metric that was specified does not exist or does not have the required labels. Check the metric.

Stackdriver 指標を使用して自動スケーリングを行っていますが、指定した指標が存在しないか、必要なラベルが欠如しています。標準指標またはカスタム指標のどちらを使用するかに応じて、必要なラベルが異なります。詳細については、Stackdriver Monitoring 指標に基づくスケーリングのドキュメントをご覧ください。

Quota for some resources is exceeded. Increase the quota or delete resources to free up more quota.

Google Cloud Platform Console の割り当てページで使用可能な割り当てについての情報を確認できます。

Autoscaling does not work with an HTTP/S load balancer configured for maxRate.

インスタンス グループが maxRate の構成を使用して負荷分散されていますが、オートスケーラーがこのモードをサポートしていません。構成を変更するか、自動スケーリングを無効にします。maxRate の詳細については、負荷分散のドキュメントの制限とガイドラインをご覧ください。

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

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

Compute Engine ドキュメント