浏览自动缩放最佳做法

已完成

如果在创建自动缩放设置时未遵循最佳做法,则可能会创建导致不良结果的条件。 在本单元中,你将了解如何避免创建彼此冲突的规则。

自动缩放概念

  • 自动缩放设置可水平缩放实例,它在增加实例时是扩大,在减少实例数时是缩小。 自动缩放设置具有最大、最小和默认实例值。

  • 自动缩放作业始终读取要作为缩放依据的关联指标,检查它是否超过针对扩大或缩小配置的阈值。

  • 所有阈值都在实例级别进行计算。 例如,“当实例数为 2 时,平均 CPU > 80% 时横向扩展一个实例”,表示当所有实例的平均 CPU 大于 80% 时会横向扩展。

  • 所有自动缩放成功和失败都将记录到活动日志中。 然后可以配置活动日志警报,以便在有活动时通过电子邮件、SMS 或 Webhook 收到通知。

自动缩放最佳做法

创建自动缩放规则时,可使用以下最佳做法。

确保最大和最小值不同,并且它们之间具有足够的余量

如果设置最小值 = 2,最大值 = 2,并且当前实例计数为 2,则不会发生缩放操作。 在最大和最小实例计数之间保留足够的余量(包括端值)。 自动缩放始终在这些限制之间进行。

为诊断指标选择相应统计信息

对于诊断指标,可以选择“平均值” 、“最小值” 、“最大值” 和“总计” 作为用作缩放依据的指标。 最常见的统计信息是“平均值” 。

认真为所有指标类型选择阈值

我们建议基于实际情况为扩大和缩小认真选择不同阈值。

不建议使用自动缩放设置,例如下面的示例,在输出和输入条件下使用相同或相似的阈值:

  • 如果线程计数 >= 600,将增加一个实例
  • 如果线程计数 <= 600,将减少一个实例

让我们看一下可能会导致看起来令人困惑的行为的示例。 考虑以下序列。

  1. 假设开始时有两个实例,随后每个实例的平均线程数增长到 625。
  2. 自动缩放会通过添加第三个实例进行横向扩展。
  3. 接下来,假定实例间的平均线程数下降到 575。
  4. 横向缩减前,自动缩放会尝试预估横向缩减后的最终状态。 例如,575 x 3(当前实例计数) = 1,725/2(缩减后的最终实例数) = 862.5 个线程。 这意味着如果平均线程计数保持不变,甚至只是略有下降,自动缩放就必须立即再次扩大(即使是在缩小后)。 但如果它再次横向扩展,整个过程就会重复,导致无限循环。
  5. 为了避免这种情况(称为“抖动”),自动缩放根本不会缩小。 相反,它会跳过,并在服务作业下次执行时再次重新评估条件。 这可能会使许多人感到困惑,因为在平均线程计数是 575 时,自动缩放似乎未起作用。

在横向缩减过程中进行估算是为了避免“抖动”情况,在这种情况下,横向缩减和横向扩展操作会不断地来回进行。 为扩展和缩减选择相同阈值时,请记住此行为。

我们建议在扩大与缩小阈值之间选择足够的余量。 作为示例,请考虑以下更好的规则组合。

  • 当 CPU% >= 80 时,按 1 计数增加实例
  • 当 CPU% <= 60 时,按 1 计数减少实例

在这种情况下,

  1. 假定开始有 2 个实例。
  2. 如果实例间的平均 CPU% 达到 80,则自动缩放会通过添加第三个实例来进行扩大。
  3. 现在假定随着时间的推移,CPU% 下降到 60。
  4. 自动缩放的缩小规则会估计缩小后的最终动态。 例如,60 x 3(当前实例计数) = 180/2(缩减后的最终实例数) = 90。 自动缩放不会横向缩减,因为它必须立即再次横向扩展。 它会略过横向缩减。
  5. 下次进行自动缩放检查时,CPU 会继续减少到 50。 它会再次估计:50 x 3 个实例 = 150/2 个实例 = 75,这低于 80 的扩大阈值,因此可以成功缩小为 2 个实例。

有关在配置文件中配置多个规则时进行自动缩放的注意事项

在某些情况下可能必须在一个配置文件中设置多个规则。 设置了多个规则时,服务会使用以下自动缩放规则集。

进行横向扩展时,只要满足任一规则,自动缩放就会运行。 进行缩小时,自动缩放需要满足所有规则。

为了进一步说明,假定你具有以下 4 个自动缩放规则:

  • 如果 CPU < 30 %,则横向缩减 1 个
  • 如果内存 < 50%,则横向缩减 1 个
  • 如果 CPU > 75%,则横向扩展 1 个示例
  • 如果内存 > 75%,则横向扩展 1 个示例

然后出现以下情况:

  • 如果 CPU 是 76% 且内存是 50%,则我们会进行扩大。
  • 如果 CPU 是 50% 且内存是 76%,则我们会进行扩大。

另一方面,如果 CPU 为 25%,内存为 51%,则自动缩放不会横向缩减。 如果 CPU 为 29%,并且内存为 49%,则会发生自动横向缩减,因为这两个缩减规则都是真的。

始终选择安全的默认实例计数

默认实例计数很重要,因为当指标不可用时,自动缩放会将服务扩展到该计数。 因此,请选择对工作负荷安全的默认实例计数。

配置自动缩放通知

如果发生以下任何一种情况,自动缩放会发布到活动日志:

  • 自动缩放发出缩放操作
  • 自动缩放服务成功完成缩放操作
  • 自动缩放服务未能执行缩放操作。
  • 没有可供自动缩放服务做出缩放决策的指标。
  • 指标再次可用(恢复)于进行缩放决策。

还可以使用活动日志警报监视自动缩放引擎的运行状况。 除了使用活动日志警报以外,还可以配置电子邮件或 Webhook 通知,以通过自动缩放设置上的通知选项卡获取有关成功缩放操作的通知。