Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Azure Monitor 自动缩放仅适用于 Azure 虚拟机规模集、 Azure 云服务、[Azure 应用服务 Web 应用功能]/app-service/web/)和 Azure API 管理。
自动缩放的概念
在采用这些最佳做法之前,请先了解自动缩放的核心组成部分。 资源具有单个自动缩放设置,该设置由配置文件和规则组成,并定义最小、最大值和默认实例计数。 阈值在实例级别计算,每个缩放操作都会写入活动日志。 有关完整模型,请参阅 “了解自动缩放设置”。 有关可用于自动缩放的指标,请参阅Azure Monitor 自动缩放常用指标。
自动缩放最佳做法
使用自动缩放时,可使用以下最佳做法。
确保最大值和最小值不同,并在它们之间有足够的边距
如果设置的最小值为 2,最大值为 2,并且当前实例计数为 2,则不可能发生任何缩放操作。 在最大和最小实例计数之间保留足够的余量(包括端值)。 自动缩放始终在这些限制范围内进行。
手动缩放会被自动缩放的最小值和最大值重置
如果手动将实例计数更新为高于或低于最大值的值,则自动缩放引擎会自动缩放回最小值(如果低于)或最大值(如果高于)。 例如,设置介于 3 和 6 之间的范围。 如果有一个正在运行的实例,则自动缩放引擎将在下次运行时缩放为三个实例。 同样,如果手动将缩放设置为 8 个实例,在下一次运行自动缩放时,它会在下次运行时将其缩减为 6 个实例。 除非还重置了自动缩放规则,否则手动缩放效果只是暂时的。
始终使用同时执行横向扩展和横向缩减的规则组合
如果只使用组合的一部分,则自动缩放只会在单个方向(横向扩展或缩小)执行操作,直到达到配置文件中定义的最大或最小实例计数。 这种情况不是最佳情况。 理想情况下,你希望资源在使用率较高时可以横向扩展以确保可用性。 同样,在使用率较低时,你会希望缩减资源规模,从而节省成本。
使用缩容和扩容规则时,最好使用同一个指标来控制两者。 否则,缩容和扩容条件可能会同时满足,从而导致一定程度的波动。 例如,不要使用以下规则组合,因为内存使用量没有横向扩展规则:
- 如果 CPU > 90%,则横向扩展 1 个
- 如果内存 > 90%,则横向扩展 1 个实例
- 如果 CPU < 45 %,则横向缩减 1 个
在此示例中,可能会遇到内存使用率超过 90% 但 CPU 使用率低于 45% 的情况。 只要这两个条件同时满足,这种情况就可能导致抖动。
为诊断指标选择适当的统计信息
对于诊断指标,可以选择“平均值”、“最小值”、“最大值”和“总计”作为进行缩放所依据的指标。 最常见的统计信息是“平均值” 。
有关特殊指标的缩放阈值的注意事项
对于特殊指标(如 Azure 存储或 Azure 服务总线队列长度指标),阈值是按照当前实例数的可用消息平均数。 请慎重选择此指标的阈值。
若要说明行为,请考虑以下示例:
- 当存储队列中的消息计数 >= 50 时,将实例数增加 1
- 当存储队列消息计数 <= 10 时,将实例数减少 1 个
考虑以下序列:
- 有两个存储队列实例。
- 消息不断传入,在查看存储队列时,总计数达到 50。 你可能会认为自动缩放应启动横向扩展操作。 但请注意,每个实例仍然是 50/2 = 25 条消息。 因此,不会进行横向扩展。 要发生第一次横向扩展操作,存储队列中的消息总数应达到 100。
- 接下来,假定总消息计数达到 100。
- 由于横向扩展操作,会添加第三个存储队列实例。 在队列中的总消息计数达到 150 之前,不会进行下一次横向扩展操作,因为 150/3 = 50。
- 现在队列中的消息数量变小。 在有三个实例的情况下,当所有队列中的总消息数加起来达到 30 时,会进行第一缩小操作,因为 30/3 = 10 个消息/实例(这是缩小阈值)。
有关在配置文件中配置了多个规则时进行缩放的注意事项
当配置文件具有多个规则时,如果满足 任何 横向扩展规则,则自动缩放会横向扩展,但仅在满足 所有 横向扩展规则时才缩小。 设计规则集时,应考虑这种不对称性,以免单个高负载指标阻止资源缩容。 有关自动缩放如何评估多个规则的工作示例,请参阅 自动缩放评估。
始终选择安全的默认实例计数
默认实例数很重要,因为当读取资源指标出现问题时,自动缩放会使用该值。 如果当前容量低于默认值,则自动缩放将扩展到默认值,以确保资源的可用性。 如果当前容量已经高于默认值,自动缩放不会缩减。 选择适合工作负荷的默认实例计数。 有关详细信息,请参阅 自动缩放设置架构。
配置自动缩放通知
如果发生以下任一情况,自动缩放会在活动日志中写入记录:
- 自动缩放功能启动缩放操作。
- 自动缩放服务成功完成缩放操作。
- 自动缩放服务无法执行缩放操作。
- 自动缩放服务不提供用于做出缩放决策的指标。
- 可以再次使用指标(恢复)来进行缩放决策。
- 自动缩放检测到摆动并中止缩放尝试。 在这种情况下,你会看到
Flapping日志类型。 如果看到此日志类型,请考虑阈值的范围是否过窄。 - 自动缩放检测到摆动,但仍能成功缩放。 在这种情况下,你会看到
FlappingOccurred日志类型。 如果您看到这种日志类型,则表示自动缩放引擎曾尝试进行缩放(例如,从四个实例缩减到两个实例),但判定这一更改会导致抖动。 相反,自动扩缩引擎将实例数量调整为另一个数值(例如使用三个实例而不是两个),这样就不再会导致波动,因此它便扩展到了这一实例数量。
使用活动日志警报监测自动缩放引擎的运行状况。 一个示例显示了如何创建活动日志警报以监视订阅上的所有自动缩放引擎操作。 另一个示例显示如何创建活动日志警报以监视订阅上所有失败的自动缩放横向缩减/横向扩展操作。
除了使用活动日志警报以外,还可以配置电子邮件或 Webhook 通知,以通过自动缩放设置上的通知选项卡获取有关缩放操作的通知。