🐻‍❄️

AppServiceにスケーリング設定をしたい!

2024/03/12に公開

はじめに

AzureのAppServiceプランで、WebAppsでWebアプリケーションを稼働させています。
Webアプリケーションの利用者が増え、かつ利用時間によってアクセス数が増減する場合、AppServiceプランのスケーリング設定をしなければなりません。

スケーリングの種類

スケーリングには、垂直方向のスケーリングと水平方向のスケーリングがあります。

  • 垂直方向のスケーリングは、AppServiceプランのサイズを変更することで、インスタンスの能力を増減させることを指します。
  • 水平方向のスケーリングは、インスタンスの数を増減させることを指します。

垂直方向のスケーリング

AppServiceでは、垂直方向のスケーリングをすることはできません。AppServiceに設定したサイズで稼働することになります。
https://learn.microsoft.com/ja-jp/azure/app-service/manage-scale-up

水平方向のスケーリング

水平方向のスケーリングには、手動設定と自動設定(Preview)とルールベースのスケーリングの3種類があります。

  • 自動設定(Preview)の公式ページはこちら

https://learn.microsoft.com/ja-jp/azure/app-service/manage-automatic-scaling?tabs=azure-portal

  • ルールベースのスケーリングの公式ページはこちら

https://learn.microsoft.com/ja-jp/azure/azure-monitor/autoscale/autoscale-get-started?toc=%2Fazure%2Fapp-service%2Ftoc.json

今回はルールベースのスケーリングを設定します。

水平方向のスケーリング設定

スケールアウトをする条件と、スケールインする条件を決めます。
今回は、CPU使用率とMemory使用率を監視します。

条件 増減数
スケールアウト CPU使用率が80%を超える または Memory使用率が80%を超える インスタンス数を 1 増やす
スケールイン CPU使用率が40%を下回る かつ Memory使用率が40%を下回る インスタンス数を 1 減らす

また、何らかが原因で無尽蔵にスケールアウトすることを防ぐために、最大インスタンス数と最小インスタンス数を設定します。

最大インスタンス数 最小インスタンス数
10 1

スケーリング設定手順

  1. まず、AppServiceプランの「スケールアウト」を選択します。
  2. Scale out methodを「Rule Based」に設定し、「Manage rules based scaling」のリンクをクリックします。
  3. リソースをスケーリングする方法を「カスタム自動スケーリング」に設定します。
  4. スケールモードを「メトリックに基づいてスケーリングする」に設定し、インスタンスの制限(最小値、最大値、デフォルト値)を設定します。

スケールアウトルールの追加

  1. 「規則を追加する」を選択します。
  2. CPU使用率のスケールアウトのルールを設定し、「追加」をクリックします。
    変更した箇所
    • メトリック名: CPU Percentage
    • スケール操作をトリガーするメトリックのしきい値:80%

      ※期間「10分」はデフォルト値です。この設定の場合、10分間の平均CPU使用率が80%を超えた場合にスケールアウトします。
      ※クールダウン「5分」はデフォルト値です。この設定の場合、スケールアウト後の5分間はスケールアウトしないようにします。この設定によってスケールアウト/スケールインの頻発を防ぐことができます。
  3. 「規則を追加する」をクリックします。
  4. Memory使用率のスケールアウトルールを設定し、「追加」をクリックします。
    変更した箇所
    • メトリック名: Memory Percentage
    • スケール操作をトリガーするメトリックのしきい値:80%

スケールインルールの追加

  1. 「規則を追加する」を選択します。
  2. CPU使用率のスケールインのルールを設定し、「追加」をクリックします。
    変更した箇所
    • メトリック名: CPU Percentage
    • 演算子: 次の値より小さい
    • スケール操作をトリガーするメトリックのしきい値:40%
    • 操作:カウントを減らす量
  3. 「規則を追加する」をクリックします。
  4. Memory使用率のスケールインのルールを設定し、「追加」をクリックします。
    変更した箇所
    • メトリック名: Memory Percentage
    • 演算子: 次の値より小さい
    • スケール操作をトリガーするメトリックのしきい値:40%
    • 操作:カウントを減らす量

最後に「保存」をクリックし、スケーリング設定完了です。

まとめ

AppServiceプランのルールベースのスケーリング設定を行いました。
ルールベースではなく、自動スケーリングがプレビュー段階の機能としてリリースされています。

自動スケーリングを使うシーンは以下のシーンです。

  • HTTPトラフィックに基づくスケールアウト/スケールイン
  • スケジュールベースのスケールアウト/スケールイン

また、自動スケーリングはコールドスタートではなく、事前にウォームアップされたインスタンスが用意されるため、レスポンス時間が短縮されます。
現段階では、要件に応じて使い分けが必要なようです。

Discussion