【问题标题】:Best practice for updating a live website running on IIS更新在 IIS 上运行的实时网站的最佳实践
【发布时间】:2011-08-29 14:21:11
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 如果您不能停机,那么最好的办法是运行另一个服务器副本,以便在您想要更新主服务器时将用户转移到该副本。然后在更新后将用户转移回主节点。您可以使用位于另一台服务器上的状态服务器来确保在从一台服务器切换到另一台服务器时保持任何会话状态。我们目前正在试验微软的 Web Farm Framework,它似乎在这种事情上做得很好。

标签: asp.net iis deployment iis-7


【解决方案1】:

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

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

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

我们目前正在试验微软的 Web Farm Framework,它似乎在这种事情上做得很好。

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

要升级主服务器,请将其从负载平衡中移除,这会将其所有请求转移到辅助服务器。进行升级,将其重新轮换,然后在第二台服务器上重复该过程。

【讨论】:

    【解决方案2】:

    购买第二台网络服务器,购买负载平衡器。将 1 台服务器标记为离线,升级,重新上线。将服务器 2 标记为离线、升级、恢复在线。

    【讨论】:

    • 感谢您的回复,我们已经有了您描述的设置。但是,服务器运行许多 Web 应用程序 (10+),我们的开发人员每天会进行许多更新,因此我们希望使更新过程尽可能简单和快速。这就是为什么简单的 .bat 文件方法到目前为止运行良好的原因。
    • 代码库一天更新很多?这不好。如果您只是在 aspx 页面本身中进行 html 或标记更改,您应该能够更新服务器而无需使它们脱机。但是,如果您经常更新背后的代码或控制器代码.......
    【解决方案3】:

    另一种选择是为每个部署设置两个交替使用的文件夹,例如blue-green deployment。因此,当蓝色文件夹当前处于活动状态时,您将新的代码库部署到绿色文件夹,然后当它准备好时,您将 IIS 设置更改为指向绿色文件夹。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-06
      • 1970-01-01
      • 2010-12-07
      • 2011-06-09
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 2011-08-28
      相关资源
      最近更新 更多