azure-service-fabric - 删除 Service Fabric 应用程序失败

标签 azure-service-fabric

我已将应用程序部署到 5 节点独立集群。成功部署成功。但是由于应用程序中的一些错误,应用程序没有启动。
我尝试使用 Service Fabric Explorer 从集群中删除应用程序,但失败了。

应用程序的健康状态为“错误”,状态为“正在删除”
该应用程序有 9 个服务。 6 个服务显示带有问号的健康状态“未知”和状态“未知”。 3 个服务显示健康状态“正常”,但状态为“正在删除”。

我也尝试使用 powershell 删除它:

Remove-ServiceFabricApplication -ApplicationName fabric:/appname -Force -ForceRemove

结果是操作超时。

我还尝试了在其他帖子中找到的以下脚本。
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
    }
}

也没有结果,脚本没有找到要删除的任何副本。

同时我们开始移除应用程序之一,系统服务也改变了状态。
fabric:/System/NamingService 服务显示“警告”健康状态。
这是在分区 00000000-0000-0000-0000-000000001002 上。
主要副本显示:
不健康事件:SourceId='System.NamingService'、Property='Duration_PrimaryRecovery'、HealthState='Warning'、ConsumeWarningAsError=false。
于 2016-10-06 07:55:21.252 开始的 PrimaryRecovery 花费的时间超过 30:00.000。

我还重新启动了每个节点(当时是 1 个)但没有结果。

如何在不重新创建集群的情况下强制删除应用程序,因为这不是生产环境的选项。

最佳答案

是的,如果您不允许代码退出 ICommunicationListener 的 RunAsync 或 Open/Close,就会发生这种情况。

一些背景:

您的服务具有由 Service Fabric 驱动的生命周期。您的服务中的一个小组件 - 您将其称为 FabricRuntime - 驱动它。对于无状态服务实例,它是一个简单的打开/关闭生命周期。对于有状态服务,它有点复杂。有状态服务副本打开和关闭,但也会在主要、次要和无之间更改角色。生命周期更改由 Service Fabric 启动,并在代码中显示为方法调用或取消 token 触发器。例如,当副本切换到主副本时,我们会调用您的 RunAsync 方法。当它从主要切换到其他东西或需要关闭时,会触发取消 token 。无论哪种方式,系统都会等待您完成工作。

当您删除服务时,我们会告诉您的服务更改角色并关闭。如果您的代码没有响应,那么它将卡在该状态。

要摆脱这种状态,您可以运行 Remove-ServiceFabricReplica -ForceRemove .这实际上从系统中删除了副本 - 就 Service Fabric 而言,副本已经消失。但是您的进程仍在运行。因此,您也必须进入并终止该进程。

关于azure-service-fabric - 删除 Service Fabric 应用程序失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39892462/

相关文章:

c# - 服务 MyServicePkg 缺少代码

c# - Azure 服务结构参与者依赖注入(inject)

azure - 更新 Azure Service Fabric 群集中的自定义终结点

azure - 需要在 Azure Service Fabric 上实现 ICommunicationListener 的 ZeroMQ

c# - 保留从客户收到的大数据直至处理

c# - 生成的 AAD CallbackUrl 是 IP 地址,与部署到服务结构时应用程序注册中的回复 Url 不匹配

visual-studio - 事件解决方案配置未配置为构建或部署 Service Fabric 应用程序项目

Azure Service Fabric 使用情况

Azure Service Fabric - Owin 上的 Web Api - https 问题

c# - Service Fabric 应用程序拒绝访问路径