網絡故障排除:考慮負載均衡系統

jopen 9年前發布 | 6K 次閱讀 負載均衡
 

排除網絡問題可能很棘手,要是網絡中多了負載均衡系統會帶來另外的挑戰。試圖識別負載均衡系統是否在丟失數據包、以某種方式更改數據包或者添加更多的延遲可能并非易事。不過可以運用一些訣竅讓你更容易發現問題。

任何故障排除工作的第一步就是檢查相應網絡部件的統計數字。然而,如果那些統計數字表明一切都很好,可是網絡問題依然出現,那么你就只好引入故障 排除界的“瑞士軍刀”――數據包分析。雖說市面上有好多出色的收費產品可用于分析數據包,不過我還是青睞開源工具 Wireshark(https://www.wireshark.org/download.html)。

在分析涉及負載均衡系統的問題時,需要解答的第一個問題就是負載均衡系統是不是處于透明模式下。在透明模式下,負載均衡系統會將原始客戶機的IP 地址作為源IP地址來傳送。而在非透明模式下,負載均衡系統會使用負載均衡系統的虛擬IP地址(VIP)對服務器請求進行網絡地址轉換(NAT)處理。非 透明模式是最常見的實施模式。

現在你準備獲取跟蹤文件。在理想情況下,下圖中的每一個點都會插入分路器(tap)。要是你沒有分路器,可以使用SPAN(交換機端口分析器)或 交換機上的鏡像端口來捕獲流量。或者你也可以對防火墻和負載均衡系統的入站和出站端口使用tcpdump命令。關鍵在于同時捕獲所有四個位置的數據包,分 析來自四個不同有利位置的會話。

網絡故障排除:考慮負載均衡系統

你捕獲了數據后,必須找到出現在所有四個跟蹤文件中的單一會話。通常,你只要過濾相應的兩個IP地址就可以了。但是記住負載均衡系統在服務器端執行NAT,所以過濾客戶機IP地址并不適用于服務器端痕跡。

進入到第4層可以解決這個問題。你可以按照TCP報頭中的序列號進行過濾。不過要小心;Wireshark在默認情況下顯示相對序列號,你到頭來 會遇到數百個序列號為1的數據包。關鍵在于關閉TCP參數選項中的相對序列號。只要只要取消勾選該選項,實際的十進制數就會顯示,而不是相對會話開始的序 列號。一旦你過濾了所有四個痕跡文件中的同一序列號,你在每個文件中應該有一個數據包。

網絡故障排除:考慮負載均衡系統

如果你的負載均衡系統在NAT端創建自己的數據包發往服務器,棘手問題就來了。序列字段然后不再從頭到尾都一樣。這種場景下使用的最佳字段就是應 用層所特有的字段。如果是HTTP,我建議使用Cookie字段;如果是HTTPS,則建議使用Client Hello中的Random Bytes字段。

網絡故障排除:考慮負載均衡系統

最后,你面對在多個地方捕獲的單一會話,可以分析其痕跡了。首先,尋找數據包丟失現象。在Wireshark的專家分析語言中,那些丟失的數據包 會被標為“Previous segment not captured”(未捕捉到的先前片段)。這會出現在一個或多個痕跡文件中,但并不出現在所有痕跡文件中。比如說,如果你在防火墻痕跡的出站端(而不是 入站端)看到來自服務器的響應,就知道防火墻丟失了數據包。

分析數據包丟失現象后,檢查TCP握手機制,確保TCP選項在一路當中并沒有被篡改。當沿途中的某個設備創建自己的數據包,而不是以透明方式一路 傳送時,窗口縮放(windows scaling)和選擇性確認(Selective Acknowledgements)往往會消失。那兩個選項對吞吐量而言很重要,不應該去掉。

在痕跡中要關注的最后一個問題是很高的增量時間(delta time)。如果捕獲了四個不同位置的數據,你就真正能夠查看什么東西在添加延遲(要是果真有什么東西的話)。先看一下握手機制。使用同步請求(SYN) 與同步響應(SYN/ACK)的間隔時間作為基準。看一下離客戶機最近的防火墻入站端留下的痕跡中的其余請求和響應。

針對那些增量時間為一秒或更長的請求/響應組合,逐步檢查每個痕跡,直到你找到哪個端口在增添延遲為止。是處理器使用激增的防火墻嗎?還是跟蹤NAT表有問題的負載均衡系統?也許是并發連接數量太多的服務器。仔細檢查痕跡,可以告訴你哪里有問題,哪里沒有問題。

設置數據包捕獲機制可能在網絡滅火行動中會占用寶貴的時間,不過從長遠來看它可以節省大量的時間。

英文:Network Troubleshooting: Consider The Load Balancer

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!