IIS零停机更新ARR/反向代理

IIS零停机更新ARR/反向代理,iis,arr,Iis,Arr,我有一个C#控制台应用程序/Windows服务,它使用HttpListener来处理请求,IIS被设置为通过ARR将代理反向到这个 我的问题是,当我更新这个应用程序时,在旧实例关闭和新实例准备就绪之间有一段短暂的停机时间 我考虑的方法是通过带有2个端口的本地主机名向服务器场添加2台服务器,在更新时,我将启动新实例,该实例将侦听未使用的端口,停止侦听旧实例上的新请求,并正常关闭它(即处理当前请求)。最后两个步骤将由新实例启动,以确保它准备好处理请求 IIS ARR负载平衡是否足够智能,可以尝试另一

我有一个C#控制台应用程序/Windows服务,它使用HttpListener来处理请求,IIS被设置为通过ARR将代理反向到这个

我的问题是,当我更新这个应用程序时,在旧实例关闭和新实例准备就绪之间有一段短暂的停机时间

我考虑的方法是通过带有2个端口的本地主机名向服务器场添加2台服务器,在更新时,我将启动新实例,该实例将侦听未使用的端口,停止侦听旧实例上的新请求,并正常关闭它(即处理当前请求)。最后两个步骤将由新实例启动,以确保它准备好处理请求


IIS ARR负载平衡是否足够智能,可以尝试另一个实例并将现在关闭的实例标记为不可用,而不会丢失任何请求,直到新实例更新,或者我必须添加运行状况检查等(这是否会再次导致较短的停机时间?

一个我认为可行的想法(特别是当您的IIS仅用于此目的时)是为了在进行配置更改时利用内置的IIS重叠回收功能。在这种情况下,您可以做的是:

  • 启动应用程序的新实例,以其他方式运行侦听 港口
  • 在ARR中编辑配置以指向新端口
  • IIS应允许在回收超时内成功排出应用程序池中运行的任何现有请求,同时将新请求发送到新的应用程序池

    如果您在ARR中使用的配置(如%windir%\system32\inetsrv\config\applicationHost.config和webFarms部分的片段)上分享更多信息,可能会更好