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

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

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

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

たとえば、目標使用率を 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 はシャットダウン スクリプトを実行して、スクリプトで指定されたタスクを実行しようとします。

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

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

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

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

自動スケーリングされているマネージド インスタンス グループがある場合、Compute Engine は、任意の時点での合計使用率と自動スケーリングされたインスタンスの数を示す自動スケーリング グラフを提供します。このグラフは 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 の詳細については、負荷分散のドキュメントの制限とガイドラインをご覧ください。
The autoscaler is configured to scale based on a load balancing signal but the instance group has not received any queries from the load balancer. Check that the load balancing configuration is working.
インスタンス グループは負荷分散されていますが、グループに受信クエリがありません。サービスがアイドル状態になっている可能性がありますが、その場合心配する必要はありません。ただし、このメッセージは構成ミスでも生じる可能性があります。たとえば、自動スケーリングされたインスタンス グループは、サポートされていない複数のロードバランサのターゲットになることがあります。ガイドラインの一覧については、負荷分散のドキュメントの制限とガイドラインをご覧ください。
このページは役立ちましたか?評価をお願いいたします。

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

Compute Engine ドキュメント