Azure部署槽交换对应用程序是否触发重启?

87次阅读
没有评论

问题描述

在Azure中的Web应用程序中使用了两个部署槽(staging和production)。该应用程序的目的是绘制一个形状。当前部署到生产槽的版本绘制一个正方形,部署到staging槽的版本绘制一个圆形。这两个应用程序版本都有一个名为“Colour”的应用设置,用于控制形状的颜色。重要的是,这是一个部署槽设置,如下面的示例截图所示:
Azure部署槽交换对应用程序是否触发重启?
在staging槽中,该设置的值为蓝色,在生产槽中为绿色。当在staging槽中查看应用程序时,会绘制一个蓝色的圆形。在生产槽中查看应用程序时,会绘制一个绿色的正方形。当我将staging槽中的代码与生产槽进行交换,并在生产槽中查看应用程序时,会绘制一个绿色的圆形。

用户对此感到困惑。槽交换的一个重要优势是,可以将预热的staging代码与生产槽交换,从而防止用户遭受停机时间或冷启动性能问题。然而,通过将staging应用程序与在部署槽设置中具有不同值的生产槽进行交换,是不是已经对应用程序配置进行了更改,从而触发了重启?如果我手动修改web.config或在Azure中更新部署槽设置,槽中的应用程序将重新启动。那么,槽交换是如何避免这种情况的呢?

解决方案

注意:以下解决方案基于提供的问答数据和我的知识库,可能存在版本差异,请确保在执行操作之前做好备份,并根据最新文档进行操作。

在Azure中进行部署槽交换时,如果已经将应用程序部署到槽中并且启用了“始终运行”(Always On)模式,那么交换过程不会触发任何形式的重启。然而,根据文档中提供的信息,如果满足以下条件之一,则可能会触发重启:

  1. 不支持“始终运行”模式:如果应用程序未启用“始终运行”模式,交换槽可能会触发重启。因此,在进行部署槽交换之前,确保应用程序已启用“始终运行”模式。

  2. 文件更改或配置更改:如果在部署槽交换期间对文件或配置进行了更改,交换可能会触发重启。为避免这种情况,交换前应确保没有对文件或配置进行重要更改。

  3. 规模设置更改:如果在交换期间更改了应用程序的规模设置,可能会触发重启。因此,在进行槽交换之前,确保规模设置已根据需求进行配置。

对于更详细的信息,可以参考Azure官方文档中关于部署槽交换的内容。文档提供了详细的说明,帮助你理解在不同情况下的应用程序行为以及如何最大程度地避免重启。

参考链接:https://docs.microsoft.com/en-us/azure/app-service/deploy-staging-slots#what-happens-during-a-swap

通过确保满足上述条件,并遵循Azure文档中的建议,你可以在部署槽交换时避免不必要的应用程序重启,从而实现平滑的交换操作。

正文完