如何确保在Service Fabric中的不同节点上部署两个不同的主副本

时间:2018-01-31 14:58:09

标签: azure-service-fabric

我有一个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上,以确保每个主副本部署在群集中的不同节点上。

1 个答案:

答案 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。

即使有办法做到这一点,默认配置也是一个聪明的配置,所以如果按照自己的方式这样做,请确保最终获得一些好处。