Azure 服务结构中的长时间运行任务和中的扩展群集

Azure 服务结构中的长时间运行任务和中的扩展群集,azure,azure-service-fabric,azureservicebus,azure-servicebus-queues,Azure,Azure Service Fabric,Azureservicebus,Azure Servicebus Queues,我们正在使用Azure服务结构(无状态服务),它从Azure服务总线消息队列获取消息并对其进行处理。这些任务通常需要5分钟到5小时 当服务器繁忙时,我们希望缩小服务器的规模;当服务器安静时,我们希望再次缩小服务器的规模 我们如何在不中断长时间运行的任务的情况下进行扩展?有没有办法告诉ServiceFabric哪个服务器可以自由扩展 将您的SF服务与 . 例如,将日志发送到Application Insights 在处理任务时,发送一些日志,以指示 正在进行中 在Azure Monitor中配

我们正在使用Azure服务结构(无状态服务),它从Azure服务总线消息队列获取消息并对其进行处理。这些任务通常需要5分钟到5小时

当服务器繁忙时,我们希望缩小服务器的规模;当服务器安静时,我们希望再次缩小服务器的规模

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

    • 将您的SF服务与 . 例如,将日志发送到Application Insights

    • 在处理任务时,发送一些日志,以指示 正在进行中

    • 在Azure Monitor中配置,以便仅在缺少指示该计算机的日志时进行扩展 有正在进行的任务

  • 这里的权衡是等待所有事件完成,直到规模扩大

  • 有一篇好文章解释了如何
  • 这里是另一种需要少量编码的方法-

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

    • 有一些定义良好的步骤可以用来手动将SF节点从集群中排除-

    • 使用“RemoveNode”运行Disable ServiceFabricNode以禁用要删除的节点(该节点类型中的最高实例)

    • 运行Get-ServiceFabricNode以确保该节点确实已转换为禁用状态。如果没有,请等待节点被禁用。你不能加快这一步
    • 按照快速入门模板库中的示例/说明将该节点类型中的VM数量更改一个。移除的实例是最高的VM实例
    • 等等。。。在这里找到更多信息。这里的要点是,这些步骤可以自动化
  • 在新服务中实现伸缩逻辑,以监视哪些节点完成了任务,并保持空闲状态,以便使用前面步骤中描述的指令来伸缩它们

    希望这是有道理的



    非常感谢@tank104帮助我详细说明我的答案

    据我所知,SF不会自动扩展,您必须通过添加更多虚拟机来更新集群以扩展。非常确定您可以通过虚拟机扩展集来实现这一点?这就是我的意思。我只是不确定有什么东西可以根据服务的状态向虚拟机添加/删除虚拟机。也就是说,如果您有一个无状态服务OOTB.Ah right:)我希望有某种方法可以选择关闭哪个节点。所以现在虚拟机只会缩小一个节点,即使工作仍在进行?(这正是我所想/担心的)我想到的一件事——是否有可能缩小CPU使用率最低的节点?确实如此——但这意味着我只能在所有事件完成后缩小——因为我无法知道哪个节点正在发送或不发送要缩小的事件?这确实应该是SF本身的一个功能。就像云服务可以向外/向内扩展一样。@tank104-是的,在宝贵的任务运行时,您不会关闭节点,但您必须等待所有事件完成。我有了另一个想法,我会很快更新答案。谢谢-我现在就试试你的建议,以后会的feedback@tank104期待您的回复