Linux 負載均衡

2021-04-29 12:58:21 字數 3330 閱讀 6668

在排程器的實現技術中,ip負載均衡技術是效率最高的。在已有的ip負載均衡技術中有通過網路位址轉換(network address translation)將一組伺服器構成乙個高效能的、高可用的虛擬伺服器,我們稱之為vs/nat技術(virtual server via network address translation),大多數商品化的ip負載均衡排程器產品都是使用此方法,如cisco的localdirector、f5的big/ip和alteon的acedirector。在分析vs/nat的缺點和網路服務的非對稱性的基礎上,我們提出通過ip隧道實現虛擬伺服器的方法vs/tun(virtual server via ip tunneling),和通過直接路由實現虛擬伺服器的方法vs/dr(virtual server via direct routing),它們可以極大地提高系統的伸縮性。所以,ipvs軟體實現了這三種ip負載均衡技術,它們的大致原理如下

1)virtual server via network address translation(vs/nat)

通過網路位址轉換,排程器重寫請求報文的目標位址,根據預設的排程演算法,將請求分派給後端的真實伺服器;真實伺服器的響應報文通過排程器時,報文的源位址被重寫,再返回給客戶,完成整個負載排程過程。

2)virtual server via ip tunneling(vs/tun)

採用nat技術時,由於請求和響應報文都必須經過排程器位址重寫,當客戶請求越來越多時,排程器的處理能力將成為瓶頸。為了解決這個問題,排程器把請求報文通過ip隧道**至真實伺服器,而真實伺服器將響應直接返回給客戶,所以排程器只處理請求報文。由於一般網路服務應答比請求報文大許多,採用vs/tun技術後,集群系統的最大吞吐量可以提高10倍。

3)virtual server via direct routing(vs/dr)

vs/dr通過改寫請求報文的mac位址,將請求傳送到真實伺服器,而真實伺服器將響應直接返回給客戶。同vs/tun技術一樣,vs/dr技術可極大地提高集群系統的伸縮性。這種方法沒有ip隧道的開銷,對集群中的真實伺服器也沒有必須支援ip隧道協議的要求,但是要求排程器與真實伺服器都有一塊網絡卡連在同一物理網段上。

針對不同的網路服務需求和伺服器配置,ipvs排程器實現了如下八種負載排程演算法,這裡我只介紹前四種,因為後面的基本不常用:

1)輪叫(round robin)

排程器通過"輪叫"排程演算法將外部請求按順序輪流分配到集群中的真實伺服器上,它均等地對待每一台伺服器,而不管伺服器上實際的連線數和系統負載。

2)加權輪叫(weighted round robin)

排程器通過"加權輪叫"排程演算法根據真實伺服器的不同處理能力來排程訪問請求。這樣可以保證處理能力強的伺服器處理更多的訪問流量。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

3)最少鏈結(least connections)

排程器通過"最少連線"排程演算法動態地將網路請求排程到已建立的鏈結數最少的伺服器上。如果集群系統的真實伺服器具有相近的系統效能,採用"最小連線"排程演算法可以較好地均衡負載。

4)加權最少鏈結(weighted least connections)

在集群系統中的伺服器效能差異較大的情況下,排程器採用"加權最少鏈結"排程演算法優化負載均衡效能,具有較高權值的伺服器將承受較大比例的活動連線負載。排程器可以自動問詢真實伺服器的負載情況,並動態地調整其權值。

我在這裡做的實驗採用的基於vs/nat,輪叫機制,這樣是因為我的兩台伺服器是完全一樣的效能,所以採用輪叫的方法.如果在公司裡,要根據不同的情況選擇不同的部署方案,要看實際的需要和裝置的實際情況來考慮.

同樣我還是採用三颱虛擬機器,裡面還是linux as5的版本,其中作為虛擬主機的機器要做雙ip,乙個內網,乙個外網

我的拓撲圖

軟連線方法:ln -s /usr/src/kernels/2.6.18-53.el5-i686 /usr/src/linux

4)包的解壓 安裝

tar -zxvf ipvsadm-1.24

cd ipvsadm-1.24

make all

make install

安裝完成後 可以察看版本資訊 ipvsadm --version

pvsadm v1.24 2005/12/10 (compiled with popt and ipvs v1.2.1)

5) 配置lvs

在虛擬主機中啟用**功能

echo "1">/proc/sys/net/ipv4/ip_forward    (因為虛擬主機在服務前段主要是負責ip的**的,所以這項要啟動)

清除ipvsadm表

ipvsadm -c  

安裝lvs服務

ipvsadm -a -t 10.1.1.200:80 -s rr

增加第一台伺服器

ipvsadm -a -t 10.1.1.200:80 -r 192.168.1.100:80 -m -w 1

增加第二台伺服器

ipvsadm -a -t 10.1.1.200:80 -r 192.168.1.200:80 -m -w 1

注意-w 後的是1而不是l

6) 配置伺服器端

在192.168.1.100和192.168.1.200裡分別將閘道器設定為192.168.1.254,並啟動web服務(192.168.1.254是虛擬主機的內網ip)

7)測試

我在客戶機上分別建立了兩個主頁,並啟動web服務

在客戶端多次瀏覽10.1.1.200(前端的虛擬主機ip),然後在虛擬主機上輸入ipvsadm,會發現已經**了4次

這個是我在訪問前後的效果

現在我在訪問同樣乙個10.1.1.200,也就是我的虛擬主機時,會發現是不同的網頁

為了能看出效果,所以我弄的是兩個不同的網頁.在實際中,應該兩個完全一樣的主頁,這樣,雖然客戶訪問的同乙個ip 看到同乙個主頁,實際上是兩台不同的伺服器,這樣就達到了負載均衡的效果.然後在下端應用上ha(心跳連線),這樣乙個高可用的集群就算部署好了.

linux負載均衡

1.載均衡可以分為基於流的和基於包的,基於流的實現更合理但是有的時候必須需要基於包的,只可惜,linux核心並沒有很好的實現基於包的負載均衡。2.6早期的核心實現了乙個multipath的機制,可以認為是乙個負載均衡器,但是它卻是基於fib的,可以認為是基於流的,因為每乙個流的第乙個包從cache中...

Linux 負載均衡 LVS

1 介紹nat模式 優點 可以簡單快速配置負載均衡 缺點 單機器有瓶頸 附屬機器的閘道器 gateway 必須是主機內網ip 2 安裝 yum install y ipvsadm3 新建指令碼 bin bash director 伺服器上開啟路由 功能 echo 1 proc sys net ipv...

linux負載均衡雜談

假如架構中的主機擁有全量資料集,即使其中一台掛了,也不會導致離線,高可用 負載均衡集群 假如架構中的各主機只擁有sharing,那我們謂之 分布式集群 硬體ctrix f5 big ip 一台動輒20w,40w,80w一買就是兩台 a10 a10 array redware 軟體 httpd ngi...