我有一个服务结构应用程序,该应用程序在启动时会从KeyVault读取。更改KeyVault值时,我们必须重新启动节点以使其读取新值。这将导致同一节点上的其他应用程序崩溃。
我正在尝试编写PowerShell脚本以重新启动服务结构应用程序,我使以下脚本在1节点群集上运行,但是在多节点群集上不起作用。
Restart-ServiceFabricDeployedCodePackage -ApplicationName $appName -CommandCompletionMode Verify -ServiceName $ServiceName -TimeoutSec 8000
当我有一个多节点群集时,这不起作用。我不知道为什么它不起作用。
我做错什么了吗?
答案 0 :(得分:0)
我使此powershell命令起作用的最小参数数量是:
-ApplicationName
-NodeName
-ServiceManifestName
-CodePackageName
-ServicePackageActivationId
赞:
Restart-ServiceFabricDeployedCodePackage -ApplicationName fabric:/App -NodeName "Node01" -ServiceManifestName "ServicePkg" -CodePackageName "Code" -ServicePackageActivationId xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
使用此命令有时会出现奇怪的错误Did not find deployed code package for fabric:/App:Code on node Node01
,但至少在每次重新启动服务时都会出现。我玩过其他参数组合,但没有运气。看来上面的参数是必须的。
编写将在所有节点上重新启动特定服务(并且仅此服务)的通用powershell脚本,我首先要获取运行Get-ServiceFabricNode
的所有节点名称,然后依次按顺序运行Get-ServiceFabricDeployedCodePackage -NodeName Node01 -ApplicationName fabric:/App -ServiceManifestName ServicePkg
的这些名称取ServicePackageActivationId
这是唯一的动态参数。最后使用ServicePackageActivationId
运行Restart-ServiceFabricDeployedCodePackage