我有一个4节点服务架构集群。我使用以下参数
创建了一个有状态服务<Parameters>
<Parameter Name="app_PartitionCount" Value="3" />
<Parameter Name="app_MinReplicaSetSize" Value="3" />
<Parameter Name="app_TargetReplicaSetSize" Value="3" />
</Parameters>
部署到Service Fabric群集后,有状态服务的两个partitioon主副本驻留在同一个node.ow上,以确保每个主副本部署在群集中的不同节点上。
答案 0 :(得分:0)
从技术角度来看,您可以尝试多种方式:
首选域 - 指定用于放置主节点的故障域。当所有内容都运行正常时,主节点将在此域中结束。如果域或主副本失败或关闭,主节点将移动到其他位置,理想情况下位于同一域中。
New-ServiceFabricService -ApplicationName $applicationName -ServiceName $serviceName -ServiceTypeName $serviceTypeName –Stateful -MinReplicaSetSize 3 -TargetReplicaSetSize 3 -PartitionSchemeSingleton -PlacementPolicy @("PreferredPrimaryDomain,fd:/0")
展示位置约束 - 附加到为一个或多个节点属性选择的各个服务的语句。放置约束定义服务应运行的位置。约束集是可扩展的 - 任何键/值对都可以工作。
New-ServiceFabricService -ApplicationName $applicationName -ServiceName $serviceName -ServiceTypeName $serviceType -PlacementConstraint "NodeName == $nodename" -Stateful -PartitionSchemeUniformInt64 -PartitionCount 3 -LowKey 0 -HighKey 51 -MinReplicaSetSize 3 -TargetReplicaSetSize 3
平衡阈值 - 每个主要实例都可以报告一些“辅助”指标,例如“PrimaryCnt”。有了这个,您可以设置一个阈值来询问/建议SF保留给定节点上该指标的所需比率。
P.S。
即使有办法做到这一点,默认配置也是一个聪明的配置,所以如果按照自己的方式这样做,请确保最终获得一些好处。