【问题标题】:Azure autoscale scale in kills in use instancesAzure 自动缩放使用实例中的杀戮数
【发布时间】:2017-06-06 22:56:12
【问题描述】:

我正在使用 Azure 自动缩放功能来处理数百个文件。系统正确扩展为 8 个实例,每个实例一次处理一个文件。

问题在于缩放。因为规则的缩放似乎基于所有实例,如果我告诉它在平均 CPU 负载

有没有办法阻止它关闭仍在使用的单个实例?

【问题讨论】:

    标签: azure


    【解决方案1】:

    缩小将首先删除最高的实例数。例如,如果您有 WorkerRole_IN_0、WorkerRole_IN_1、...、WorkerRole_IN_8,然后按比例缩小 1,Azure 将首先删除 WorkerRole_IN_8。 Azure 不知道您的代码在做什么(即它是否仍在处理文件)或者它是否已完成并准备关闭。

    你有几个选择:

    1. 如果文件处理速度很快,您可以在 OnStop 事件中将关闭延迟最多 5 分钟,让您的实例有足够的时间来完成文件处理。这是最容易实施的解决方案,但不是最可靠的。
    2. 如果处理文件可以分成更短的工作块,那么您可以让实例处理块直到文件完成。这样,是否关闭任意实例并不重要,因为您不会丢失任何大量工作,并且另一个实例将在它停止的地方继续工作。有关模式,请参阅https://docs.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters。这是理想的解决方案,因为它是针对分布式工作负载的优化架构,但某些工作负载(即图像/视频处理)可能无法轻易分解。
    3. 您可以实施自己的自动缩放算法并手动关闭您选择的各个实例。为此,您需要调用 Delete Role Instance API (https://msdn.microsoft.com/en-us/library/azure/dn469418.aspx)。这需要一些外部流程来监控您的工作负载并执行管理操作,因此可能不是一个好的解决方案,具体取决于您的基础架构。

    【讨论】:

      猜你喜欢
      • 2018-04-25
      • 1970-01-01
      • 2020-11-28
      • 2020-11-29
      • 2015-08-22
      • 2019-10-09
      • 1970-01-01
      • 2019-03-20
      • 2023-03-08
      相关资源
      最近更新 更多