更新在IIS上运行的实时网站的最佳实践

时间:2011-05-20 11:25:03

标签: asp.net iis deployment iis-7

目前,当我们想要推出到我们的实时网站的更新时,我们运行一个.bat文件,将整个文件夹结构从我们的开发环境复制到实时服务器。这将使用新更新的新文件夹替换虚拟目录指向的文件夹。这是在服务器和IIS处于活动状态时完成的,显然是在用户访问网站时。

我们偶尔会收到文件或文件夹在更新后立即“锁定”而导致的错误,通常唯一的选择是停止IIS或重新启动服务器。我们猜测这种“锁定”是由.bat文件试图在IIS使用时覆盖文件引起的。

是否有其他人经历过这种情况和/或您推荐什么作为最快的方式来更新实时网站,停机时间最短(即几乎没有停机时间)。

感谢。

3 个答案:

答案 0 :(得分:5)

购买第二个网络服务器,购买负载均衡器。标记1服务器脱机,升级,重新联机。将服务器2标记为脱机,升级,重新联机。

答案 1 :(得分:5)

转发作为答案而不是评论,在那里有一个愚蠢的时刻!

如果您无法停机,那么最好的方法是运行另一个服务器副本,以便在您想要更新主服务器时将用户转移到该副本。然后,在更新后将用户转移回主数据库。

您可以使用位于另一台服务器上的State Server来确保在从一台服务器切换到另一台服务器时保持任何会话状态。

我们目前正在试验微软的Web Farm Framework,它似乎很好地做了这件事。

我们的设置涉及前端服务器,主要和辅助Web服务器以及单独的状态服务器。 WFF在两台计算机上保持Web应用程序的副本同步,状态服务器确保如果用户在请求之间切换服务器(或者他们当前的服务器脱机),他们就不会注意到更改。

要升级主数据库,请将其从负载平衡中取出,这会将所有请求转移到辅助服务器。进行升级,将其重新放入旋转,然后使用第二台服务器重复此过程。

答案 2 :(得分:0)

另一种选择是为每个部署在两个文件夹之间进行切换,例如blue-green deployment。因此,当蓝色文件夹当前处于活动状态时,您可以将新的代码库部署到绿色文件夹中,然后在准备就绪时将IIS设置更改为指向绿色文件夹。