我们正在使用Azure Service Fabric(无状态服务),它从Azure Service Bus Message Queue获取消息并对其进行处理。这些任务通常需要5分钟到5个小时。
忙碌时我们想要扩展服务器,当它变得安静时,我们想再次缩小。
我们如何在不中断长时间运行任务的情况下进行扩展?有没有办法告诉Service Fabric哪个服务器可以自由扩展?
答案 0 :(得分:1)
<强> Azure Monitor Custom Metric 强>
整合您的SF服务 EventFlow。例如,让它将日志发送到Application Insights
在处理您的任务时,请发送一些指示该任务的日志 它正在进行中
只有在没有指示该计算机的日志的情况下,才能在Azure监视器中配置custom metric 正在进行的任务
这里的权衡是等待所有事件完成,直到可能发生缩放。
这是另一种需要进行一些编码的方法 - Automate manual scaling
开发另一项服务,作为SF应用程序的一部分或作为VM扩展。这里的要点是使服务在集群中的所有节点上运行并跟踪任务执行的状态。
有一个明确定义的步骤,如何从群集中手动排除SF节点 -
使用意图“RemoveNode”运行Disable-ServiceFabricNode以禁用您要删除的节点(该节点类型中的最高实例)。
在新服务中实现扩展逻辑,以监视哪些节点已完成其任务并保持空闲以使用前面步骤中描述的指令进行扩展。
希望这是有道理的。
非常感谢@ tank104帮助我详细阐述答案!