Azure 网站在通过部署升级时会发生什么情况?通常它走得很快,所以你看不到它。但是如果你有一个巨大的数据库,通过迁移脚本需要几分钟来升级,那么在此期间会发生什么?是否所有尝试访问该网站的用户都被拒绝访问?他们会访问部分升级的网站还是会看到旧网站?
有没有办法显示一个临时网站,只是一个显示“现在我们正在升级我们的系统”之类的静态网站?
Azure 网站在通过部署升级时会发生什么情况?通常它走得很快,所以你看不到它。但是如果你有一个巨大的数据库,通过迁移脚本需要几分钟来升级,那么在此期间会发生什么?是否所有尝试访问该网站的用户都被拒绝访问?他们会访问部分升级的网站还是会看到旧网站?
有没有办法显示一个临时网站,只是一个显示“现在我们正在升级我们的系统”之类的静态网站?
如果您在“规模”选项卡中只有一个实例,您的站点将在运行时进行升级。正如@Fabrizio 所说,如果更改了许多文件,这将导致意外行为。
如果您的站点使用 .NET,您可以在更新之前通过 FTP 连接到它,并将app_offline.htm
文件添加到根目录,该文件将在部署完成时显示给所有访问者。然后在完成更新后删除文件。
或者,将实例计数更改为 2 或更多。这将应用 Azure 云服务使用的“更新域”的概念,这意味着负载均衡器将在更新每个实例时将流量路由到其他实例。但是,当您进行数据库迁移时,这种方法可能会导致问题 - 您需要确保所做的任何迁移都与应用程序域的先前版本向后兼容。 更新:找不到任何支持这一点的东西,但我认为这种行为仅在保留模式下使用,因为它复制了大部分 VM 基础架构。
更新
我发现网站(至少在共享模式下)使用 ARRAffinity cookie 来应用粘性 IP 负载平衡。这意味着当此 cookie 存在时,用户将在每个请求上被路由回同一个实例,我找不到任何东西来确定这是否也适用于更新实例时的请求。
另一个更新
看起来共享模式下的“实例”实际上并不是实例,它们是允许您处理更多负载的工作“线程”。尽管这将使您更接近帐户限制,但它会增加吞吐量。因此,我希望文件系统以共享模式共享并以保留模式复制。但是,您仍然只能看到一个 FTP 端点,因此您上传的文件看起来像是在所有实例之间复制的。将做一些测试并重新开始:)
又一次更新
FTP 中的文件挂载到映射到 d:\home\site 的网络共享。这表明文件不会在实例之间复制。在此处阅读更多信息:http: //azure.microsoft.com/en-us/documentation/articles/web-sites-available-operating-system-functionality/
如果您要运行较长的迁移数据库脚本,我看到的唯一解决方案是:
- 停止网站(手动或通过 powershell)并在迁移结束时重新启动
或
- 使用 app_offline.htm 使您的网站“离线”,运行脚本,然后删除 app_offline.htm