如何使用数据库更新实现零Web服务器的停机时间部署?

Ted*_*erg 8 database deployment azure

我正在尝试实现Azure Web应用程序的零停机部署,其中数据库架构更新需要作为部署的一部分应用.

我有以下设置:

具有production-db连接字符串的生产 Web应用程序.

使用staging-db连接字符串暂存部署槽.

我的伪部署过程类似于:

  1. 制作生产数据库数据库的副本
  2. 配置Staging插槽以使用数据库副本
  3. 将代码部署到Staging插槽
  4. 架构更新应用于数据库副本
  5. Staging插槽中测试应用程序(使用更新的数据库)并预热它
  6. 如果一切正常,请执行热插拔,以便Staging插槽中的预热应用程序生效,即成为生产插槽,仍然使用更新的数据库

换句话说,在热交换之后,我希望新代码和更新的数据库都是实时的.

如果此时出现问题,我可以再次交换插槽,使旧的生产应用程序(及其数据库)生效.

据我所知,当我交换插槽时,应用程序将使用生产槽的连接字符串,重新启动应用程序并强制我在更新的代码生效应用数据库架构更新.

我希望我能正确地描述这一点.:)这似乎应该是一个相当常见的场景?

非常感谢任何帮助或指示!

PS.在数据库架构更改时查看了Azure无缝升级,但该答案无效,因为我无法在不影响应用程序的情况下应用架构更新.

编辑:只是一个想法:也许我应该跳过将连接字符串作为门户设置,而只是将其保留在web.config中.这样,在交换时,应用程序将不需要重新启动,并且由于web.config将包含在交换中,新的生产槽将使用更新的数据库.

编辑2:我认为当应用程序设置或连接字符串在插槽之间不同时,我错误地认为应用程序重新启动.看来我确实可以为部署插槽设置不同的连接字符串(指向数据库副本),然后在没有重新启动的情况下进行交换,从而影响网站访问者.

Don*_*art 0

你能不能把连接线粘在插槽上吗?

在此输入图像描述

完整详细信息请参见此处