C# 将ASP.NET网站版本投入生产的最佳方法(IIS)

C# 将ASP.NET网站版本投入生产的最佳方法(IIS),c#,asp.net,iis,C#,Asp.net,Iis,将网站投入生产以最大限度地减少由于初始编译和初始化而导致的停机时间的最佳方法是什么 我不喜欢IIS 8应用程序初始化模块,因为(据我所知)它需要更改特定于机器的配置(applicationHost.config),而我无法(而且无论如何也讨厌)这样做 有多大的.net网站开始投产?是否有一个理想的解决方案,在新版本完全启动并准备好替换旧版本之前,旧版本不会被禁用。您需要两个集群,可以使用ARR或NLB进行设置 集群中有两个节点,您只需禁用其中一个,以便所有流量都流向另一个节点 然后,在禁用的服务

将网站投入生产以最大限度地减少由于初始编译和初始化而导致的停机时间的最佳方法是什么

我不喜欢IIS 8应用程序初始化模块,因为(据我所知)它需要更改特定于机器的配置(applicationHost.config),而我无法(而且无论如何也讨厌)这样做


有多大的.net网站开始投产?是否有一个理想的解决方案,在新版本完全启动并准备好替换旧版本之前,旧版本不会被禁用。

您需要两个集群,可以使用ARR或NLB进行设置

集群中有两个节点,您只需禁用其中一个,以便所有流量都流向另一个节点

然后,在禁用的服务器上更新站点并对其进行预热。然后,您只需切换集群中的活动节点,以便所有新请求立即开始命中更新的服务器


然后在集群中静默地禁用另一个、升级、预热和启用。停机时间为零。此外,群集中至少有两个节点是支持故障切换场景的基本方式,应该被视为可靠网站的必备条件。

您需要两个节点的群集,可以使用ARR或NLB进行设置

集群中有两个节点,您只需禁用其中一个,以便所有流量都流向另一个节点

然后,在禁用的服务器上更新站点并对其进行预热。然后,您只需切换集群中的活动节点,以便所有新请求立即开始命中更新的服务器


然后在集群中静默地禁用另一个、升级、预热和启用。停机时间为零。此外,群集中至少有两个节点是支持故障切换场景的基本方式,应该被视为可靠网站的必备条件。

如果您不想使用NLB或外部负载平衡服务(这是最佳实践!),您可能不需要使用ARR+重写规则和多个站点。我不建议这么做,这有点老套

例如,假设您有1台IIS服务器和一个名为guestbook的应用程序,该应用程序位于guestbook.com,prod中的当前版本为5,您可以部署6

在服务器上创建了3个站点。只有80和443应该向世界开放

  • ARR_站点使用guestbook.com绑定在80/443上收听-此 是你将把你的重写规则挂起的地方
  • Guestbook V5在端口8080上侦听,绑定为localhost/127.0.0.1
  • Guestbook V6使用localhost/127.0.0.1绑定在端口1010上侦听
  • 在ARR_网站上创建URL_重写规则,该规则将重写进入guestbook.com:80/到127.0.0.1:8080(guestbook V5)的所有内容

    使用localhost/127.0.0.1绑定将guestbook V6部署为新站点端口1010

    从可以访问新站点的服务器访问新站点一次
    http://127.0.0.1:1010
    。这将初始化您的站点。此时,现实世界无法访问它,因为ARR正在将所有内容重新写入V5


    现在将您的重写规则更新为127.0.0.1:1010(留言簿V6)

    如果您不想使用NLB或外部负载平衡服务(这是最佳实践!),您可能不需要使用ARR+重写规则和多个站点。我不建议这么做,这有点老套

    例如,假设您有1台IIS服务器和一个名为guestbook的应用程序,该应用程序位于guestbook.com,prod中的当前版本为5,您可以部署6

    在服务器上创建了3个站点。只有80和443应该向世界开放

  • ARR_站点使用guestbook.com绑定在80/443上收听-此 是你将把你的重写规则挂起的地方
  • Guestbook V5在端口8080上侦听,绑定为localhost/127.0.0.1
  • Guestbook V6使用localhost/127.0.0.1绑定在端口1010上侦听
  • 在ARR_网站上创建URL_重写规则,该规则将重写进入guestbook.com:80/到127.0.0.1:8080(guestbook V5)的所有内容

    使用localhost/127.0.0.1绑定将guestbook V6部署为新站点端口1010

    从可以访问新站点的服务器访问新站点一次
    http://127.0.0.1:1010
    。这将初始化您的站点。此时,现实世界无法访问它,因为ARR正在将所有内容重新写入V5


    现在更新您的重写规则,指向127.0.0.1:1010(留言簿V6)

    您认为这是一个好的解决方案吗?在我的情况下,我只能使用LB;让一个LB引入单点故障,因此您至少需要2个LB(使用DNS循环或故障切换检查,丢失50%的通信量比100%的通信量更容易接受)。。。我认为这是一个解决问题的方法,实际上,这个问题不应该存在于服务器级别。我认为这是一个影响所有ASP.NET网站的致命问题,我不明白为什么微软的人从来没有真正解决过这个问题。他们解决了这个问题。看看WFF和ARR提供了什么。这是我们现在使用的一个完整的解决方案。WFF是否能够轻松地将我的包发布到服务器场上的所有服务器,而无需停机,也无需在某些负载平衡中“禁用”服务器?如果没有,与xcopy相比有哪些优势?(这一点都不讽刺,我喜欢学习新的有用的东西!)你认为这是一个好的解决方案吗?在我的情况下,我只能使用LB;让一个LB引入单点故障,因此您至少需要2个LB(使用DNS循环或故障切换检查,丢失50%的通信量比100%的通信量更容易接受)。。。我认为这是一个解决问题的方法,实际上,这个问题不应该存在于服务器级别。我认为这是一个影响所有ASP.NET网站的致命问题,我不明白为什么微软的人从来没有真正解决过这个问题。他们解决了这个问题。看看WFF和ARR提供了什么。这是我们现在使用的一个完整的解决方案。WFF能够轻松地将我的包发布到所有se吗