将网站投入生产以最大限度地减少因初始编译和初始化而导致的停机时间的最佳方法是什么?
我不喜欢IIS 8应用程序初始化模块,因为(根据我的理解)它需要更改机器特定的配置(applicationHost.config),我无法(并且无论如何)讨厌这样做
.net网站有多大投入生产?是否有一个理想的解决方案,在旧版本完全启动并准备替换旧版本之前,旧版本不会被禁用。
答案 0 :(得分:4)
您需要两个群集,可以使用ARR或NLB进行设置。
拥有群集的两个节点,您只需禁用一个节点,以便所有流量都转到另一个节点。
然后更新已禁用服务器上的站点并进行预热。然后,您只需切换群集中的活动节点,以便所有新请求立即开始到达更新的服务器。
然后,您静默禁用另一个,升级,预热并在群集中启用。停机时间为零。此外,在群集中至少有两个节点是支持故障转移方案的基本方法,应该被视为可靠网站的必备条件。
答案 1 :(得分:1)
如果您不想使用NLB或外部负载平衡服务(这是最佳做法!)您可能会使用ARR +重写规则和多个站点。我不建议这是一种hacky
例如,假设您有1个IIS服务器和一个名为guestbook的应用程序,它位于guestbook.com prod中的当前版本为5,您已准备好部署6
在服务器上有3个站点已创建。只有80和443应向世界开放
在ARR_SITE上创建一个URL_Rewrite规则,该规则将把进入 guestbook.com:80 / 的所有内容重写为127.0.0.1:8080(留言簿V5)
将guestbook V6部署为具有localhost / 127.0.0.1绑定的新站点端口1010。
从可以访问新网站的服务器访问新网站http://127.0.0.1:1010
。这将初始化您的网站。此时现实世界无法访问它,因为ARR正在将所有内容重写为V5
现在更新您的重写规则以指向127.0.0.1:1010(Guestbook V6)