首页 文章

服务结构在CPU上自动 balancer

提问于
浏览
2

我试图确定Service Fabric是否会根据其中一个节点上的CPU负载自动 balancer 群集 .

根据MSDN文献,Service Fabric会自动 balancer metricshttps://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-resource-manager-balancing/) . 默认指标是计数和主计数,我们可以定义和报告其他指标 . 但是,如果节点变得太高(即高CPU),则没有提及移动副本和 balancer 群集 .

我设置了以下内容来尝试和模拟这种情况 .

我使用以下服务创建了一个部署到5节点Azure群集的Service Fabric应用程序:

  • 具有简单int计数的有状态服务 . 它公开了一个远程接口,可以增加计数并使CPU保持忙碌1秒钟 . 该服务被划分为10个命名分区 - a,b,c,d,e,f,g,h,i,j .

  • Web API无状态服务,为请求的分区调用上述接口 .

  • 无状态服务,监视节点CPU并在CPU超过50%时报告 Health 警告

将应用程序部署到群集后,我会注意到两个具有相同主节点的分区 . 例如,分区“a”和“c”的主要都在“节点1”上 . 然后我在本地运行一个本地客户端应用程序,每秒为这两个分区调用上面的Web API . 正如预期的那样,“节点1”上的CPU在测试期间大约达到90%,但即使在运行测试5分钟后,副本也不会移动以 balancer 节点 . 事实上,在某些情况下,客户端调用开始超时 .

上述实验是否证明Service Fabric不会在CPU负载上自动 balancer 或者我错过了什么?

1 回答

  • 2

    首先, Health 警告没有为集群的 balancer 做任何事情 . 触发 balancer 的唯一因素是负载报告 .

    然而,它确实在CPU上实现了 not balancer . 您需要指定自己的资源以在群集/应用程序清单中进行 balancer . 然后,您可以动态报告应用程序中的负载,但这是我上周在问题上得到的答案的虚拟资源 . Resource usage

相关问题