2016-05-12 16 views
0

我有一个服务结构应用程序,它下面有一些服务。他们目前都在1.0.0版本。手动回滚应用程序/服务

我将更新部署到版本2.0.0的群集。一切运行良好,部署成功。我注意到一个非常大的版本。有没有办法手动回滚到1.0.0版本?我发现的唯一情况是在升级过程中自动回滚。

回答

4

马特的回答是正确的,但我会在这里详细说明一下。

关键是在应用程序部署期间理解不同的步骤:

Visual Studio的推出,这些成单一的“发布“和”升级“操作让您轻松方便。但是这些实际上是Service Fabric管理API中的单个命令(通过PowerShell,C#或HTTP)。让我们快速看看这些步骤是什么:

复制: 这只需要您编译的应用程序包并将其复制到群集。没什么大不了。

注册: 这是您的案例中的重要一步。 Register基本上告诉集群它现在可以创建应用程序的实例。最重要的是,您可以注册同一个应用程序的多个版本。此时,您的应用程序尚未运行。

创建: 这是您的注册应用程序的实例创建并开始运行的地方。

在我们升级之前,让我们看看你的集群上有什么。第一次经历与你的应用程序的1.0.0版本的部署过程(称之为FooType),您只有一种类型注册地:

FooType 1.0.0

现在你已经准备好升级。您首先需要复制您的新应用程序包包含新版本(2.0.0)直到群集。然后,你注册你的应用程序的新版本。现在你有一个类型注册的两个版本:

FooType 1.0.0

FooType 2.0.0

然后,当你运行升级指挥,服务面料采用1.0.0的实例,并将其升级到2.0.0 。如果您需要在升级完成后将其回滚,则只需使用相同的升级命令将应用程序实例从2.0.0“升级”回到1.0.0。您可以这样做,因为1.0.0仍在群集中注册。请注意,除了它们是不同的字符串之外,版本号实际上对Service Fabric没有意义。如果需要,我可以使用“orange”和“banana”作为我的版本字符串。

因此,这里的关键是,当您从Visual Studio进行“发布”以升级应用程序时,它将执行所有这些步骤:复制,注册和升级。在你的情况下,你实际上并不想重新注册1.0.0,因为它已经在集群上注册了。您只需要再次发出升级命令。

对于偶更长说明,请参阅:Blue/Green Deployments with Azure ServiceFabric

+0

只要版本已注册,Service Fabric是否保留应用程序包的“副本”? – Dismissile

0

只需按照相同的升级步骤,但是改为定位1.0.0版本。 “回滚”只是对旧版本的“升级”。

+0

与“尝试升级应用程序,但应用程序的版本没有被更改失败。确保在升级之前更新应用程序清单中的版本。'我没有更新它......回到1.0.0。事实上,我在版本标签上做了一次git checkout。 – Dismissile

+0

如果本地应用程序清单中的ApplicationTypeVersion值与群集中存在的应用程序的ApplicationTypeVersion匹配,您将看到该错误。验证本地项目和群集之间的版本和应用程序名称。使用Service Fabric Explorer是验证群集上定义的内容的便捷工具。 –

+0

我不确定我关注。我有我的应用程序类型WebreferenceApplicationType在资源管理器中显示版本1.0.0和1.0.1。正在运行的应用程序是版本1.0.1。你说什么步骤是再次发布1.0.0?因为发布失败,当我尝试做1.0.0(例如回滚或升级到我的旧版本) – Dismissile