在公有云中自动缩放应用程序服务器是一种常见的设计选项,可以为应用程序提供弹性的按需缩放,同时控制资源成本。
NSX Advanced Load Balancer 提供基于衡量指标(应用程序负载、连接等)的自动缩放功能。计划缩放功能为自动缩放功能提供补充,可以在指定时间段内提供确定的容量。
用例
通过使用计划自动缩放,您可以为一段时间(例如两个月)创建一个策略,在此期间,可以将应用程序容量保持在指定状态,从而覆盖基于衡量指标的自动缩放。
该功能在这些时间段内提供确定的容量,以便已置备应用程序服务器并准备好处理流量,而不是等待启动基于衡量指标的自动缩放。这减少了提供应用程序容量的准备时间。
示例
一家电子商务提供商已使用自动缩放策略根据入站流量(每秒连接数)扩展/缩减应用程序服务器。
在 11 月到下一年 1 月的假日购物季期间,该公司发现下午到午夜的容量较高。
通过创建一个计划的自动缩放策略,公司可以将应用程序容量保持在较高的值,从而确保获得最佳的应用程序响应时间,并在处理增加的负载时不会出现延迟。
配置
计划的自动缩放是在现有服务器自动缩放策略中配置的,并附加到池。
scheduled_scalings
配置具有以下子参数:
参数 |
值 |
备注 |
---|---|---|
enable |
True/False |
可以将其配置为 True 以启用计划缩放。 |
desired_capacity |
值最多为 1000 |
在计划的时间间隔内所需的服务器数。根据输入的值,这可能会导致扩展或缩减。 |
cron_expression |
类似于 Cron 的表达式必须在 start_date 到 end_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_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 | +-------------------------------------+----------------------------------------------+
注意事项
每个自动缩放策略仅支持一种
scheduled_scaling
配置。如果禁用了
scheduled_scaling
,其他字段(例如max_size
、min_size
、max_scaleout_adjustement_step
、max_scalein_adjustment_step
、desired_capacity
和schedule_max_step
)将开始控制池服务器大小。