假设您在一家通过网络平台提供服务的医疗保健公司工作。该平台的用户界面设置为在Azure App Services中托管的PHP Web应用程序。经常会发布对应用程序源代码的更新,以增强功能或解决错误。然而,这些更新有时会引入问题:
- 未检测到的错误:尽管经过严格测试,测试人员偶尔会错过关键错误,导致在生产环境中出现问题。
- 停机时间:当发现错误时,回滚更改会导致服务中断,这会让最终用户感到沮丧。
- 部署缓慢:部署和编译过程会影响应用程序的响应性,尤其是在高峰使用时段,导致用户不满。
有没有更好的解决方案来确保无缝更新而不中断服务?是的!微软Azure提供了一个强大的功能,称为部署插槽。
Azure部署插槽
Microsoft Azure的部署 槽提供了一种高效可靠的方式来管理应用程序更新。使用部署槽,您可以同时维护新旧版本的应用程序。在两个版本之间进行切换就像点击几下鼠标那样简单,消除了需要耗时的代码回滚。
部署槽是什么,它们如何工作?
Azure部署槽是Azure应用服务中的一个功能,允许您为部署和测试Web应用程序创建单独的环境,然后再将其提供给所有最终用户。每个部署槽都作为您的应用程序的一个独立实例运行,可以根据特定目的进行定制,比如:
- 演练: 在移至生产环境之前测试和验证更改。
- 生产: 为最终用户提供稳定版本的应用程序。
- 其他槽: 根据您的定价计划,您可以为QA、测试或其他环境创建槽。
部署槽的主要特点
预热实例
当您部署到暂存槽时,槽会被预热。这意味着应用已完全初始化,并准备好处理用户请求,延迟最小。
将暂存槽交换到生产环境可确保没有停机时间或冷启动延迟。
无缝的流量重定向
在交换过程中,槽之间的流量重定向是无缝的,确保没有用户请求被丢弃。
回滚能力
如果在将新版本交换到生产环境后出现意外问题,您可以立即回滚到“最后已知良好”的配置。
部署槽解决的问题
生产前的错误检测
通过将新代码部署到暂存槽,测试人员可以在模拟生产环境的环境中验证应用程序。这最大程度地减少了未被检测到的错误的风险。
无服务中断
由于应用在暂存槽中已经预热,因此切换到生产环境时不会有停机时间,为最终用户提供不间断的服务。
更快的部署
与传统部署方法相比,槽的交换是瞬间完成的,大大缩短了部署所需的时间,并提高了响应速度。
设置和配置 Azure Web 应用
1. 创建Web应用
使用您的帐户登录Azure 门户。搜索应用服务并单击。
单击Web 应用。
根据您的应用程序要求选择1到7个值,然后单击查看 + 创建,接着单击创建。此演示中Web应用的名称为webappdemotosrs。
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