在公有云中自动缩放应用程序服务器是一种常见的设计选项,可以为应用程序提供弹性的按需缩放,同时控制资源成本。

NSX Advanced Load Balancer 提供基于衡量指标(应用程序负载、连接等)的自动缩放功能。计划缩放功能为自动缩放功能提供补充,可以在指定时间段内提供确定的容量。

用例

通过使用计划自动缩放,您可以为一段时间(例如两个月)创建一个策略,在此期间,可以将应用程序容量保持在指定状态,从而覆盖基于衡量指标的自动缩放。

该功能在这些时间段内提供确定的容量,以便已置备应用程序服务器并准备好处理流量,而不是等待启动基于衡量指标的自动缩放。这减少了提供应用程序容量的准备时间。

示例

一家电子商务提供商已使用自动缩放策略根据入站流量(每秒连接数)扩展/缩减应用程序服务器。

在 11 月到下一年 1 月的假日购物季期间,该公司发现下午到午夜的容量较高。

通过创建一个计划的自动缩放策略,公司可以将应用程序容量保持在较高的值,从而确保获得最佳的应用程序响应时间,并在处理增加的负载时不会出现延迟。

配置

计划的自动缩放是在现有服务器自动缩放策略中配置的,并附加到池。

scheduled_scalings 配置具有以下子参数:

参数

备注

enable

True/False

可以将其配置为 True 以启用计划缩放。

desired_capacity

值最多为 1000

在计划的时间间隔内所需的服务器数。根据输入的值,这可能会导致扩展或缩减。

cron_expression

类似于 Cron 的表达式必须在 start_dateend_date 之间。支持以分钟和小时为单位的固定整数。

类似于 Cron 的表达式,策略将在该时间激活 autoscaling_duration 小时。

start_date

ISO8601 格式的日期和时间。

ISO8601 格式的日期和时间。

end_date

ISO8601 格式的日期和时间。

计划自动缩放的结束日期和时间。

autoscaling_duration

整数(以小时为单位)

满足 Cron 条件后的持续时间(以小时为单位),将在此期间保持所需的容量。

schedule_max_step

整数

同时缩放的服务器数。有助于加快置备过程。自动缩放策略的 scaleout_cooldown 参数用作连续扩展事件之间的冷却持续时间。

示例配置

在以下配置中:

  • 策略在 2021 年 10 月 1 日至 2022 年 2 月 1 日期间(基于 start_dateend_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                                                                                                                 | 

+-------------------------------------+----------------------------------------------+

注意事项

  • 每个自动缩放策略仅支持一种 scheduled_scaling 配置。

  • 如果禁用了 scheduled_scaling,其他字段(例如 max_sizemin_sizemax_scaleout_adjustement_stepmax_scalein_adjustment_stepdesired_capacityschedule_max_step)将开始控制池服务器大小。