检查横向扩展选项
Azure 应用服务支持使用两个选项来自动横向扩展 Web 应用:
- 使用 Azure 自动缩放进行自动缩放。 自动缩放基于你定义的规则做出缩放决策。
- Azure 应用服务自动缩放。 自动缩放根据所选参数为你做出缩放决策。
什么是自动缩放?
自动缩放是一种云系统或进程,可根据当前需求调整可用资源。 自动缩放执行缩小和横向扩展,而不是纵向扩展和减少。
可以根据计划,或通过评估系统运行是否缺乏资源来触发自动缩放。 例如,如果 CPU 使用率增长、内存占用率增加、对服务器的传入请求数量将激增或这些因素的组合都可以触发自动缩放。
Azure 应用服务自动缩放
Azure 应用服务中的自动缩放在 Web 应用运行时监视其资源指标。 它检测需要其他资源处理不断增加的工作负载的情况,并确保在系统重载前这些资源可用。
自动缩放通过添加或删除 Web 服务器并平衡两者之间的负载来对环境中的改变做出响应。 自动缩放只会改变 Web 服务器的数量,而不会对支持应用的 Web 服务器的 CPU 电源、内存或存储容量产生任何影响。
自动缩放规则
自动缩放基于你定义的规则做出决策。 规则指定指标的阈值,并在超过阈值时触发自动缩放事件。 自动缩放还可以在工作负荷减少时解除分配资源。
仔细地定义自动缩放规则。 例如,拒绝服务攻击很可能会导致传入流量的大规模流入。 尝试处理由拒绝服务攻击造成的请求激增将会无果且成本高昂。 这些请求不是真实请求,应放弃,无需处理。 更好的解决方案是在这些请求达到服务前,在类似的攻击发生期间实现检测和对发生的请求进行筛选。
何时应考虑自动缩放?
自动缩放为服务提供了弹性。 例如,你可能认为在节假日期间业务应用的活动会增加/降低。
自动缩放可提升可用性和容错能力。 它可以帮助确认客户端对服务的请求不会被拒绝,因为实例不能及时地确认请求,或者因为重载的实例已崩溃。
自动缩放通过添加或删除 Web 服务器进行工作。 如果 Web 应用将资源密集型进程作为每个请求的一部分执行,那么自动缩放可能不是一个有效的方法。 在这些情况下,可能需要手动缩放。 例如,如果发送到 Web 应用的请求涉及对大型数据集执行复杂处理,则根据实例大小,此单一请求可能会耗尽实例的处理和内存容量。
自动缩放不是处理长期增长的最佳方式。 你的 Web 应用一开始可能用户数量不多,但随着时间推移用户数量增加。 自动缩放具有与监视资源和确定是否触发缩放事件相关联的开销。 在此方案中,如果你能预料增长率,随着时间的推移手动缩放系统可能是更具成本效益的方法。
服务的实例数也是一个因素。 你可能期望在大多数时间里仅运行少量服务实例。 但在这种情况下,无论是否启用自动缩放,服务都将始终容易停机或缺乏可用性。 初始实例数越少,当自动缩放增加更多实例时,可用于处理不断增加的工作负载的容量就越少。
Azure 应用服务自动缩放
自动缩放是一种新的横向扩展选项,用于自动处理 Web 应用和应用服务计划的缩放决策。 它不同于预先存在的 Azure 自动缩放,后者允许你根据计划和资源定义缩放规则。 使用自动缩放,你可以调整缩放设置以提高应用的性能并避免冷启动问题。 该平台会预热实例以在横向扩展时充当缓冲区,确保实现性能的平稳转换。 每个实例(包括预热的实例)按秒收费。
下面是一些应自动进行横向扩展的场景:
- 你不希望基于资源指标设置自动扩缩规则。
- 你希望同一应用服务计划中的 Web 应用能够以不同的方式相互独立地进行扩缩。
- Web 应用已连接到数据库或旧的系统,该系统可能无法像 Web 应用一样快速缩放。 通过自动扩缩,可以设置应用服务计划可以扩展到的最大实例数。 此设置有助于避免 Web 应用给后端造成过重的负担。