- 鳳凰架構:構建可靠的大型分布式系統
- 周志明
- 1138字
- 2021-06-24 11:31:01
4.5.1 數據鏈路層負載均衡
參考上面的表4-1可知,數據鏈路層傳輸的內容是數據幀(Frame),譬如常見的以太網幀、ADSL寬帶的PPP幀等。我們討論的具體上下文里,目標就是以太網幀。按照IEEE 802.3標準,最典型的1500字節MTU的以太網幀結構如表4-2所示。
表4-2 最典型的1500字節MTU的以太網幀結構說明

關于以太網幀結構中的各數據項的含義,本節中只需注意“MAC目標地址”和“MAC源地址”兩項即可。我們知道每一塊網卡都有獨立的MAC地址,通過以太網幀上的這兩個地址可以告訴交換機,此幀是從連接在交換機上的哪個端口的網卡發出,送至哪塊網卡的。
數據鏈路層負載均衡所做的工作,是修改請求的數據幀中的MAC目標地址,讓用戶原本發送給負載均衡器的請求的數據幀,被二層交換機根據新的MAC目標地址轉發到服務器集群中對應的服務器(后文稱為“真實服務器”,Real Server)的網卡上,這樣真實服務器就獲得了一個原本目標并不是發送給它的數據幀。
由于二層負載均衡器在轉發請求過程中只修改了幀的MAC目標地址,不涉及更上層協議(沒有修改Payload的數據),所以在更上層(第三層)看來,所有數據都是未曾改變過的。由于第三層的數據包,即IP數據包中包含了源(客戶端)和目標(均衡器)的IP地址,只有真實服務器保證自己的IP地址與數據包中的目標IP地址一致,這個數據包才能被正確處理。因此,使用這種負載均衡模式時,需要把真實物理服務器集群中所有機器的虛擬IP地址(Virtual IP Address,VIP)配置成與負載均衡器的虛擬IP一樣,才能使經均衡器轉發后的數據包在真實服務器中順利地使用。也正是因為實際處理請求的真實物理服務器IP和數據請求中的目的IP是一致的,所以響應結果就不再需要通過負載均衡器進行地址交換,而是可將響應結果的數據包直接從真實服務器返回給用戶的客戶端,避免負載均衡器網卡帶寬成為瓶頸,因此數據鏈路層負載均衡的效率是相當高的。此模式從請求到響應的過程如圖4-8所示。

圖4-8 數據鏈路層負載均衡
在上述只有請求經過負載均衡器,而服務的響應無須從負載均衡器原路返回的工作模式中,整個請求、轉發、響應的鏈路形成了一個“三角關系”,所以這種負載均衡模式也常被形象地稱為“三角傳輸模式”(Direct Server Return,DSR),也稱為“單臂模式”(Single Legged Mode)或者“直接路由”(Direct Routing)。
雖然數據鏈路層負載均衡的效率很高,但它并不能適用于所有場合,除了無法適用于那些需要感知應用層協議信息的負載均衡場景外(所有的四層負載均衡器都無法適用,具體將在后續介紹七層負載均衡器時一并解釋),它在網絡側受到的約束也很大。二層負載均衡器直接改寫目標MAC地址的工作原理決定了它與真實服務器的通信必須是二層可達的,通俗地說就是必須位于同一個子網當中,無法跨VLAN。所以,優勢(效率高)和劣勢(不能跨子網)共同決定了數據鏈路層負載均衡最適合作為數據中心的第一級均衡設備,用來連接其他的下級負載均衡器。
- 全屋互聯:智能家居系統開發指南
- Learning OpenDaylight
- Mastering ElasticSearch
- Linux設備驅動開發詳解(第2版)
- Designing Purpose:Built Drones for Ardupilot Pixhawk 2.1
- Red Hat Enterprise Linux 8系統管理實戰
- BPEL and Java Cookbook
- 操作系統基礎與實踐:基于openEuler平臺
- Linux內核觀測技術BPF
- 操作系統分析
- Vim 8文本處理實戰
- Linux集群之美
- Zabbix監控系統之深度解析和實踐
- Learn Quantum Computing with Python and IBM Quantum Experience
- Linux內核分析及應用