我有一个C#控制台应用程序/ Windows服务,它使用HttpListener来处理请求,IIS设置为通过ARR将代理反向代理。
我的问题是,当我更新此应用程序时,旧实例关闭和新实例准备就绪之间的停机时间很短。
我正在考虑的方法是通过具有2个端口的本地主机名向服务器场添加2个服务器,并且在更新时我将启动新实例,该实例将侦听未使用的端口,停止侦听新请求旧实例并正常关闭它(即处理当前请求)。最后两个步骤将由新实例启动,以确保它已准备好处理请求。
IIS ARR负载均衡是否足够智能以尝试其他实例并将现在关闭的实例标记为不可用而不丢失任何请求,直到更新新请求或我必须添加运行状况检查等(这将再次导致停机时间短?)
答案 0 :(得分:0)
我认为可以使用的一个想法(特别是如果您的IIS仅用于此目的)是利用在进行配置更改时内置的IIS重叠回收功能。在这种情况下,你可以做的是:
IIS应该允许在回收超时内的应用程序池中运行的任何现有请求成功耗尽,同时将新请求发送到新的应用程序池。
也许如果你在ARR中使用的配置上分享更多(例如%windir%\ system32 \ inetsrv \ config \ applicationHost.config和webFarms部分的片段)