Rob*_*nis 8 azure-service-fabric
我已将应用程序部署到5节点独立群集.部署成功.但是应用程序没有启动,因为应用程序中存在一些错误.我尝试使用Service Fabric Explorer从群集中删除应用程序,但这失败了.
应用程序的运行状况为"错误",状态为"正在删除"应用程序有9个服务.6个服务显示健康状态"未知",带有问号和状态"未知".3个服务显示健康状态"Ok"但状态为"Deleting".
我也尝试使用powershell删除它:
Remove-ServiceFabricApplication -ApplicationName fabric:/appname -Force -ForceRemove
Run Code Online (Sandbox Code Playgroud)
结果是操作超时.
我也试过下面的帖子,我在其他帖子中找到了.
Connect-ServiceFabricCluster -ConnectionEndpoint localhost:19000
$nodes = Get-ServiceFabricNode
foreach($node in $nodes)
{
$replicas = Get-ServiceFabricDeployedReplica -NodeName $node.NodeName - ApplicationName "fabric:/MyApp"
foreach ($replica in $replicas)
{
Remove-ServiceFabricReplica -ForceRemove -NodeName $node.NodeName -PartitionId $replica.Partitionid -ReplicaOrInstanceId $replica.ReplicaOrInstanceId
}
}
Run Code Online (Sandbox Code Playgroud)
也没有结果,脚本没有找到任何要删除的副本.
同时我们开始删除应用程序中的一个系统服务也改变了状态.结构:/ System/NamingService服务显示"警告"健康状态.这是在分区00000000-0000-0000-0000-000000001002上.主副本显示:
不健康事件:SourceId ='System.NamingService',Property ='Duration_PrimaryRecovery',HealthState ='Warning',ConsideWarningAsError = false.PrimaryRecovery开始于2016-10-06 07:55:21.252的时间超过30:00.000.
我还重新启动了每个节点(当时为1),没有结果.
如何强制删除应用程序而不重新创建群集,因为这不是生产环境的选项.
是的,如果您不允许代码退出ICAsmunicationListener的RunAsync或Open/Close,就会发生这种情况.
一些背景:
您的服务具有由Service Fabric驱动的生命周期.服务中的一个小组件 - 你知道它是FabricRuntime - 驱动它.对于无状态服务实例,它是一个简单的打开/关闭生命周期.对于有状态服务,它有点复杂.有状态服务副本打开和关闭,但也会更改主要,辅助和无之间的角色.生命周期更改由Service Fabric启动,并在代码中显示为方法调用或取消令牌触发器.例如,当副本切换到主副本时,我们会调用RunAsync方法.当它从主要设备切换到其他设备或需要关闭时,会触发取消令牌.无论哪种方式,系统都会等待您完成工作.
当您删除服务时,我们会告知您的服务更改角色并关闭.如果您的代码没有响应,那么它将陷入该状态.
要摆脱这种状态,你可以跑Remove-ServiceFabricReplica -ForceRemove.这基本上会从系统中删除副本 - 就Service Fabric而言,副本已经消失.但是你的过程仍在运行.所以你必须进入并杀死这个过程.
| 归档时间: |
|
| 查看次数: |
3266 次 |
| 最近记录: |