没有Service Fabric Explorer选项或按钮来进行回滚或升级,部署中有一些警告,您必须注意正确使用回滚,如果它只是一个按钮,则会增加出错的机会。
使用脚本的回滚并不那么复杂,您应该只需几行代码就可以做到,就像您链接的答案中提供的选项一样。
此外,回滚很简单,但在某些情况下可能很复杂,例如更改现有服务的配置、备份、恢复等,做一个 UI 来处理许多场景会很棘手,使用脚本使其更灵活和动态的。今天的脚本很简单,但如果将来添加新功能,它不需要很多更改来支持它。
关于场景,您可以使用其他方法,例如:
第一种情况是:部署成功但应用程序行为不正确
这种情况很常见,新版本部署成功,服务运行无错误,但应用程序出现错误或无法按预期运行。
要回滚到以前的版本,您必须升级应用程序并以以前部署的应用程序版本为目标。只是一个简单的升级命令,不幸的是没有“以前的版本”存储在某个地方,你必须在某个地方跟踪以前的版本,这样你才能找到以前的版本。
该命令必须手动运行,例如:
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000 -FailureAction Rollback -Monitored
该脚本Deploy-FabricApplication.ps1
有一个UnregisterUnusedApplicationVersionsAfterUpgrade
从 ServiceFabric 映像存储中删除旧版本的参数,如果您使用这种方法,您应该避免,因为您必须将旧版本复制到 SF,然后在需要回滚时应用升级。更好的方法是实现一种在夜间或发布后运行的算法,并删除旧版本并保留最后的 N。
.
另一种情况是:升级过程中服务失败
在这种情况下更容易处理,因为 Service Fabric 会为您处理,当您开始升级时,您可以选择将其设为自动或手动。
在自动中,如果服务在启动时失败,Service Fabric 会看到它并重试几次,如果仍然存在,它会自动回滚到服务和应用程序到以前的版本。
在手动模式下,Service Fabric 将启动部署,但不会执行任何操作,您应该运行脚本以继续部署到下一阶段或回滚。如果您有非常敏感的服务并且更新需要格外小心,这种方法很方便,主要是在继续部署之前验证行为并进行手动测试。
这些设置可以在这里找到