手动回滚应用程序/服务
Manual rollback of an application / service
我有一个 Service Fabric 应用程序,它下面有一些服务。他们目前都处于 1.0.0 版本。
我将更新部署到集群 2.0.0 版。一切正常 运行,部署成功。我注意到一个非常大的版本。有没有办法手动回滚到1.0.0版本?我唯一发现的是升级期间自动回滚。
只需遵循相同的升级过程,但目标是您的 1.0.0 版本。 "Rollback" 只是旧版本的 "upgrade"。
马特的回答是正确的,但我会在这里详细说明一下。
关键在于了解应用程序部署期间的不同步骤:
Visual Studio 将这些合并为单个 "publish" 和 "upgrade" 操作,使其变得简单方便。但这些实际上是 Service Fabric 管理中的单独命令 API(通过 PowerShell、C# 或 HTTP)。让我们快速看一下这些步骤是什么:
复制:
这只是获取您编译的应用程序包并将其复制到集群中。没什么大不了的。
注册:
这是您案例中的重要步骤。 Register 基本上告诉集群它现在可以创建您的应用程序的实例。最重要的是,您可以注册同一应用程序的多个版本。此时,您的应用程序尚未 运行ning。
创建:
这是创建并启动已注册应用程序实例的地方 运行ning。
在我们开始升级之前,让我们看看您的集群上有什么。第一次使用 1.0.0 版本的应用程序(称为 FooType)完成此部署过程时,您将只注册了一个类型:
FooType 1.0.0
现在您可以升级了。您首先 复制 您的带有新版本 (2.0.0) 的新应用程序包到集群。然后,您注册 应用程序的新版本。现在您已经注册了该类型的两个版本:
FooType 1.0.0
FooType 2.0.0
然后当您 运行 upgrade 命令时,Service Fabric 会使用您的 1.0.0 实例并将其升级到 2.0.0。如果升级完成后需要将其回滚,只需使用相同的 upgrade 命令将应用程序实例从 2.0.0 "upgrade" 回滚到 1.0.0。您可以这样做,因为 1.0.0 仍在集群中注册。请注意,版本号实际上对 Service Fabric 没有意义,只是它们是不同的字符串。如果需要,我可以使用 "orange" 和 "banana" 作为我的版本字符串。
所以这里的关键是,当您从 Visual Studio 执行 "publish" 来升级您的应用程序时,它会执行所有这些步骤:复制、注册和升级。在您的情况下,您实际上并不想重新注册 1.0.0,因为它已经在集群上注册了。您只想再次发出 upgrade 命令。
有关 更长 的解释,请参阅:
我有一个 Service Fabric 应用程序,它下面有一些服务。他们目前都处于 1.0.0 版本。
我将更新部署到集群 2.0.0 版。一切正常 运行,部署成功。我注意到一个非常大的版本。有没有办法手动回滚到1.0.0版本?我唯一发现的是升级期间自动回滚。
只需遵循相同的升级过程,但目标是您的 1.0.0 版本。 "Rollback" 只是旧版本的 "upgrade"。
马特的回答是正确的,但我会在这里详细说明一下。
关键在于了解应用程序部署期间的不同步骤:
Visual Studio 将这些合并为单个 "publish" 和 "upgrade" 操作,使其变得简单方便。但这些实际上是 Service Fabric 管理中的单独命令 API(通过 PowerShell、C# 或 HTTP)。让我们快速看一下这些步骤是什么:
复制: 这只是获取您编译的应用程序包并将其复制到集群中。没什么大不了的。
注册: 这是您案例中的重要步骤。 Register 基本上告诉集群它现在可以创建您的应用程序的实例。最重要的是,您可以注册同一应用程序的多个版本。此时,您的应用程序尚未 运行ning。
创建: 这是创建并启动已注册应用程序实例的地方 运行ning。
在我们开始升级之前,让我们看看您的集群上有什么。第一次使用 1.0.0 版本的应用程序(称为 FooType)完成此部署过程时,您将只注册了一个类型:
FooType 1.0.0
现在您可以升级了。您首先 复制 您的带有新版本 (2.0.0) 的新应用程序包到集群。然后,您注册 应用程序的新版本。现在您已经注册了该类型的两个版本:
FooType 1.0.0
FooType 2.0.0
然后当您 运行 upgrade 命令时,Service Fabric 会使用您的 1.0.0 实例并将其升级到 2.0.0。如果升级完成后需要将其回滚,只需使用相同的 upgrade 命令将应用程序实例从 2.0.0 "upgrade" 回滚到 1.0.0。您可以这样做,因为 1.0.0 仍在集群中注册。请注意,版本号实际上对 Service Fabric 没有意义,只是它们是不同的字符串。如果需要,我可以使用 "orange" 和 "banana" 作为我的版本字符串。
所以这里的关键是,当您从 Visual Studio 执行 "publish" 来升级您的应用程序时,它会执行所有这些步骤:复制、注册和升级。在您的情况下,您实际上并不想重新注册 1.0.0,因为它已经在集群上注册了。您只想再次发出 upgrade 命令。
有关 更长 的解释,请参阅: