浏览自动缩放最佳做法
如果在创建自动缩放设置时未遵循良好做法,则可以创建导致不良结果的条件。 在本单元中,你将了解如何避免创建相互冲突的规则。
自动缩放的概念
自动缩放设置缩放实例,即通过增加实例数量横向扩展和通过减少实例数量横向缩减。 自动缩放设置具有实例的最大、最小值和默认值。
自动缩放作业始终读取关联的指标以进行缩放,检查它是否已超过配置的横向扩展或横向缩减。
所有阈值都在实例级别计算。 例如,“当实例数为 2 时,平均 CPU > 80% 时横向扩展一个实例”,表示当所有实例的平均 CPU 大于 80% 时会横向扩展。
所有自动缩放成功和失败都记录到活动日志。 然后,可以配置活动日志警报,以便在有活动时通过电子邮件、短信服务或 Webhook 收到通知。
自动缩放最佳做法
创建自动缩放规则时,请使用以下最佳做法。
确保最大值和最小值不同,并在它们之间有足够的边距
如果您的设置中最小值为 2,最大值为 2,并且当前实例计数也是 2,则不会发生缩放操作。 在最大和最小实例数之间保留足够的余量。 自动缩放始终在这些限制之间进行缩放。
为诊断指标选择适当的统计信息
对于诊断指标,可以选择“ 平均值”、“ 最小值”、“ 最大值 ”和“ 总计 ”作为要缩放依据的指标。 最常见的统计信息是平均值。
为所有指标类型仔细选择阈值
我们建议根据实际情况,仔细选择不同的阈值来进行扩容和缩容。
我们不建议使用以下示例中那样的自动缩放设置,因为这些设置的出入条件具有相同或类似的阈值:
- 如果线程计数 >= 600,将增加一个实例
- 如果线程计数 <= 600,将减少一个实例
让我们看看一个示例,说明可能导致令人困惑行为的原因。 请考虑以下顺序。
- 假设有两个实例开始,然后每个实例的平均线程数增加到 625。
- 自动缩放横向扩展添加第三个实例。
- 接下来,假设整个实例的平均线程计数下降到 575。
- 横向缩减前,自动缩放会尝试预估横向缩减后的最终状态。 例如,575 x 3 (当前实例计数) = 1,725 / 2 (缩放时最终实例数) = 862.5 线程。 这意味着,如果平均线程数保持不变或甚至仅仅略微下降,那么即使在横向缩减后,自动缩放也必须立即再次横向扩展。 但是,如果它再次横向扩展,则整个过程将重复,从而导致无限循环。
- 为了避免这种情况(称为“抖动”),自动缩放根本不会横向缩减。 相反,它会在下次执行服务的作业时,再次跳过并重新评估条件。
在横向缩减过程中进行估算是为了避免“抖动”情况,在这种情况下,横向缩减和横向扩展操作会不断地来回进行。 当为横向扩展和横向缩减选择相同的阈值时,请记住此行为。
我们建议在横向扩展和横向缩减阈值之间选择足够的余量。 例如,请考虑以下更好的规则组合。
- 当 CPU% >= 80 时,按 1 计数增加实例
- 当 CPU% <= 60 时,按 1 计数减少实例
在这种情况下
- 假设你从两个实例开始。
- 如果跨实例的平均 CPU% 变为 80,则自动缩放会横向扩展添加第三个实例。
- 现在假设随着时间的推移,CPU% 下降到 60。
- 自动缩放的横向缩减规则会估计横向缩减后的最终状态。 例如,60 x 3(当前实例计数)= 180/2(横向缩减后的最终实例数)= 90。 自动缩放不会横向缩减,因为它必须立即再次横向扩展。 它会略过横向缩减。
- 下次自动缩放检查时,CPU 将继续降至 50。 它再次估计 - 50 x 3 实例 = 150 / 2 个实例 = 75,这低于 80 的缩减阈值,因此它成功缩减到 2 个实例。
有关在配置文件中配置了多个规则时进行缩放的注意事项
在某些情况下,你可能需要在配置文件中设置多个规则。 设置多个规则时,服务将使用以下自动缩放规则集。
横向扩展时,如果满足任一条规则,则运行自动缩放。 横向缩减时,自动缩放需要满足所有规则。
为了说明,假设你有以下四个自动缩放规则:
- 如果 CPU < 30%,则横向缩减 1 个实例
- 如果内存 < 50%,则横向缩减 1 个实例
- 如果 CPU > 75%,则横向扩展 1 个示例
- 如果内存 > 75%,则横向扩展 1 个实例
然后发生以下情况:
- 如果 CPU 为 76% 且内存为 50%,我们会横向扩展。
- 如果 CPU 为 50% 且内存为 76%,我们会横向扩展。
另一方面,如果 CPU 为 25%,内存为 51%,则自动缩放不会横向缩减。 如果 CPU 为 29%,并且内存为 49%,则会发生自动缩减,因为两个缩减规则都是真的。
始终选择安全的默认实例计数
默认实例计数很重要,因为当指标不可用时,自动缩放会将服务扩展到该计数。 因此,请选择适合工作负荷的默认实例计数。
配置自动缩放通知
如果发生以下任何一种情况,自动缩放会发布到活动日志:
- 自动缩放发出缩放操作
- 自动缩放服务成功完成了缩放操作
- 自动缩放服务无法执行缩放操作。
- 自动缩放服务不提供用于做出缩放决策的指标。
- 可以再次使用指标(恢复)来进行缩放决策。
你还可以使用活动日志警报,来监测自动缩放引擎的运行状况。 除了使用活动日志警报之外,你还可以配置电子邮件或 Webhook 通知,以通过自动缩放设置上的通知选项卡获得成功缩放操作的通知。