【问题标题】:Service fabric rollback to previous version from visual stuido or service fabric explorer从 Visual Studio 或 Service Fabric Explorer 回滚到以前版本的 Service Fabric
【发布时间】:2019-04-17 07:41:30
【问题描述】:

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

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

如果在 Visual Studio 中无法实现,是否可以从 Service Fabric Explorer 中实现?

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

【问题讨论】:

  • 我认为 SFX(服务结构资源管理器)不可能做到这一点
  • 实际上,如果您没有取消注册该应用程序,您应该可以这样做
  • 你的意思是取消配置类型?
  • 是的,输入和应用程序。

标签: azure-service-fabric service-fabric-stateless


【解决方案1】:

没有 Service Fabric Explorer 选项或按钮来进行回滚或升级,部署中有一些警告您必须注意正确使用回滚,如果它只是一个按钮,这会增加犯错的机会。

使用脚本的回滚并不那么复杂,您应该只需几行代码就可以做到,就像您链接的答案中提供的选项一样。

此外,回滚操作很简单,但在某些情况下可能会很复杂,例如,更改现有服务的配置、备份、恢复等,使用脚本制作 UI 来处理许多情况会很棘手它更加灵活和动态。今天的脚本很简单,但如果将来添加新功能,它不需要太多更改即可支持它。

关于场景,您可以使用其他方法,例如:

第一种情况是:部署成功,但应用程序行为不正确

这种情况很常见,新版本部署成功,服务运行无错误,但应用有bug或者没有按预期运行。

要回滚到之前的版本,您必须升级应用程序并以之前部署的应用程序版本为目标。只是一个简单的升级命令,不幸的是没有“以前的版本”存储在某个地方,你必须在某个地方跟踪以前的版本,这样你才能找到以前的版本。

该命令必须手动运行,例如:

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

这些设置可以在here找到

【讨论】:

    猜你喜欢
    • 2019-05-10
    • 2018-03-07
    • 2015-12-24
    • 2017-09-02
    • 2018-05-05
    • 2018-05-30
    • 2018-07-03
    • 2017-07-05
    • 2019-11-30
    相关资源
    最近更新 更多