部署Azure Web应用程序时最大限度减少停机时间的最佳实践 [英] Best practice for minimizing downtime when deploying Azure Web Apps
问题描述
我有一个应用程序服务计划,在该计划中,我已将我的解决方案的5个组件部署为Web应用程序。我使用Azure DevOps中的"发布管理"将代码部署到这些应用程序。
为了最大限度地减少部署期间的停机时间,我首先部署到分段槽,然后将分段槽交换到生产槽以完成部署。我已将App Service预热(如here的详细信息)配置为调用将在插槽交换过程中"预热"应用程序的终结点。
这似乎可行,但我有两个问题:
即使预热已经运行,插槽交换后向应用程序发出的第一个请求也需要很长时间。我怀疑这是因为生产插槽有一个"粘性/插槽设置",据我所知,这需要应用程序重启。为了测试这一点,我删除了插槽设置,但延迟仍然存在。
应用程序相互依赖,插槽交换(即使在Azure DevOps中并行启动)不能保证同时完成,这意味着新代码可能与旧代码交互。虽然我们可以解决此问题,但这并不是最佳方案。
在Azure中使用WebApp时,零宕机部署的当前"最佳实践"是什么?
与流量管理器重复的服务计划是否可行,如果不可行,您有什么建议?
推荐答案
我建议将本地CAHCE与部署插槽结合使用,以防止任何停机。
将粘滞应用设置WebSite_LOCAL_CACHE_OPTION添加到您的生产槽中,值始终为。如果您正在使用WEBSITE_LOCAL_CACHE_SIZEINMB,,还可以将其作为粘滞设置添加到生产插槽。
·创建过渡槽并发布到您的过渡槽。如果获得生产插槽的本地缓存的好处,则通常不会将分段槽设置为使用本地缓存来启用分段的无缝生成-部署-测试生命周期。
·根据您的暂存槽测试您的站点。
·准备好后,在暂存和生产插槽之间执行交换操作。
·粘滞设置包括名称和粘滞到插槽。因此,当暂存槽交换为生产时,它将继承本地缓存应用程序设置。新交换的生产插槽将在几分钟后针对本地缓存运行,并将作为交换后插槽预热的一部分进行预热。因此,插槽交换完成后,您的生产插槽将针对本地缓存运行。
请参阅Azure最佳实践文档:
https://docs.microsoft.com/en-us/azure/app-service/deploy-best-practices
https://docs.microsoft.com/en-us/azure/app-service/overview-local-cache
这篇关于部署Azure Web应用程序时最大限度减少停机时间的最佳实践的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!