NLB 将如何与 IIS-7 Web 服务一起使用?

And*_*rko 5 networking iis-7 web-services load-balancing nlb

我们要将 2(两)个 IIS7 Web 服务器加入 NLB,并发布相同的 Web 服务(每个 Web 服务器一个相同 Web 服务的 2 个实例)。

  • 我是否理解正确,NLB 将适用于我的网络服务,将网络请求委托给一个或另一个实例?
  • 如果 Web 服务实例之一变得不可用(即开始抛出 SOAP 异常或 HTTP 错误),NLB 将如何工作?
  • NLB 是否会考虑平均 Web 服务响应时间来决定 Web 服务实例委托处理?

先感谢您!

Tri*_*anK 5

简短: NLB 不在乎。

NLB 不会对您的申请置若罔闻。用户模式的问题是这样的用户模式。

只要网络堆栈能够发送和接收 NLB 广播(或多播!),NLB 就会继续接受流量。

更长: NLB真的不在乎。

NLB 作为第 2 层 NDIS 过滤器运行,并在所有传入流量中简单地运行其哈希算法,并接受与其端口规则匹配的位。

每个节点都必须查看所有传入流量(交换机的多播/广播),并且每个节点都会丢弃不符合其哈希标准的数据包。

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

  • 你的应用程序抛出 500 秒并不重要。
  • 它没有注意到您的用户模式侦听器进程已崩溃的事实。
  • 它不知道您的应用程序运行缓慢。

只是没有关心

NLB的最佳失败情况是(以下之一):

  • 盒子因停电而完全死亡
  • 要剪断或拔掉的网线
    • (可能通过吸尘器)
    • (或 NIC 在一阵火花中爆炸)
    • (或被路过的小偷偷走)
    • (或任何形式的物理网络中断)
  • 蓝屏框

其中任何一个都会阻止网络堆栈处理传入的数据包,并阻止发送“我还活着!” 向其他 NLB 节点广播消息,这会导致集群在一段时间内(秒)内省,找出仍然存在的节点,然后重新收敛。

然后,当剩余的节点清楚其中有多少个时,他们将再次开始散列,并丢弃任何他们不感兴趣的新数据包。

如果你需要

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

NLB 不是您的解决方案。如果您的应用程序对此没有问题,或者对 NLB 有足够的了解以在应用程序层出现问题时运行 NLB STOP,那么这可能没问题。但很少有应用程序这样做(ISA/TMG 浮现在脑海中)。

看起来我不久前在这里写过这个。

寻找其他地方 如果您正在寻找低成本(阅读:免费)基于 Windows 的解决方案,请考虑 IIS 7+ 的应用程序请求路由 - 它具有您正在寻找的大部分健康监控功能。

您不会在与应用程序相同的机器上运行它,但是,为了可用性,您通常希望在 ARR 下运行 NLB,以便将负载均衡器的网络级可用性与应用层智能结合起来等级。