我有一个在启动时从 KeyVault 读取的 Service Fabric 应用程序。当我们更改 KeyVault 值时,我们必须重新启动节点才能读取新值。这会导致同一节点上的其他应用程序出现故障。
我正在尝试编写一个 PowerShell 脚本来重新启动服务结构应用程序,以下脚本可以在 1 节点集群上运行,但它无法在多节点集群上运行。
Restart-ServiceFabricDeployedCodePackage -ApplicationName $appName -CommandCompletionMode Verify -ServiceName $ServiceName -TimeoutSec 8000
当我有一个多节点集群时,这不起作用。我不明白为什么它不起作用。
我做错了什么吗?
最佳答案
我使此 powershell 命令起作用的最少参数是:
-应用程序名称
-节点名称
-ServiceManifestName
-CodePackageName
-ServicePackageActivationId
像这样:
重新启动-ServiceFabricDeployedCodePackage -ApplicationName Fabric:/App -NodeName“Node01”-ServiceManifestName“ServicePkg”-CodePackageName“Code”-ServicePackageActivationId xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
使用此命令有时会出现奇怪的错误在节点 Node01 上找不到 Fabric:/App:Code 的部署代码包
但至少每次服务重新启动时都是如此。我尝试过其他参数组合,但没有运气。看来上面的参数是必须的。
编写在所有节点上重新启动特定服务(并且仅此服务)的通用 powershell 脚本,我首先会获取运行 Get-ServiceFabricNode
的所有节点名称,然后迭代这些名称运行 Get-ServiceFabricDeployedCodePackage -NodeName Node01 -ApplicationName Fabric:/App -ServiceManifestName ServicePkg
以便获取 ServicePackageActivationId
这是唯一动态参数。最后使用 ServicePackageActivationId
运行 Restart-ServiceFabricDeployedCodePackage
关于azure-service-fabric - Service Fabric 重启应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56376974/