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

时间:2016-11-23 20:51:28

标签: database azure deployment

我尝试实现Azure网络应用的零停机时间部署,其中数据库架构更新需要作为部署的一部分应用。

我有以下设置:

带有 production-db 连接字符串的

生产网络应用。

使用 staging-db 连接字符串

暂存部署位置。

我的伪部署过程类似于:

  1. 制作 production-db 数据库
  2. 的副本
  3. 配置暂存插槽以使用数据库副本
  4. 将代码部署到暂存广告位
  5. 架构更新应用于数据库副本
  6. 暂存插槽中测试运行应用程序(使用更新的数据库)并预热它
  7. 如果一切正常,请执行热插拔,以便暂存插槽中预热的应用程序生效,即成为生产插槽,仍在使用更新的数据库
  8. 换句话说,在热插拔之后,我希望新代码和更新的数据库都是实时的。

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

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

    我希望我能正确地描述这一点。 :)这似乎应该是一个相当普遍的情况?

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

    PS。我已查看Azure seamless upgrade when database schema changes,但该答案无效,因为我无法在不影响应用程序的情况下应用架构更新

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

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

1 个答案:

答案 0 :(得分:0)

你能否让连接字符串粘到插槽上?

enter image description here

完整详情为here