如何停止空闲的 Service Fabric 集群升级?

How to stop an idle Service Fabric Cluster Upgrade?

我有一个 Service Fabric 集群似乎在自动升级的回滚阶段停滞了 7 天多。

这是 Get-ServiceFabricClusterUpgrade 的输出:

TargetCodeVersion             : 5.5.216.0
TargetConfigVersion           : 2
StartTimestampUtc             : 15/06/2017 23:44:40
FailureTimestampUtc           : 16/06/2017 01:41:48
FailureReason                 : HealthCheck
UpgradeState                  : RollingBackInProgress
UpgradeDuration               : 7.14:13:10
CurrentUpgradeDomainDuration  : 7.12:16:03
CurrentUpgradeDomainProgress  : 0

NodeName            : xxxxxxxxxxxxxxxxxxxxx
UpgradePhase        : PreUpgradeSafetyCheck
PendingSafetyChecks :
WaitForInbuildReplica - PartitionId: xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
NextUpgradeDomain             : 1
UpgradeDomainsStatus          : { "0" = "InProgress";
                                  "1" = "Pending";
                                  "2" = "Pending";
                                  "3" = "Pending";
                                  "4" = "Pending" }

Service Fabric powershell module 下似乎相关的其他 cmdlet 仅有 Start-ServiceFabricClusterUpgradeResume-ServiceFabricClusterUpgradeUpdate-ServiceFabricClusterUpgrade

我已经尝试 Start-ServiceFabricClusterUpgrade 使用 -Force 开关,希望它能取消现有的挂起,并开始一个新的,但不幸的是没有。我还重新启动了正在进行的节点,但这也没有任何区别。

在没有 Stop-ServiceFabricClusterUpgrade 的情况下,我还能做些什么来停止这个过程吗?

我可以看到您实现此目标的两种方式:

  • 终止 Service Fabric 集群并重新创建它
  • 或者最好重新启动虚拟机规模集(实际上相当于重新启动服务器)。我确信有一种方法可以通过 Powershell 而不是通过 Azure 门户来执行此操作。

Troubleshoot application upgrades 表示 -

"An UpgradePhase of PreUpgradeSafetyCheck means there were issues preparing the upgrade domain before it was performed.The most common issues in this case are service errors in the close or demotion from primary code paths."

所以 SF 可能无法关闭服务可执行文件。最简单的方法可能是停用(重新启动)SF Explorer 输出中提到的节点。

我最后做的是一个一个登录到集群中的节点并重启,等待上一个节点恢复正常再重启下一个。

这修复了它,升级过程最终完成了。在 VMSS 上重新启动可能会达到同样的效果,但我不确定在重新启动期间是否会出现服务中断。它肯定会减少耗时。