パブリック クラウド内のアプリケーション サーバの自動スケーリングは、リソース コストを抑えながらアプリケーションに柔軟性に優れたオンデマンド スケールを提供する一般的な設計の選択肢です。
NSX Advanced Load Balancer は、アプリケーションの負荷、接続などのメトリックに基づいて自動スケーリング機能を提供します。スケジュール設定されたスケーリング機能は、自動スケーリング機能を補完し、指定した期間内に確定的なキャパシティを提供します。
使用事例
スケジュール設定された自動スケーリングを使用すると、たとえば 2 か月間といった期間のポリシーを作成できます。この期間中、アプリケーションのキャパシティが指定された状態で維持され、メトリックベースの自動スケーリングをオーバーライドします。
この機能はこれらの期間中に確定的なキャパシティを提供するので、アプリケーション サーバは、メトリックベースの自動スケーリングが開始されるのを待つのではなく、すでにプロビジョニングされトラフィックに対応できる状態になります。これにより、アプリケーションのキャパシティが使用可能になるまでのリード タイムが短縮されます。
例
E コマース プロバイダは、受信トラフィック(1 秒あたりの接続数)に基づいてアプリケーション サーバをスケール アップ/ダウンするためにすでに自動スケーリング ポリシーを使用しています。
11 月から 1 月までのホリデー ショッピング シーズン中、同社は午後から真夜中までキャパシティが増えると予測しています。
スケジュール設定された自動スケーリング ポリシーを作成することで、アプリケーションのキャパシティを大きい値に維持できるため、アプリケーションの応答時間が最適になり、追加された負荷に対する遅延が発生しなくなります。
構成
スケジュール設定された自動スケーリングは、既存のサーバ自動スケール ポリシー内で構成され、プールに適用されます。
scheduled_scalings
構成には、次のサブパラメータがあります。
パラメータ |
値 |
注 |
---|---|---|
enable |
True/False |
スケジュール設定されたスケーリングを有効にするには True に設定します。 |
desired_capacity |
最大 1000 の値 |
スケジュールされた時間間隔中のサーバの希望数。入力した値に基づいてスケール インまたはスケール アウトが発生する可能性があります。 |
cron_expression |
cron のような式は、start_date と end_date の範囲に含める必要があります。分と時間の固定整数をサポートします。 |
ポリシーが autoscaling_duration 時間有効になっている cron のような式。 |
start_date |
ISO8601 形式の日付と時刻。 |
ISO8601 形式の日付と時刻。 |
end_date |
ISO8601 形式の日付と時刻。 |
スケジュール設定された自動スケーリングの終了日時。 |
autoscaling_duration |
整数、時間 |
cron 基準が満たされてからの期間(時間単位)で、希望するキャパシティが維持されます。 |
schedule_max_step |
整数 |
同時にスケールするサーバの数。プロビジョニングの高速化に役立ちます。自動スケール ポリシーの scaleout_cooldown パラメータは、連続するスケールアウト イベント間のクールダウン期間として使用されます。 |
構成の例
以下の構成があるとします。
ポリシーが 2021 年 10 月 1 日から 2022 年 2 月 1 日まで有効(start_date および end_date に基づく)。
スケジュール設定されたスケーリングを毎日午前 9 時 10 分に実行する必要がある(cron_expression に基づく)。
キャパシティを 50 台のサーバに維持する必要がある (desired_capacity)。
ランプアップは 5 段階で行う必要がある (schedule_max_step)。
ランプアップは 2 時間維持する必要がある(autoscaling_duration)。
configure serverautoscalepolicy asp-example scheduled_scalings autoscaling_duration 2 index 1 #index assignment should happen after at least on other field enable #no enable if we want to disable desired_capacity 50 schedule_max_step 5 start_date 20211001T000000Z #timezone should be UTC end_date 20220201T000000Z cron_expression '10 9 * * *' save (save scheduled_scalings) save (save auto scale policy)
+-------------------------------------+------------------------------------------------+ | Field | Value | +-------------------------------------+-----------------------------------------------+ | uuid | serverautoscalepolicy-69ce3c2d-b401-4b9a-a834-08fbec8921d9 | | name | asp-example | | intelligent_autoscale | False | | intelligent_scaleout_margin | 20 | | intelligent_scalein_margin | 40 | | max_scaleout_adjustment_step | 1 | | max_scalein_adjustment_step | 1 | | scaleout_cooldown | 300 sec | | scalein_cooldown | 300 sec | | use_predicted_load | False | | delay_for_server_garbage_collection | 0 | | scheduled_scalings[1] | | | enable | True | | desired_capacity | 50 | | cron_expression | 10 9 * * * | | start_date | 20211001T000000Z | | end_date | 20220201T000000Z | | autoscaling_duration | 2 hours | | schedule_max_step | 5 | | tenant_ref | admin | +-------------------------------------+----------------------------------------------+
考慮事項
自動スケール ポリシーごとに 1 つの
scheduled_scaling
構成のみがサポートされます。scheduled_scaling
を無効にすると、max_size
、min_size
、max_scaleout_adjustement_step
、max_scalein_adjustment_step
、desired_capacity
、schedule_max_step
などの他のフィールドがプール サーバ サイズの制御を開始します。