Networking

NLB 如何與 IIS-7 Web 服務一起工作?

  • September 29, 2021

我們將把 2(兩個)IIS7 Web 伺服器加入 NLB,並發布相同的 Web 服務(每個 Web 伺服器有 2 個相同的 Web 服務實例)。

  • 我是否理解正確,NLB 將適用於我的 Web 服務,將 Web 請求委託給一個或另一個實例?
  • 如果 Web 服務實例之一變得不可用(即開始拋出 SOAP 異常或 HTTP 錯誤),NLB 將如何工作?
  • NLB 是否會考慮平均 Web 服務響應時間來決定委託處理的 Web 服務實例?

先感謝您!

簡而言之: NLB 不在乎

NLB 依賴於查看所有傳入流量的所有節點,然後每個節點丟棄它不感興趣的任何流量。那是在應用程序甚至可以看到流量之前 - 它不是基於應用程序的執行狀況,不是基於響應時間,不是基於公平或排隊。

NLB 不會對您的應用程序視而不見。使用者模式問題是如此使用者模式!

只要網路堆棧能夠發送和接收 NLB 廣播(或多播!),NLB 就會繼續接受流量。

Longer: NLB真的不在乎。

NLB 作為第 2 層 NDIS 過濾器執行,並在所有傳入流量中簡單地執行其雜湊算法,並接受與其埠規則匹配的位。

每個節點都必須看到所有傳入流量(交換機的多播/廣播),並且每個節點都會丟棄不符合其雜湊標準的數據包。

NLB 是一個統計負載均衡器。不是一個關心的人。

  • 您的應用程序拋出 500 次對它來說並不重要。
  • 它沒有註意到您的使用者模式偵聽器程序已經崩潰。
  • 它不知道您的應用程序執行緩慢。

只是沒有關心

NLB的最佳失敗情況是(其中之一):

  • 盒子因電源故障而完全當機
  • 要剪斷或拔出的網線
  • (可能通過真空吸塵器)
  • (或 NIC 在一陣火花中爆炸)
  • (或被路過的小偷偷走)
  • (或任何形式的物理網路中斷)
  • 盒子藍屏

任何這些都會阻止網路堆棧處理傳入的數據包,並阻止發送*“我還活著!”* 將消息廣播到其他 NLB 節點,這會導致集群在一段時間(幾秒鐘)內進行自省,找出仍然存在的節點,然後重新收斂。

然後,當其餘節點清楚它們有多少時,它們將再次開始雜湊,並丟棄它們不感興趣的任何新數據包。

如果你需要

  • 健康監測,
  • 小心地將負載應用於未充分利用的伺服器,
  • 和基於響應時間的智能決策

NLB 不是您的解決方案。如果您的應用程序對此沒問題,或者對 NLB 有足夠的了解以在應用程序層出現問題時執行 NLB STOP,那麼它可能沒問題。但很少有應用程序能做到這一點(ISA/TMG 浮現在腦海中)。

看起來我不久前在這裡寫過這個。

尋找其他地方 如果您正在尋找一種低成本(閱讀:免費)基於 Windows 的解決方案,請考慮適用於 IIS 7+ 的應用程序請求路由 - 它具有聽起來像您正在尋找的大部分健康監控功能。

通常,您不會在與應用程序相同的機器上執行它,但為了可用性,您通常希望在 ARR 下執行 NLB,以將負載均衡器的網路級可用性與應用程序層智能結合起來等級。

引用自:https://serverfault.com/questions/311188