Azure网站在通过部署升级时会发生什么?通常它会如此快速,所以你看不到它。但是,如果你有一个巨大的数据库,通过迁移脚本需要几分钟升级,那么在此期间会发生什么呢?是否所有试图访问该网站的用户都被拒绝访问?他们是否可以访问部分升级的网站,或者他们会看到旧网站吗?
有没有办法让一个临时网站显示,只是一个静态的网站显示“现在我们正在升级我们的系统”或什么?
答案 0 :(得分:2)
如果“比例”标签中只有一个实例,则您的网站会在运行时升级。正如@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/
答案 1 :(得分:1)
如果要运行长迁移数据库脚本,我看到的唯一解决方案是:
- 停止网站(手动或通过powershell)并在迁移结束时重新启动
或
- 使用app_offline.htm将您的网站“脱机”,运行脚本然后删除app_offline.htm