假设我有一个包含六个IIS 7 Web服务器的Web场,每个服务器运行一个相同的ASP.NET应用程序。
它们位于硬件负载平衡器(比如F5)之后。
负载均衡器是否可以检测ASP.NET应用程序工作进程何时重新启动并将流量从该服务器转移到工作进程重新启动之后?
答案 0 :(得分:1)
IIS重启期间发生的事情实际上是翻转过程。一个新的IIS工作进程启动,接受新的连接,而旧的工作进程继续处理现有的连接。
这意味着如果您将负载均衡器配置为使用除简单循环之外的平衡算法,那么它将“自然地”转移一些(但不是全部)连接远离正在回收的机器。例如,使用“最少连接”算法,当服务器回收时,连接将更长时间地挂起。或者,使用性能或延迟算法,回收服务器将突然显示为负载均衡器较慢。
但是,除非您编写一些明确检测或识别回收的代码或脚本,否则这是您可以做的最好的事情 - 在大多数环境中,它也是您真正需要的全部内容。
答案 1 :(得分:0)
我们使用Cisco CSS 11501系列负载均衡器。我们在每个服务器上检查的 keepalive “内容”实际上是一个PHP脚本。
service ac11-192.168.1.11
ip address 192.168.1.11
keepalive type http
keepalive method get
keepalive uri "/LoadBalancer.php"
keepalive hash "b026324c6904b2a9cb4b88d6d61c81d1"
active
因为它是一个动态脚本,我们可以告诉它检查服务器的各个方面,如果一切正常,则返回"1"
,如果不是全部,则返回"0"
。
在您的情况下,您可能能够实现类似的检查脚本,如果ASP.NET应用程序工作进程正在重新启动(或关闭),该脚本将无效。
答案 2 :(得分:0)
它在很大程度上取决于负载均衡器的轮询间隔,来自平衡器的请求必须先失败才能决定转移流量
答案 3 :(得分:0)
默认情况下,IIS 6和7每1740分钟重新启动一次应用程序池。它以重叠的方式执行此操作,以便不影响服务。
http://technet.microsoft.com/en-us/library/cc770764%28v=ws.10%29.aspx
http://forums.iis.net/t/1153736.aspx/1
另一方面,如果出现故障,良好的负载均衡器(我确定F5是)可以检测到其中一个Web服务器的故障,并将请求发送到剩余的健康Web服务器。这是高可用性Web基础架构的关键部分。