NLB如何与IIS-7 Web服务一起工作?

我们打算将两(2)个IIS7networking服务器join到NLB中,并发布相同的Web服务(每个Web服务器有两个相同的Web服务实例)。

  • 我是否理解正确,NLB将为我的Web服务工作,将Web请求发送到一个或另一个实例?
  • 如果一个Web服务实例变得不可用(即开始抛出SOAPexception或HTTP错误),NLB将如何工作?
  • NLB是否将平均Web服务响应时间考虑在内以决定Web服务实例来处理?

先谢谢你!

简而言之: NLB不在乎。

NLB不会给你的申请给老鼠的驴子。 用户模式问题是如此的用户模式。

只要networking堆栈能够发送和接收NLB广播(或多播!),NLB将继续接受stream量。

更长: NLB 真的不在乎。

NLB作为第2层NDISfilter运行,只是在所有传入stream量上运行散列algorithm,并接受与其端口规则匹配的位。

每个节点必须看到所有传入stream量(由交换机进行多播/广播),并且每个节点都丢弃不符合其散列标准的数据包。

NLB是一个统计负载平衡器。 不是一个关心的人。

  • 你的应用投500秒并不重要。
  • 它忽视了您的用户模式侦听器进程崩溃的事实。
  • 它不知道你的应用程序运行缓慢。

只是照顾

NLB 最好的情况下失败是(其中之一):

  • 盒子完全从电源故障中死亡
  • 网线被切断或拔掉
    • (可能通过吸尘器)
    • (或者NIC在一阵火花中爆炸)
    • (或被盗贼偷走)
    • (或任何forms的物理networking中断)
  • 框到蓝屏

其中的任何一个都会阻止networking堆栈处理传入数据包,并阻止发送“我还活着!” 将消息广播到其他的NLB节点,这使得集群得到所有内省的时间(秒),找出哪些节点仍然存在,并重新收敛。

然后,当剩余的节点清除了多less个节点时,他们将再次开始散列,并丢弃他们不感兴趣的新数据包。

如果你需要

  • 健康监测,
  • 谨慎地将负载应用到未充分利用的服务器上,
  • 和基于响应时间的智能决策

NLB不是你的解决scheme 。 如果你的应用程序没有问题,或者在应用程序层出现问题时足够了解NLB以运行NLB STOP,那么可能是好的。 但是很less有这样的应用(ISA / TMG)。

看起来我刚才在这里写了这个。

在其他地方寻找如果您正在寻找一种低成本的(免费的)基于Windows的解决scheme,请考虑针对IIS 7+的应用程序请求路由 – 它具有听起来就像您正在寻找的大部分健康监测function。

但是,通常情况下,您不会在与应用程序相同的框中运行它,而且为了实用性,您通常希望在ARR下运行NLB,以将负载平衡器的networking级可用性与应用程序层智能水平。

  • 编辑说我的答案适用于通用networking负载平衡,而不是微软的NLB服务!

答案真的取决于您的负载平衡器的复杂程度。 最简单的设置是负载均衡器以循环的方式向另一个Web服务器发送请求,并使用ping来确定主机是启动还是closures。

您可以使用更复杂的健康检查,您的负载平衡服务器在进入负载平衡池之前需要通过。

要进行健康检查,通常需要在Web服务器上configuration一个依赖于Web服务器所有方面工作的页面。 也许一些PHP查找数据库中的东西,然后在屏幕上写'确定',如果一切正常。 然后,您将configuration您的负载平衡器运行状况检查,看看这个页面,并确保它说'确定'

如果运行状况检查失败,则服务器比检查失败,将从池中删除,并且不会向其发送任何stream量。 如果您的所有服务器都发生故障,通常可以让您的负载均衡器服务于保留页面。

再次取决于您的负载均衡器的复杂程度,您可以使用各种负载均衡机制。 您确实可以根据服务器负载,服务器连接数量,服务器负载平衡,可以让一些服务器获得比其他服务器更多的负载,您可以拥有“粘性”会话,从而将同一个客户端始终发送到同一个Web服务器。 有很多的可能性。