アプリケーションへのトラフィックが変動する場合、インスタンス数を固定すると、トラフィックが少ない期間にはリソースの無駄遣いが生じ、トラフィックスパイク時にはパフォーマンスが低下する可能性があります。Enterprise Distributed Application Service (EDAS) のオートスケーリング機能は、インスタンスレベルのメトリックを監視し、需要に合わせてインスタンスを自動的に追加または削除することで、アイドル状態のリソースコストを最小限に抑えながら、応答時間を安定させます。Alibaba Group が「独身の日」のセールで使用するトラフィックフラッド管理技術を基盤として構築された EDAS は、数秒以内にオートスケーリングを実行します。
オートスケーリングの仕組み
オートスケーリングは、ECS クラスター にデプロイされたアプリケーションに適用されます。EDAS は、以下のメトリックを 1 分に 1 回評価し、しきい値が一定期間を超えて継続した場合にスケールアウトまたはスケールインのイベントをトリガーします。
| メトリック | 測定内容 | 値の形式 |
|---|---|---|
| CPU | インスタンスの CPU 使用率 | パーセンテージ |
| RT | リクエストごとの応答時間 | ミリ秒 |
| ロード | インスタンスのシステムロード | 正の整数 |
スケーリングの動作:
単一インスタンス環境 -- オートスケーリングにより、1 つのインスタンスが常に実行され続けます。
複数インスタンス環境 -- EDAS は、設定したスケーリングルールとメトリック値に基づいてインスタンスを追加または削除します。
スケールアウトとスケールインには、それぞれ個別のルールを設定します。各ルールでは、監視するメトリック、アクションが実行されるまでにしきい値を超えなければならない期間、および追加または削除するインスタンス数を指定します。
スケールインとスケールアウトの両方のルールを設定する場合、スケールインルールのメトリック値がスケールアウトルールのメトリック値より大きくならないようにしてください。そうしないと、[保存] をクリックしたときにエラーが発生します。
スケールイン中、弾性リソースから作成されたインスタンスが最初にリリースされます。
オートスケーリングルールの設定
以下の手順では、スケールアウトルールの設定について説明します。スケールインルールも同様に、より低いしきい値で設定します。
EDAS コンソールにログインします。
左側のナビゲーションウィンドウで、[アプリケーション管理] > [アプリケーション] を選択します。
上部のナビゲーションバーで、アプリケーションが存在するリージョンを選択します。[アプリケーション] ページの上部で、[マイクロサービス名前空間] ドロップダウンリストからマイクロサービス名前空間を選択し、アプリケーション名をクリックします。
アプリケーション詳細ページの左側のナビゲーションウィンドウで、[オートスケーリング] をクリックします。
スケールアウトルール セクションの右上隅にあるスイッチをオンにして、ルールを有効にします。
以下の表で説明されているルールパラメーターを設定し、Auto Scaling ページの左下隅にある [保存] をクリックします。
トリガーメトリックと条件
[トリガー メトリクス] で [CPU]、[RT]、および [負荷] のしきい値を設定し、スケーリングのトリガーをいつ実行するかを選択します。
| パラメーター | 説明 |
|---|---|
| トリガー条件 | いずれか 1 つのメトリックがしきい値を超えたときにスケーリングをトリガーするには [いずれかのメトリック] を選択し、すべてのメトリックが同時にしきい値を超えた場合にのみトリガーするには [すべてのメトリック] を選択します。 |
| 次の期間を超えて継続 | スケーリングがトリガーされる前に、平均メトリック値がしきい値を超えなければならない持続時間 (分単位)。EDAS はメトリックを 1 分に 1 回評価します。遅延の影響を受けやすいサービスには短い持続時間を設定し、短期的なスパイクを許容できるワークロードには長い持続時間を設定します。 |
アプリケーションソース
スケールアウト時に新しいインスタンスをどこから取得するかを選択します。
| オプション | 動作 |
|---|---|
| 既存リソース | クラスター内のアイドル状態の Elastic Compute Service (ECS) インスタンスを使用します。利用可能なアイドルインスタンスが必要数より少ない場合、EDAS は利用可能な数だけスケールアウトします。 |
| 弾性リソース | 既存の仕様または起動テンプレートに基づいて新しい ECS インスタンスを購入し、クラスターに追加します。以下の表で弾性リソースのパラメーターを設定します。 |
| 既存リソースを優先 | 最初にアイドル状態のインスタンスを使用します。アイドルインスタンスが不足している場合は、追加のインスタンスを自動的に購入します。 |
弾性リソースのパラメーター
アプリケーションソースとして [弾性リソース] または [既存リソースを優先] を選択した場合は、次のパラメーターを設定します。
| パラメーター | 説明 |
|---|---|
| 作成方法 | [既存のインスタンス仕様に基づいて購入]:クラスター内の既存の仕様に一致するインスタンスを購入します。[インスタンス起動テンプレートに基づいて購入]:ECS コンソールで作成された起動テンプレートに基づいてインスタンスを購入します。 |
| テンプレートホスト または 起動テンプレート | 選択した作成方法に基づいて表示されます。既存のインスタンス仕様セット ([テンプレートホスト] の場合) または起動テンプレート ([起動テンプレート] の場合) を選択します。 |
| パスワード | [既存のインスタンス仕様に基づいて購入] を選択した場合に必要です。新しいインスタンスのログインキーペアを選択します。 |
| 利用規約 | 続行するには、[Elastic Compute Service 利用規約 | イメージの利用規約] を選択します。 |
インスタンス制限
| パラメーター | 説明 |
|---|---|
| スケールアウトごとに増やすインスタンス数 | スケールアウトがトリガーされるたびに追加されるインスタンスの数です。 |
| グループ内の最大インスタンス数 | インスタンスの総数の上限です。この制限に達すると、スケールアウトはトリガーされません。リソースの予算に基づいて設定してください。 |
オートスケーリング結果の確認
スケールアウトまたはスケールインがトリガーされた後、ルールが有効になったことを確認します。
インスタンス数の確認 -- アプリケーションの [基本情報] ページを開きます。実行中のインスタンス数が期待どおりに増加 (スケールアウト) または減少 (スケールイン) したことを確認します。
変更履歴の確認 -- アプリケーション詳細ページの左側のナビゲーションウィンドウで、[変更履歴] をクリックします。次の値を持つレコードを探します。
フィールド 期待値 変更タイプ [スケールアウト] または [アプリケーションのスケールイン] ソース [auto_scale] [表示] を [操作] 列でクリックすると、変更の詳細をすべて表示できます。
設定した持続時間が経過してもインスタンス数が変わらない場合は、メトリックのしきい値と [次の期間を超えて継続] の値が実際のワークロードと一致していることを確認してください。また、スケールアウトに十分なアイドルインスタンスが利用可能であることも確認してください。