演習 - 自動スケーリング ルール

完了

この演習では、サンプル アプリケーションの自動スケーリングを設定してトリガーする演習について説明します。

ルールの演習

サンプルの Azure Spring Apps アプリケーションでは、アプリケーションを作成したときに、顧客サービス マイクロサービスでスケールアウト アクションがトリガーされています。

顧客サービス アプリでは、tomcat 要求数が平均で 1 分あたり 10 セッションを超えたときにスケールアウトします。 自動スケーリングがトリガーされた後、要求数が平均で 1 分あたり 10 セッション以下の場合はスケールインします。

Azure portal で自動スケーリング設定を表示する

  1. 新しい Web ブラウザー タブで、Azure portal を開きます。
  2. 上部の検索ボックスから Azure Spring Apps を探します。
  3. Azure Spring Apps の [概要] ページで、ご自分の Azure Spring Apps インスタンスを結果から選択します。
  4. 左側のナビゲーション ペインのメニューにある [設定][アプリ] タブを選択します。
  5. 顧客サービス アプリケーションを選択します。 アプリケーションの [概要] ページが表示されます。
  6. ページの左側にあるメニューで、[設定] の下にある [スケールアウト] タブに移動します。

Azure portal の [スケールアウト] 設定のスクリーンショット。

自動スケーリングの要求管理には、次の 2 つのオプションがあります。

  1. 手動スケーリング: 固定のインスタンス数を維持します。 Standard レベルでは、最大 500 インスタンスにスケールアウトできます。 この値は、マイクロサービス アプリケーションの個別の実行インスタンスの数を変更します。
  2. カスタム自動スケーリング: 任意のメトリックに基づき、任意のスケジュールでスケーリングします。

Azure portal で、アプリケーションの事前設定構成を表示します。 次の図は、tomcat 要求数でスケーリングするように構成されたカスタム自動スケーリングを示しています。

Azure portal のカスタム自動スケーリング構成のスクリーンショット。

完了した自動スケーリング イベントの表示

[スケールアウト] 設定画面で、[実行履歴] タブに移動して、最新のスケール アクションを表示します。 このタブには、観測容量の時間の経過に伴う変化を示すグラフと、すべての自動スケーリング アクションのログが表示されます。

Azure portal の自動スケーリングの実行履歴のスクリーンショット。

スクリプトを使用してスケールアウト アクションをトリガーする

自動スケーリングは、Web ブラウザーまたはシェル スクリプトを使用して手動でトリガーすることもできます。

自動スケーリング ルールをテストするために、インスタンスに負荷を生成します。 このシミュレートされた負荷により、自動スケーリング ルールでスケールアウトされ、インスタンスの数が増加します。 次にシミュレートされた負荷が停止すると、自動スケーリング ルールでスケールインされ、インスタンスの数が減少します。

自動スケーリングをトリガーできるように、Azure Spring Apps アプリケーションの作成に使用したのと同じ Git リポジトリにシェル スクリプトを用意しています。

  1. https://shell.azure.com bash ウィンドウで次のコマンドを実行して、Spring Apps サービスのインスタンス名を設定します。 前の演習で使用したのと同じ Azure Spring Apps サービス名を使用します。

    export SPRING_APPS_SERVICE=<spring-apps-instance-name>
    
  2. 次に、bash ウィンドウで次のコマンドを実行して、Spring Apps "顧客サービス" マイクロサービスに対してトランザクションを実行します。

    cd mslearn-autoscale-java
    sh loadTest.sh
    
  3. インスタンスに 100 件の要求を送信する "顧客サービス" ロード テストの出力が表示されます。

Web ブラウザーを使用して手動でスケールアウト アクションをトリガーする (省略可能)

作成した自動スケーリング設定でスケールアウト条件を手動でトリガーするには、"顧客サービス" マイクロサービスで 1 分未満に 10 件を超える要求が必要です。

  1. 新しいブラウザー ウィンドウを開き、"顧客サービス" マイクロサービスに移動します。

    https://<your-spring-apps-service>-api-gateway.azuremicroservices.io/api/customer/owners
    
  2. 立て続けにページを 11 回以上再読み込みします。

スケールアウト アクションの表示

  1. 元のブラウザー ウィンドウに戻り、自動スケーリング設定で [実行履歴] タブを選択します。

  2. インスタンス数を反映したグラフが表示されます。

  3. 数分後に、インスタンス数が 1 から 2 に増加します。

  4. グラフの下に、この自動スケーリング設定によって実行された各スケール アクションのアクティビティ ログ エントリが表示されます。

Azure portal の自動スケーリングのスケールアウト履歴のスクリーンショット。

スケールイン アクション

自動スケーリング設定のスケールイン条件は、"顧客サービス" マイクロサービスに対する要求が 1 分間に 10 件以下の場合にトリガーされます。

  1. "顧客サービス" マイクロサービスに要求が送信されておらず、アプリとサービスのブラウザー ウィンドウが閉じているようにします。

  2. インスタンス数を確認します。 数分後に、インスタンス数が 2 から 1 に減る "可能性があります" (以下の重要ポイントを参照)。

Azure portal の自動スケーリングのスケールイン アクションのスクリーンショット。

重要

自動スケーリングではスケーリング後の最終状態を推定しようとするため、Azure Spring Apps がスケーリングされない可能性があります。 つまり、平均の tomcat 要求数が同じままであるか、わずかに減少しただけでも、自動スケーリングによって即座に再スケーリングされる必要があるということです。