注意:在对Service Fabric的节点做操作之前,请务必确认是否是种子节点(Seed Node)且当前节点的数量是否与SF的持久层要求的数量一致。
可靠性级别是 Service Fabric 群集资源的一个属性。 对于各个节点类型,此属性的配置必须相同。 该属性控制群集系统服务的复制因子,是群集资源级别的设置。
可靠性级别决定了主节点类型必须具有的节点数下限。 可靠性层可以采用以下值:
- 白金:运行包含 7 个目标副本集和 9 个种子节点的系统服务。
- 金:运行包含 7 个目标副本集和 7 个种子节点的系统服务。
- 银:运行包含 5 个目标副本集和 5 个种子节点的系统服务。
- 铜:运行包含 3 个目标副本集和 3 个种子节点的系统服务。
建议的最低可靠性级别为“银”级。
在使用Service Fabric的过程中,有时会遇见某个节点出现问题,一般情况下,SF集群被设计为高可用集群,当单个节点停机期间会有其他的节点来接管。但是有时候也需要把种子节点转移出去,当有这种需求的时候,可以参考一下步骤:
准备条件:
- 使用Powershell/sfctl 已经连接到当前SF集群(Connect-ServiceFabricCluster & sfctl cluster)
- 使用Service Fabric Explorer连接到SF集群
执行步骤:
一:确保node type下的虚机数量满足reliability tier的最低需求,并同时满足至少有一个以上的none-seed node
二:使用powershell 或者 sfctl 停用要移除的seed node (以_nt1vm_5为例)
# power shell Disable-ServiceFabricNode -NodeName _nt1vm_5 -Intent RemoveNode -Force
# sfctl sfctl node disable --node-name _nt1vm_5 --deactivation-intent RemoveNode
三:等待seed node状态由 ‘disabling’ 转换为 ‘disabled’
等待操作触发的cluster upgrade 完成,以及_nt1vm_5 转换为none-seed node
四:在VMSS界面直接移除对应的虚机 (运行在Linux上的Service Fabric Cluster不支持sfctl node transition命令)
五:使用powershell 或者 sfctl 移除node state
#power shell
Remove-ServiceFabricNodeState -NodeName "_nt1vm_5"
#sfctl sfctl node remove-state --node-name _nt1vm_5
参考资料:
种子节点可以维护基础群集的可用性。
群集随后会发生故障。
如果你的可用容量少于群集可靠性级别对主节点类型的要求,则此尝试会失败。
如果大部分种子节点丢失,群集会在不久之后关闭。
https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-capacity