我正在尝试确定Service Fabric是否会根据其某个节点上的CPU负载自动平衡群集。
根据MSDN文献,Service Fabric会自动平衡指标(https://azure.microsoft.com/en-us/documentation/articles/service-fabric-cluster-resource-manager-balancing/)。默认指标是计数和主计数,我们可以定义和报告其他指标。但是,如果一个节点变得太热,那么就没有提到移动复制品和平衡集群的问题。 (即高CPU)。
我设置了以下内容来尝试和模拟这种情况。
我使用以下服务创建了一个部署到5节点Azure群集的Service Fabric应用程序:
使用简单的int计数的有状态服务。它公开了一个远程接口,可以增加计数并使CPU保持忙碌1秒钟。此服务被划分为10个命名分区 - a,b,c,d,e,f,g,h,i,j。
Web API无状态服务,为请求的分区调用上述接口。
监控节点CPU并在CPU超过50%时报告健康警告的无状态服务
将应用程序部署到群集后,我会注意到两个具有相同主节点的分区。例如,分区" a"和" c"两者都有他们的主要节点1"节点1"。然后我在本地运行一个本地客户端应用程序,每秒为这两个分区调用上面的Web API。正如所料,CPU on"节点1"在测试期间大约达到90%,但即使在运行测试5分钟后,副本也不会移动以平衡节点。事实上,在某些情况下,客户端调用开始超时。
上述实验是否证明Service Fabric不会在CPU负载上自动平衡或者我错过了什么?
答案 0 :(得分:2)
首先,健康警告没有为集群的平衡做任何事情。触发平衡的唯一因素是负载报告。
然而,它确实在CPU上不平衡。您需要指定自己的资源以在群集/应用程序清单中进行平衡。然后,您可以动态报告应用程序中的负载,但这是我上周在问题上得到的答案的虚拟资源。 leaflet tutorial for non-geographical maps