【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案

问题描述

发现 Service Fabric 的节点状态异常,如出现 DisablingWarning,或者 RemoveNode的情况,并且持续很长时间都没有变化(2小时以上)。如何来缓解这种问题呢?

 

问题解答

面对这样的情况,首先需要进入每一个节点中,查看对应的 Warning 信息。如果Warning 中包含具体的信息,就根据内容尝试缓解问题。如果消息不能明确指出问题所在,则可以尝试通过 节点右边的 Restart 按钮来重启节点。

比如截图中的消息 'System.FM' reported Warning for property 'State'. Fabric node is taking longer than expected to deactivate.,关闭 Fabric 节点所耗的时间比预期的要长,并且节点状态一直显示 Disabling。表示节点已经Block了。Service Fabric 自身已经无法完成修复工作,需要手动接入。

 

修复Service Fabric中Application错误

当通过Service Fabric Explorer中的Restart也无法对此情况有任何帮助时,就需要查看集群的状态,应用是否存在错误。

比如截图中,Service Fabric中的应用出现Error, 消息显示  Partition is quorum loss. As the replicas come up, partition should recover from the quorum loss. 应用Partition丢失,当Replicas被选中成为Primary后,Partition将从Quorum Loss的情况中恢复。但是由于SF的应用设置的QuorumLossWaitDuration 的时间戳为infinite(无限)。所以错误就无法完成自动修复。

需要通过如下命令来修改QuorumLossWaitDuration的值

Update-ServiceFabricService -Stateful -ServiceName "fabric:/<Application Name, need replace>" -TargetReplicaSetSize 5 -MinReplicaSetSize 5 -ReplicaRestartWaitDuration 10 -QuorumLossWaitDuration 60 -Force

 

修复Service Fabric节点错误

只有当SF中的应用信息已经被修复后,就可以通过以下几种常规的手段来Restart,Replace 节点:

1)通过 Service Fabric Explorer工具,在节点右侧点击“Restart”按钮重启节点

2)进入Service Fabric的VMSS门户页面,选中问题节点后,可以执行删除,重启,重置等按钮。

也可以使用PowerShell指令,如 Remove-ServiceFabricNode,Restart-ServiceFabricNode,Disable-ServiceFabricNode 等指令完成相同的操作。

PS: 特别注意,当操作的节点为种子节点(Seed Node), 不能直接删除,需要先Disable后,然Seed Node转移到其他节点,然后删除。操作方式可见:(如何转移Service Fabric集群中的种子节点(Seed Node):https://www.cnblogs.com/lulight/p/13691999.html 

 

 

参考资料

ServiceFabrichttps://docs.microsoft.com/en-us/powershell/module/servicefabric/?view=azureservicefabricps

 

posted @ 2022-01-13 20:27  路边两盏灯  阅读(204)  评论(0编辑  收藏  举报