Azure Web Apps:使用部署槽实现无缝部署

假设您在一家通过网络平台提供服务的医疗保健公司工作。该平台的用户界面设置为在Azure App Services中托管的PHP Web应用程序。经常会发布对应用程序源代码的更新,以增强功能或解决错误。然而,这些更新有时会引入问题:

  • 未检测到的错误尽管经过严格测试,测试人员偶尔会错过关键错误,导致在生产环境中出现问题。
  • 停机时间:当发现错误时,回滚更改会导致服务中断,这会让最终用户感到沮丧。
  • 部署缓慢部署和编译过程会影响应用程序的响应性,尤其是在高峰使用时段,导致用户不满。

有没有更好的解决方案来确保无缝更新而不中断服务?是的!微软Azure提供了一个强大的功能,称为部署插槽

Azure部署插槽

Microsoft Azure的部署 槽提供了一种高效可靠的方式来管理应用程序更新。使用部署槽,您可以同时维护新旧版本的应用程序。在两个版本之间进行切换就像点击几下鼠标那样简单,消除了需要耗时的代码回滚。 

部署槽是什么,它们如何工作?

Azure部署槽是Azure应用服务中的一个功能,允许您为部署和测试Web应用程序创建单独的环境,然后再将其提供给所有最终用户。每个部署槽都作为您的应用程序的一个独立实例运行,可以根据特定目的进行定制,比如: 

  • 演练 在移至生产环境之前测试和验证更改。
  • 生产 为最终用户提供稳定版本的应用程序。
  • 其他槽 根据您的定价计划,您可以为QA、测试或其他环境创建槽。

部署槽的主要特点

预热实例

当您部署到暂存槽时,槽会被预热。这意味着应用已完全初始化,并准备好处理用户请求,延迟最小。

将暂存槽交换到生产环境可确保没有停机时间或冷启动延迟。

无缝的流量重定向

在交换过程中,槽之间的流量重定向是无缝的,确保没有用户请求被丢弃。

回滚能力

如果在将新版本交换到生产环境后出现意外问题,您可以立即回滚到“最后已知良好”的配置。

部署槽解决的问题

生产前的错误检测

通过将新代码部署到暂存槽,测试人员可以在模拟生产环境的环境中验证应用程序。这最大程度地减少了未被检测到的错误的风险。 

无服务中断

由于应用在暂存槽中已经预热,因此切换到生产环境时不会有停机时间,为最终用户提供不间断的服务。

更快的部署

与传统部署方法相比,槽的交换是瞬间完成的,大大缩短了部署所需的时间,并提高了响应速度。

设置和配置 Azure Web 应用

1. 创建Web应用

使用您的帐户登录Azure 门户。搜索应用服务并单击。


单击Web 应用

根据您的应用程序要求选择1到7个值,然后单击查看 + 创建,接着单击创建。此演示中Web应用的名称为webappdemotosrs。

Click on Go to resource.

webappdemotosrs(Web 应用)可以通过默认域 URL 访问。

2. 创建部署插槽

单击部署插槽面板。

单击添加插槽

为插槽指定一个名称


选择是否从另一个插槽克隆设置。如果选择克隆,设置将从您指定的插槽复制到新的插槽中。

点击 添加


使用给定的名称创建插槽。

配置 Web 应用部署设置

在此任务中,您将配置 Web 应用部署设置。部署设置允许持续部署。这确保应用服务具有应用程序的最新版本。在暂存插槽中,选择“部署中心”,然后选择设置。在源下拉列表中,选择外部 Git。注意其他选项。

  • 在存储库字段中输入:https://github.com/Azure-Samples/php-docs-hello-world
  • 在分支字段中输入 master。选择保存。
  • 从暂存插槽中选择“概述”。
  • 选择默认域链接,并在新标签页中打开URL。
  • 验证暂存槽显示“Hello World”。

3. 部署槽交换

点击 交换

点击开始交换

交换完成后,将弹出通知显示其状态。

4. 在 部署槽交换

生产默认域URL输出:

暂存 默认域URL输出将如下所示


这证明了在部署槽交换后,生产槽开始运行新代码,而暂存槽恢复为旧代码。

总结

在本文中,我们学习了如何在Azure App Service中创建和使用部署槽。我们使用槽来测试和暂存应用程序的新版本,并交换这些部署槽。我们可以交换槽以将经过测试的应用程序部署到生产环境,并在出现意外问题时回滚已部署的应用程序。在使用部署槽时,请记住Azure在交换之前会预热应用程序,并且流量重定向是即时的。结果是您的应用程序在无服务中断或性能下降的情况下部署。

Source:
https://dzone.com/articles/azure-web-apps-deployment-slots