0

我已通过 Visual Studio 发布将 Service Fabric 应用程序版本 1.25.0 发布到本地集群以及 Azure 中的集群。一切正常。

Visual Studio 也为我提供了升级应用程序的选项。但是我无法找到如何回滚和发布我的应用程序的先前版本,比如说来自 Visual Studio 的 1.23.0。

如果无法从 Visual Studio 中实现,是否可以从服务结构资源管理器中实现?

我看过Azure Service Fabric Rollback之类的帖子,但它们与 PowerShell 脚本有关,我更喜欢从 Visual Studio 或 Service Fabric Explorer 回滚。

4

1 回答 1

3

没有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 将启动部署,但不会执行任何操作,您应该运行脚本以继续部署到下一阶段或回滚。如果您有非常敏感的服务并且更新需要格外小心,这种方法很方便,主要是在继续部署之前验证行为并进行手动测试。

这些设置可以在这里找到

于 2018-11-14T13:42:28.693 回答