演習 - 自動スケーリング ルール
この演習では、サンプル アプリケーションの自動スケーリングを設定してトリガーする演習について説明します。
ルールの演習
サンプルの Azure Spring Apps アプリケーションでは、アプリケーションを作成したときに、顧客サービス マイクロサービスでスケールアウト アクションがトリガーされています。
顧客サービス アプリでは、tomcat 要求数が平均で 1 分あたり 10 セッションを超えたときにスケールアウトします。 自動スケーリングがトリガーされた後、要求数が平均で 1 分あたり 10 セッション以下の場合はスケールインします。
Azure portal で自動スケーリング設定を表示する
- 新しい Web ブラウザー タブで、Azure portal を開きます。
- 上部の検索ボックスから Azure Spring Apps を探します。
- Azure Spring Apps の [概要] ページで、ご自分の Azure Spring Apps インスタンスを結果から選択します。
- 左側のナビゲーション ペインのメニューにある [設定] の [アプリ] タブを選択します。
- 顧客サービス アプリケーションを選択します。 アプリケーションの [概要] ページが表示されます。
- ページの左側にあるメニューで、[設定] の下にある [スケールアウト] タブに移動します。
自動スケーリングの要求管理には、次の 2 つのオプションがあります。
- 手動スケーリング: 固定のインスタンス数を維持します。 Standard レベルでは、最大 500 インスタンスにスケールアウトできます。 この値は、マイクロサービス アプリケーションの個別の実行インスタンスの数を変更します。
- カスタム自動スケーリング: 任意のメトリックに基づき、任意のスケジュールでスケーリングします。
Azure portal で、アプリケーションの事前設定構成を表示します。 次の図は、tomcat 要求数でスケーリングするように構成されたカスタム自動スケーリングを示しています。
完了した自動スケーリング イベントの表示
[スケールアウト] 設定画面で、[実行履歴] タブに移動して、最新のスケール アクションを表示します。 このタブには、観測容量の時間の経過に伴う変化を示すグラフと、すべての自動スケーリング アクションのログが表示されます。
スクリプトを使用してスケールアウト アクションをトリガーする
自動スケーリングは、Web ブラウザーまたはシェル スクリプトを使用して手動でトリガーすることもできます。
自動スケーリング ルールをテストするために、インスタンスに負荷を生成します。 このシミュレートされた負荷により、自動スケーリング ルールでスケールアウトされ、インスタンスの数が増加します。 次にシミュレートされた負荷が停止すると、自動スケーリング ルールでスケールインされ、インスタンスの数が減少します。
自動スケーリングをトリガーできるように、Azure Spring Apps アプリケーションの作成に使用したのと同じ Git リポジトリにシェル スクリプトを用意しています。
https://shell.azure.com bash ウィンドウで次のコマンドを実行して、Spring Apps サービスのインスタンス名を設定します。 前の演習で使用したのと同じ Azure Spring Apps サービス名を使用します。
export SPRING_APPS_SERVICE=<spring-apps-instance-name>
次に、bash ウィンドウで次のコマンドを実行して、Spring Apps "顧客サービス" マイクロサービスに対してトランザクションを実行します。
cd mslearn-autoscale-java sh loadTest.sh
インスタンスに 100 件の要求を送信する "顧客サービス" ロード テストの出力が表示されます。
Web ブラウザーを使用して手動でスケールアウト アクションをトリガーする (省略可能)
作成した自動スケーリング設定でスケールアウト条件を手動でトリガーするには、"顧客サービス" マイクロサービスで 1 分未満に 10 件を超える要求が必要です。
新しいブラウザー ウィンドウを開き、"顧客サービス" マイクロサービスに移動します。
https://<your-spring-apps-service>-api-gateway.azuremicroservices.io/api/customer/owners
立て続けにページを 11 回以上再読み込みします。
スケールアウト アクションの表示
元のブラウザー ウィンドウに戻り、自動スケーリング設定で [実行履歴] タブを選択します。
インスタンス数を反映したグラフが表示されます。
数分後に、インスタンス数が 1 から 2 に増加します。
グラフの下に、この自動スケーリング設定によって実行された各スケール アクションのアクティビティ ログ エントリが表示されます。
スケールイン アクション
自動スケーリング設定のスケールイン条件は、"顧客サービス" マイクロサービスに対する要求が 1 分間に 10 件以下の場合にトリガーされます。
"顧客サービス" マイクロサービスに要求が送信されておらず、アプリとサービスのブラウザー ウィンドウが閉じているようにします。
インスタンス数を確認します。 数分後に、インスタンス数が 2 から 1 に減る "可能性があります" (以下の重要ポイントを参照)。
重要
自動スケーリングではスケーリング後の最終状態を推定しようとするため、Azure Spring Apps がスケーリングされない可能性があります。 つまり、平均の tomcat 要求数が同じままであるか、わずかに減少しただけでも、自動スケーリングによって即座に再スケーリングされる必要があるということです。