Azure网站在';什么在升级?

Azure网站在';什么在升级?,azure,web-deployment,Azure,Web Deployment,Azure网站在通过部署进行升级时会发生什么情况?通常它走得很快,所以你看不到它。但是,如果您有一个巨大的数据库,通过迁移脚本升级需要几分钟,那么在此期间会发生什么呢?是否所有试图访问网站的用户都被拒绝访问?他们会访问部分升级的网站还是会看到旧网站 有没有办法显示一个临时网站,只是一个静态网站显示“现在我们正在升级我们的系统”或其他什么?如果“缩放”选项卡中只有一个实例,则在运行时将升级您的网站。正如@Fabrizio所说,如果更改了许多文件,这将导致意外行为 如果您的站点使用.NET,您可以在

Azure网站在通过部署进行升级时会发生什么情况?通常它走得很快,所以你看不到它。但是,如果您有一个巨大的数据库,通过迁移脚本升级需要几分钟,那么在此期间会发生什么呢?是否所有试图访问网站的用户都被拒绝访问?他们会访问部分升级的网站还是会看到旧网站


有没有办法显示一个临时网站,只是一个静态网站显示“现在我们正在升级我们的系统”或其他什么?

如果“缩放”选项卡中只有一个实例,则在运行时将升级您的网站。正如@Fabrizio所说,如果更改了许多文件,这将导致意外行为

如果您的站点使用.NET,您可以在更新它之前通过FTP连接到它,并将
app_offline.htm
文件添加到根目录,在部署完成时,该文件将显示给所有访问者。然后在完成更新后删除该文件

或者,将实例计数更改为2或更多。这将应用Azure云服务使用的“更新域”概念,这意味着负载平衡器将在更新每个实例时将流量路由到其他实例。但是,当您进行数据库迁移时,这种方法可能会导致问题—您需要确保所进行的任何迁移都与应用程序域的早期版本向后兼容更新:找不到任何支持此操作的内容,但我假设此行为仅在保留模式下使用,因为它复制了大部分VM基础结构

更新

我发现网站(至少在共享模式下)使用ARRAffinity cookie应用粘性IP负载平衡。这意味着当存在此cookie时,用户将在每次请求时被路由回同一个实例。我找不到任何东西来确定在更新实例时这是否也适用于请求

另一次更新

看起来共享模式中的“实例”实际上不是实例,它们是工作线程,允许您处理更多负载。虽然这将使您更接近帐户限制,但它将提高吞吐量。因此,我希望文件系统以共享模式共享,并以保留模式复制。但是,您仍然只能看到一个FTP端点,因此您上载的文件看起来像是在所有实例之间复制的。将进行一些测试,然后重新开始:)

又一次更新


FTP中的文件将装入映射到d:\home\site的网络共享。这表明文件不会在实例之间复制。请阅读此处的详细信息:

如果要运行一个较长的迁移数据库脚本,我看到的唯一解决方案是:
-停止网站(手动或通过powershell)并在迁移结束时重新启动


-使用app_offline.htm使您的站点“脱机”,运行脚本,然后删除app_offline.htm

好问题。如果你得到“部分升级的网站”。部署网站时,会将文件发送到IIS。在长时间部署(秒)期间,由于部分部署内容或dll文件,您可能会在部署期间出错。我认为IIS没有办法进行“事务性部署”。让我知道你是否找到了做这件事的方法假设我有多个实例,并且我决定通过FTP上传app_offline.htm文件,那么所有实例都可以访问它吗?我在想——如果一个实例正在运行旧版本,另一个实例正在升级到新版本,那么它们必须具有包含的所有文件的单独版本。由于许多升级还包括数据库升级,我不太喜欢其他实例尝试访问不再存在的旧版本的数据库。这似乎取决于您使用的模式,请参阅我的更新:)确实有趣。因为只有一个FTP端点,所以听起来确实像是复制了文件。非常感谢您的回复。如果有多个实例正在运行该网站,我认为除了显示app_offline.htm页面之外,没有其他方法可以使用,请停止该网站,升级数据库,重新启动网站,最后删除app_offline.htm…如果您停止该网站,IIS将不会显示您的app_offline.htm。所以,不要停止网站。