2

我们正在使用从Azure服务总线消息队列获取消息并对其进行处理的Azure服务结构(无状态服务)。任务通常需要5分钟到5小时。服务结构和缩放集群中的长时间运行任务在

当它忙于我们想要扩展服务器,并且当它变得安静时,我们又想缩回来。

我们如何在不中断长时间运行的任务的情况下进行扩展?有没有一种方法可以告诉Service Fabric哪个服务器可以自由扩展?

+0

据我所知,SF不会自动扩展,您必须通过添加更多虚拟机来更新群集以扩展。 –

+0

很确定你可以通过虚拟机的比例设置吗? – tank104

+0

这就是我的意思。我只是不确定会有什么东西会根据服务的状态在VM上添加/删除虚拟机。说,如果你有一个无国界的服务OOTB。 –

回答

1
  1. Azure Monitor Custom Metric

    • EventFlow整合您的SF服务。例如,使它发送日志到应用洞察

    • 当正在处理你的任务,发一些日志中,这将表明, 它在进步

    • 配置custom metric天青监视器只有在情况下缩放在表明机器 有正在进行的任务

权衡这里是等待所有事件菲尼什缺少日志直到可能发生规模扩张。

  • 有一个很好的文章,解释Scale a Service Fabric cluster programmatically
  • 这里如何是这需要一个比特编码的另一种方法 - Automate manual scaling

    • 开发另一项服务,作为S​​F应用程序的一部分或VM扩展。这里的重点是使服务在集群中的所有节点上运行,并跟踪任务执行的状态。

    • 有明确的步骤,如何一个可以手动从集群中排除SF节点 -

    • 运行禁止-ServiceFabricNode意图“的removeNode”禁用你要删除的节点(最高实例在那个节点类型中)。

    • 运行Get-ServiceFabricNode以确保该节点确实已过渡到禁用状态。如果不是,则等到该节点被禁用。你不能急着这一步。
    • 请按照快速入门模板库中的示例/说明将该节点类型中的虚拟机数量更改为1。被删除的实例是最高的VM实例。
    • 等等...在这里找到更多的信息Scale a Service Fabric cluster in or out using auto-scale rules。这里的外卖是这些步骤可以是自动的
  • 实施一项新的服务缩放逻辑来监视其节点与他们的任务完成,赋闲缩放他们使用在前面的步骤中所描述的指令。

    希望它是有道理的。


    非常感谢@ tank104在阐述我的答案方面的帮助!

    +0

    这样做 - 但这意味着我只能在所有事件完成时缩减 - 因为我无法知道哪个节点正在发送或不发送事件缩小? – tank104

    +0

    真正应该是SF本身的功能。就像Cloud Services可以扩展/扩展一样。 –

    +0

    @ tank104 - 是的,当宝贵的任务运行时,你不会让你的节点关闭,但是你必须等待所有事件完成。我有了另一个想法,我很快就会更新答案。 –