【问题标题】:How to make sure two different primary replica deploy on different node in Service Fabric如何确保两个不同的主副本部署在 Service Fabric 的不同节点上
【发布时间】:2018-07-10 17:44:02
【问题描述】:

我有一个 4 节点服务结构集群。我使用以下参数创建了一个有状态服务

<Parameters>
    <Parameter Name="app_PartitionCount" Value="3" />
    <Parameter Name="app_MinReplicaSetSize" Value="3" />
    <Parameter Name="app_TargetReplicaSetSize" Value="3" />
  </Parameters>

部署到 Service Fabric 群集后,有状态服务的两个分区的主副本驻留在同一个节点上。如何确保每个主副本都部署在群集中的不同节点上。

【问题讨论】:

    标签: azure-service-fabric


    【解决方案1】:

    从技术角度来看,您可以尝试多种方法:

    首选域 - 指定要放置主节点的故障域。当一切正常时,主节点最终会进入此域。如果域或主副本发生故障或关闭,主副本会移动到其他位置,最好是在同一个域中。

    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 在给定节点上保持该指标的所需比率。

    附言

    尽管有很多方法可以做到这一点,但默认配置是一个聪明的配置,所以如果你按照自己的方式去做,请确保你最终会得到一些好处。

    【讨论】:

      猜你喜欢
      • 2018-04-05
      • 1970-01-01
      • 2018-07-31
      • 1970-01-01
      • 2020-07-21
      • 2020-02-12
      • 1970-01-01
      • 2020-01-26
      • 2020-09-18
      相关资源
      最近更新 更多