NLB 集群中的點對點通訊

NLB 集群中的點對點通訊

我是荷蘭一家圖書館的系統管理員。我們的人員使用瘦客戶端與我們的會話伺服器進行遠端桌面會話。我們在 NLB 群集中配置了兩台會話伺服器 (Windows 2008 R2)。兩台伺服器都是虛擬化的。一進Hyper-V (RDS01)另一個在VMWare ESX (RDS03)

NLB 叢集配置為以單播模式運作。 NLB 群集中的兩台伺服器都有兩個網路介面卡。一個用於 NLB 群集,另一個用於點對點通訊。

我們遇到的問題是經常與 NLB 叢集進行遠端桌面會話失敗(與嘗試連線到不存在的 IP 或主機名稱時出現相同的錯誤)。經過一番挖掘後,我發現當我嘗試在 RDS03 上的 NLB 管理器中查看叢集時,它經常無法「發現」RDS01。反之亦然(從 RDS01 到 RDS03)。

下圖 1 顯示了 RDS01 上的 NLB 管理器(成功)。 RDS01 上的 NLB 管理器

下圖2顯示了RDS03上的NLB管理器(失敗)。 RDS03 上的 NLB 管理器

正如您在第一張圖片中看到的,我禁用了 NLB 叢集中的 RDS03。 NLB 叢集中只有 RDS01 是活動伺服器。這解決目前 NLB 叢集的連接問題(所以我假設問題出在 RDS03 周圍)。

我了解到 NLB 管理器使用 ICMP 來「發現」群集中的其他主機。因此,我決定使用封包嗅探器(Microsoft 網路監控)來檢查 NLB 管理器發送的封包。我注意到 RDS01 發出的封包使用了 RDS03 上點對點適配器的 IP 位址。除此之外,RDS03有時使用RDS01的NLB集群IP位址。

以下是 RDS01 上捕獲的資料包詳細資訊。

  Frame: Number = 2812, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-63-97-23],SourceAddress:[00-15-5D-63-96-2B]
+ Ipv4: Src = 10.81.129.159, Dest = 10.81.129.161, Next Protocol = ICMP, Packet ID = 8406, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.159 To 10.81.129.161

接下來是 RDS03 上捕獲的資料包詳細資訊。當 NLB 管理器發出此套件時,發現失敗。

  Frame: Number = 211, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[02-BF-0A-51-81-A5],SourceAddress:[00-15-5D-63-97-23]
+ Ipv4: Src = 10.81.129.161, Dest = 10.81.129.167, Next Protocol = ICMP, Packet ID = 11326, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.161 To 10.81.129.167

最後是 RDS03 上捕獲的資料包詳細資訊。當 NLB 管理器發出此套件時,發現成功。

  Frame: Number = 2095, Captured Frame Length = 74, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[00-15-5D-63-96-2B],SourceAddress:[00-15-5D-63-97-23]
+ Ipv4: Src = 10.81.129.161, Dest = 10.81.129.159, Next Protocol = ICMP, Packet ID = 21180, Total IP Length = 60
+ Icmp: Echo Request Message, From 10.81.129.161 To 10.81.129.159

下面是 NLB 叢集及其伺服器的 IP 配置。

10.81.129.165NLB集群IP
10.81.129.167RDS01 的 NLB IP
10.81.129.169RDS03 的 NLB IP

10.81.129.159IP RDS01(用於點對點的第二個 NIC)
10.81.129.161IP RDS03(用於點對點的第二個 NIC)

為什麼RDS03使用RDS01的NLB集群IP?為什麼它也使用RDS01的點對點IP?是什麼導致了這種不一致的行為?

答案1

回答我自己的問題,問題出在 DNS 查找。在我清除 RDS03 上的 DNS 快取後(發生不一致行為的地方)。

ipconfig /flushdns

我在 RDS03 NLB 管理員上進行了叢集刷新,並注意到它對 RDS01 進行了 DNS 查找。現在我確信 NLB 管理器正在使用主機名稱進行通訊。 DNS 伺服器使用以下兩個 IP 位址回應:

10.81.129.159 ...IP RDS01(第二個 NIC 用於點對點)
10.81.129.167 ...RDS01 的 NLB IP

每次發現 RDS01 失敗時RDS01的NLB IP是 DNS 查找回覆的第一個 IP。每當發現成功時IP RDS01是第一個。

刪除後RDS01的NLB IP從DNS伺服器的DNS記錄問題就解決了。現在我只需確保 NLB IP 位址不再在 DNS 伺服器上註冊即可。這是 NLB NIC 的 TCP/IP 協定中的設定。請參考下圖。

不要在 DNS 伺服器上註冊 IP

相關內容