Linux 伺服器下多網絡卡的負載均衡

2021-09-05 07:08:02 字數 2494 閱讀 1105

linux 伺服器下多網絡卡負載均衡的實現

一、引言

現今幾乎各行各業內部都建立了自己的伺服器,由於伺服器的特殊地位,它的可靠性、可用性及其 i/o 速度就顯得非常的重要, 保持伺服器的高可用性和安全性是企業級it 環境的重要指標,其中最重要的一點是伺服器網路連線的高可用性,為實現這些要求,現在伺服器大都採用多網絡卡配置,系統大都採用現在非常流行的 linux 作為伺服器工作的環境。現在頻寬已經不是服務質量提高的瓶頸了,相對的網路裝置和伺服器的處理能力就漸漸成為新的瓶頸。為提高伺服器的網路連線的可用性和可靠性,目前sun公司的trunking技術、3com 公司的 dynamicaccess 技術、cisco 公司的etherchannel技術等等都在研究將伺服器的多個網絡卡介面繫結在一起的鏈路聚集技術, 鏈路聚集技術將多個鏈路虛擬成乙個邏輯鏈路進而提供了一種廉價、有效的方法擴充套件網路裝置和伺服器的頻寬,提高網路的靈活性與可用性。

本文介紹 linux 下的 bonding 技術,linux 2.4.x 的核心中採用了這種技術,利用 bonding 技術可以將多塊網絡卡介面通過繫結虛擬成為一塊網絡卡,在使用者看來這個聚合起來的裝置好像是乙個單獨的乙太網介面裝置,通俗點講就是多塊網絡卡具有相同的 ip 位址而並行連線聚合成乙個邏輯鏈路工作。現在在關於linux bonding 技術中,有幾種演算法來實現負載均衡的要求,此文針對這些演算法,在此進行簡單分析與研究,討論其不足,並提出另外一種在此基礎上改進的一種基於傳輸協議的負載均衡實現方法。討論如何實現多個網路介面的分在均衡及其故障接管。

二、負載均衡技術和高可用技術介紹

2.1 負載均衡技術

負載均衡技術的主要思想就是如何根據某種演算法將網路的業務流量平均分配到不同的伺服器和網路裝置上去,以減輕單台伺服器和網路裝置的負擔, 從而提高整個系統的效率。負載均衡既可以由有負載均衡功能的硬體實現,也可以通過一些專用的軟體來實現,負載均衡是一種策略,它能讓多台伺服器或多條鏈路共同承擔一些繁重的計算或者 i/o 任務,從而以較低的成本消除網路瓶頸,提高網路的靈活性和可靠性。

2.2 高可用技術

實現負載均衡首先是基於網路的高可用性提出來的,高可用技術是容錯技術的乙個分支。實現系統的高可用性最簡單的乙個辦法就是冗餘。完整的網路負載均衡和高可用性網路技術有兩個方面構成,一是多伺服器的繫結和負載均衡,二是乙個伺服器內部的多網絡卡繫結的負載均衡,這裡主要討論乙個伺服器內部的多網絡卡繫結時的負載均衡。

三、linux 的 bonding 技術中負載均衡的簡單實現

3.1  linux的bonding技術

linux的bonding技術是網絡卡驅動程式之上、資料鏈路層之下實現的乙個虛擬層,通過這種技術,伺服器接在交換機上的多塊網絡卡不僅被繫結為乙個 ip,mac 位址也被設定為同乙個,進而構成乙個虛擬的網絡卡,工作站向伺服器請求資料,伺服器上的網絡卡接到請求後,網絡卡根據某種演算法智慧型決定由誰來處理資料的傳輸。 bonding技術可以提高主機的網路吞吐量和可用性。

3.2 linux的幾種傳送均衡演算法

目前 linux 的傳送演算法最主要的有三種:輪轉演算法(round-robin) 、備份演算法(active-backup) 、mac 位址異或演算法(mac-xor) 。下面對目前這三種主要演算法進行簡單分析。

3.2.1 輪轉演算法

該演算法是基於公平原則進行的,它為每個將要被傳送的資料報選擇傳送介面,演算法的主要思想是首先第乙個資料報由乙個介面傳送,另乙個資料報則由另外乙個介面傳送,下面依次進行迴圈選擇。通過分析我們可以看出這種演算法比較比較簡單,在傳送資料方面也比較公平,能保證網絡卡傳送資料時候的負載均衡,資源利用率很高。但是我們知道如果乙個連線或者會話的資料報從不同的介面發出的話,中途再經過不同的鏈路,在客戶端很有可能會出現資料報無序到達的問題,而無序到達的資料報需要重新要求被傳送,這樣網路的吞吐量就會下降。

3.2.2  備份演算法

該演算法將多個網絡卡介面中的乙個介面設定為活動狀態,其他的介面處於備用狀態。當活動介面或者活動鏈路出現故障時,啟動備用鏈路,由此可見此演算法的優點是可以提供高網路連線的可用性,但是它的資源利用率較低,只有乙個介面處於工作狀態,在有 n 個網路介面的情況下,資源利用率為1/n。

3.2.3 mac位址異或演算法

該演算法的主要思想是:由伺服器的 mac 位址和客戶端的mac 位址共同決定每個資料報的傳送埠號,由源 mac 位址和目的 mac 位址進行異或計算,並將異或結果對介面數求餘計算。由於傳送到同乙個客戶端的資料流經過同乙個鏈路,因此資料報能夠有序到達客戶端。此演算法在只有乙個客戶機訪問伺服器或者伺服器和客戶機不在同一子網的情況下,由演算法思想得知這種情況下負載不會均衡,在只有乙個客戶機訪問伺服器的時候,資源的利用率也是1/n(n為介面數)。

Linux 伺服器下多網絡卡的負載均衡

linux 伺服器下多網絡卡負載均衡的實現 一 引言 現今幾乎各行各業內部都建立了自己的伺服器,由於伺服器的特殊地位,它的可靠性 可用性及其 i o 速度就顯得非常的重要,保持伺服器的高可用性和安全性是企業級it 環境的重要指標,其中最重要的一點是伺服器網路連線的高可用性,為實現這些要求,現在伺服器...

Lunix伺服器多網絡卡配置路由

這幾天遇到乙個坑 多網絡卡配置預設閘道器,導致部分網路不通。產品在客戶現場部署時候網路環境比較複雜,三個大網完全隔離的但產品必須要被三個大網能訪問到。開始覺的簡單三個網口配置預設閘道器搞定,錯了錯了錯了。實踐告訴我錯了,現場有的區域無法訪問產品。問題出錯原因 多網口配置了預設閘道器後 即是預設路由 ...

多網絡卡Linux伺服器如何確定網口位置

在配置有多個網路介面的裝置時我們會犯難,eth0 eth1 到底是那個介面?今天為大家介紹乙個小工具,ethtool,他可以幫助你解決這個問題。我使用的機器是fedora linux 系統,開啟終端,輸入ethtool help 顯示幫助資訊,下面我就簡要介紹一下最常用的兩個功能。功能1 ethto...