我试图实现零宕机时间部署的Azure网络应用程序,其中数据库架构更新需要应用作为部署的一部分。如何使用数据库更新实现零宕机部署到Azure Web应用程序?
我有以下设置:
生产 Web应用程序与生产-DB连接字符串。
分段部署插槽与staging-db连接字符串。
我的伪部署过程是这样的:
- 充分利用生产DB数据库
- 配置分期插槽使用数据库副本
- 部署的副本代码到分段插槽
- 应用次架构更新到数据库副本
- 试运行应用程序在分期插槽(与更新的数据库)和预温它
- 如果一切正常,执行热插拔,使预在分期插槽-warmed应用程序上线,即成为采油槽,依然采用了更新的数据库
换句话说,热插拔后,我想无论是新代码和更新的数据库生活。
如果在这一点上出现问题,我可以再次更换插槽,使旧的生产应用程序(及其数据库)生效。
正如我现在明白了吧,当我换插槽,应用程序将使用生产槽的连接字符串,重新启动应用程序,并迫使我申请的数据库架构更新后更新的代码上线。
我希望我正确地描述这个。 :)这似乎应该是一个相当普遍的情况?
任何帮助或指针,非常感谢!
PS。我查看了Azure seamless upgrade when database schema changes,但该答案无效,因为我无法在不影响应用程序的情况下应用架构更新。
编辑:只是一个念头:也许我应该跳过把连接字符串作为门户设置,而不是保持它在web.config。这样,当交换时,应用程序将不需要重新启动,因为网络。配置将被包含在交换中,新的生产插槽将使用更新后的数据库。
编辑2:我认为当应用程序设置或连接字符串在插槽之间不同时,我错误地认为应用程序重新启动。看来我确实可以为部署插槽设置不同的连接字符串(指向数据库副本),然后在不重新启动应用程序的情况下切换影响网站访问者。
出于好奇,你找到了一个有效的解决方案吗? –
@ d.rodriguez下面是我们如何为Episerver网站做到的:https://tedgustaf.com/blog/2017/zero-downtime-deployment-of-episerver/ –