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

本文关键字:IIS 最佳 方式 投入生产 ASP NET 网站 版本 | 更新日期: 2023-09-27 18:33:34

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

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

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

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

你需要一个由两个人组成的集群,可以使用 ARR 或 NLB 进行设置。

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

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

然后,您静默地禁用另一个,升级,预热并在集群中启用。停机时间为零。此外,群集中至少有两个节点是支持故障转移方案的基本方法,应将其视为可靠网站的必备条件。

如果您不想使用 NLB 或外部负载平衡服务(这是最佳做法!您可能会使用 ARR+ 重写规则和多个站点。我不建议这有点笨拙

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

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

  1. ARR_SITE 在 80/443 上侦听,绑定为 guestbook.com - 这是您将挂起重写规则的地方
  2. 留言簿 V5 侦听端口 8080,绑定本地主机/127.0.0.1
  3. 留言簿 V6 侦听端口 1010,绑定为 localhost/127.0.0.1

在ARR_SITE创建一个URL_Rewrite规则,该规则将重写 guestbook.com:80/ 的所有内容,以 127.0.0.1:8080(留言簿 V5(

将留言簿 V6 部署为绑定为 localhost/127.0.0.1 的新站点端口 1010。

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

现在更新重写规则以指向 127.0.0.1:1010(留言簿 V6(