【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案
问题描述
发现 Service Fabric 的节点状态异常,如出现 Disabling, Warning,或者 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
Update-ServiceFabricService :https://docs.microsoft.com/en-us/powershell/module/servicefabric/update-servicefabricservice?view=azureservicefabricps
StatefulServiceDescription.QuorumLossWaitDuration Property : https://docs.microsoft.com/en-us/dotnet/api/system.fabric.description.statefulservicedescription.quorumlosswaitduration?view=azure-dotnet#system-fabric-description-statefulservicedescription-quorumlosswaitduration
Gets or sets the maximum duration, for which a partition is allowed to be in a state of quorum loss.【获取或设置允许分区处于仲裁丢失状态的最大持续时间。】
If the partition is still in quorum loss after this duration, Service Fabric will recover the partition from the quorum loss by considering the down replicas as lost. Note that this can potentially incur data loss. The default value is Infinity and it is not recommended to change this value.【如果在此持续时间后分区仍处于仲裁丢失状态,Service Fabric 将通过将关闭的副本视为丢失来从仲裁丢失中恢复分区。请注意,这可能会导致数据丢失。默认值为"无穷大",不建议更改此值。】
修复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)
参考资料
ServiceFabric:https://docs.microsoft.com/en-us/powershell/module/servicefabric/?view=azureservicefabricps
【Azure 微服务】面对Service Fabric中节点状态不正常(Disabling/Warning/RemoveNode)的几种尝试解决方案的更多相关文章
- 【Azure 微服务】Service Fabric中微服务在升级时,遇见Warning - System.Collections.Generic.KeyNotFoundException 服务无法正常运行
问题描述 使用.Net Framework 4.5.2为架构的Service Fabric微服务应用,在升级后发布到Azure Fabric中,服务无法运行.通过Service Fabric Expl ...
- 【Azure 微服务】Service Fabric, 使用ARM Template方式来更新SF集群的证书(Renew SF Certificate)
问题描述 因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)一文中,描述了因为证书过期而导致了SF集群不可用,并且通过命令dd-AzServiceFabricCluster ...
- 微服务之Service Fabric 系列 (一):概览、环境安装
参考 微软官方文档 service fabric 百家号 大话微服务架构之微服务框架微软ServiceFabric正式开源 一.概述 1.概念 Azure Service Fabric 是一款分 ...
- 【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
注意:在对Service Fabric的节点做操作之前,请务必确认是否是种子节点(Seed Node)且当前节点的数量是否与SF的持久层要求的数量一致. 可靠性级别是 Service Fabric 群 ...
- 【Azure微服务 Service Fabric 】因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)
问题描述 创建Service Fabric时,证书在整个集群中是非常重要的部分,有着用户身份验证,节点之间通信,SF升级时的身份及授权认证等功能.如果证书过期则会导致节点受到影响集群无法正常工作. 当 ...
- 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...
- 如何把遗留的Java应用托管在Service Fabric中
一.概述 众所周知,微服务化尤其对遗留系统进行微服务化一般采用"Lift and Shift"的模式进行. Service Fabric作为一个微服务托管平台,不仅仅可以在上面跑. ...
- 浅谈服务治理、微服务与Service Mesh(三) Service Mesh与Serverless
作为本系列文章的第三篇(前两篇<浅谈服务治理.微服务与Service Mesh(一)Dubbo的前世今生>,<浅谈服务治理.微服务与Service Mesh(二) Spring Cl ...
- 【Azure微服务 Service Fabric 】在SF节点中开启Performance Monitor及设置抓取进程的方式
前提条件 当我们观察到SF中某一个节点出现CPU不正常的情况,但是由于不能肉眼长期观察,所以可以通过开启Performance Monitor的方式来获取每一个进程的%Processer Time的方 ...
- 【Azure 微服务】基于已经存在的虚拟网络(VNET)及子网创建新的Service Fabric并且为所有节点配置自定义DNS服务
问题描述 创建新的Service Fabric集群,可以通过门户,Powershell命令,或者是ARM模板.但是通过门户和PowerShell命令时,创建的SF集群都会自动新建一个虚拟网络而无法使用 ...
随机推荐
- vue面试题(一)正在重新整理
1.输入一个 URL到浏览器整个过程发生了什么?ok 1.浏览器查找当前 URL是否存有缓存,并检查这个缓存是否过期 2.DNS 解析 URL 对应的 IP 3.根据 IP 建立 TCP 连接(三次握 ...
- HTMl插入视频背景
插入视频背景一段简单的css即可 首先定义HTML的video标签 <video src="视频路径" class="bjimg" autoplay lo ...
- 20.5 OpenSSL 套接字RSA加密传输
RSA算法同样可以用于加密传输,但此类加密算法虽然非常安全,但通常不会用于大量的数据传输,这是因为RSA算法加解密过程涉及大量的数学运算,尤其是模幂运算(即计算大数的幂模运算),这些运算对于计算机而言 ...
- WinForm之ComboBox实现模糊查询
ComboBox实现模糊查询 第一步:在Form_Load事件中绑定数据源 第二步:写一个方法,返回一个List<string>类型的集合来存储控件中的Items 第三步:在Form_Lo ...
- ChatGPT - 圈里的百科
ChatGPT(全名:Chat Generative Pre-trained Transformer),美国OpenAI [1] 研发的聊天机器人程序 [12] ,于2022年11月30日发布 [ ...
- 微软开测“Moment4”启动包:Win11 23H2要来了
近日,有用户在Win11最新的7月累积更新中发现,更新文件中已经开始出现了对"Moment4"的引用. 具体来说,在7月累积更新中,微软加入了"Microsoft-Win ...
- P5047 [Ynoi2019 模拟赛] Yuno loves sqrt technology II 题解
题目链接:Yuno loves sqrt technology II 很早以前觉得还挺难的一题.本质就是莫队二次离线,可以参考我这篇文章的讲述莫队二次离线 P5501 [LnOI2019] 来者不拒, ...
- 2022 JuiceFS 社区用户调研结果出炉
为了使 JuiceFS 的发展更贴合用户的真实需求,我们在三周前向社区发出了一份调研问卷.此次调研面向已经将 JuiceFS 应用于生产环境的用户,了解其在应用 JuiceFS 前和使用中的体验与评价 ...
- 制作包含最新更新的Windows 10 LTSC 2021 ISO
介绍 在制作桌面云windows 模板的时候,一般需要安装最新的更新.更新安装过程非常耗时,并且安装更新会导致桌面模板的磁盘空间膨胀.制作出的模板会占用很大的磁盘空间.如果不安装更新,模板大小约5G. ...
- 使用Visual studio code 进行.NET 开发
Visual studio code 作为一款强大的编辑器,相信很多开发者都用过.vs code 的强大源自开源生态丰富,编辑器本身简单,但是加上各式的插件,就变得无比牛逼,基本可以替代现有的大部分工 ...