我已经通过Visual Studio发布将服务结构应用程序版本1.25.0发布到本地群集以及Azure中的群集。一切正常。
Visual Studio也使我可以选择升级应用程序。但是我找不到如何回滚和发布我的应用程序的先前版本,比如说Visual Studio中的1.23.0。
如果无法从Visual Studio中进行操作,是否可以通过Service Fabric资源管理器进行操作?
我见过类似Azure Service Fabric Rollback之类的帖子,但它们与PowerShell脚本有关,我更希望从Visual Studio或Service Fabric资源管理器中回滚。
答案 0 :(得分:2)
没有用于执行回滚或升级的 Service Fabric资源管理器选项或按钮,如果只是一个按钮,则部署中存在一些警告,您必须注意正确使用回滚,这样会增加犯错的机会。
使用脚本进行回滚并不那么复杂,您应该只需要几行代码就可以了,就像您链接的答案中提供的选项一样。
此外,回滚很简单,但在某些情况下可能很复杂,例如,更改现有服务的配置,备份,还原等,使用脚本make做一个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 Image存储中删除较旧的版本,如果您使用此方法,则应避免使用,因为您必须将较旧的版本复制到SF,然后应用如果需要回滚,请升级。更好的方法是实施一种算法,该算法每晚运行一次或在发行后运行,并删除旧版本并保留最后一个N。
。
另一种情况是: 升级期间服务失败
在这种情况下,由于Service Fabric会为您处理,因此更易于处理,因此,当您开始升级时,可以选择使其 自动 或 手册 。
在自动模式下,如果服务在启动时失败,则Service Fabric将看到它并重试几次,以防它持续存在,它将自动回滚到服务,并将应用程序自动回滚到以前的版本。
在手动模式下,Service Fabric将启动部署,但不会执行任何操作,您应该运行脚本以将部署继续到下一阶段或回滚。如果您具有非常敏感的服务,并且更新需要特别注意,主要是为了验证行为并在继续进行部署之前进行手动测试,则此方法很方便。
可以找到这些设置here