本文乙個簡單的示例演示lvs的配置(dr模式)和測試。
使用的配置環境如下:
director server: 192.168.8.4
real server1: 192.168.8.5
real server2: 192.168.8.6
vip: 192.168.8.200
網路topology圖如下:
圖2中的vip指的是虛擬ip位址,還可以叫做lvs集群的服務ip,在dr、tun模式中,
資料報是直接返回給使用者的,所以,在director server上以及集群的每個節點上都需要設定這個位址。
在director server上,虛擬ip繫結在真實的網路介面裝置上,例如eth0:0。
linux2.6核心預設支援lvs功能,系統安裝完畢,可以通過如下命令檢查kernel是否已經支援lvs的ipvs模組:
[root@localhost ~]#modprobe -l |grep ipvs
/lib/modules/2.6.18-53.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko
/lib/modules/2.6.18-53.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko
如果有類似上面的輸出,表明系統核心已經預設支援了ipvs模組。接著就可以安裝ipvs管理軟體了。
一 在director serve上安裝ipvs管理軟體
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make
make install
注意:在make時可能會出現錯誤編譯資訊,這是由於編譯程式找不到對應核心的原因,
按照如下操作就可以正常編譯:
[root@localhost ~]#ln -s /usr/src/kernels/2.6.18-53.el5-i686/ /usr/src/linux
安裝完成後,通過ipvsadm命令列進行配置
首先在director server上繫結乙個虛擬ip,此ip用於對外提供服務,執行如下命令:
ifconfig eth0:0 192.168.8.200 broadcast 192.168.8.200 netmask 255.255.255.255 up
這樣在eth0裝置上繫結了乙個虛擬裝置eth0:0,同時設定了乙個虛擬ip是192.168.8.200,
也就是上面我們規劃的ip位址,然後指定廣播位址也為192.168.8.200,需要特別注意的是,
這裡的子網掩碼為255.255.255.255。
然後給裝置eth0:0指定一條路由,執行如下指令:
route add -host 192.168.8.200 dev eth0:0
接著啟用系統的包**功能,從而使系統充當路由器,執行如下指令:
[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
指令中,引數值為1時啟用ip**,為0時禁止ip**。其實在dr模式中,開啟系統的包**功能不是必須的,
而在nat模式下此操作是必須的。
然後開始配置ipvs,執行如下操作:
ipvsadm -c
ipvsadm -a -t 192.168.8.200:8080 -s rr
ipvsadm -a -t 192.168.8.200:8080 -r 192.168.8.5:8080 -g
ipvsadm -a -t 192.168.8.200:8080 -r 192.168.8.6:8080 -g
上面操作中,第一行是清除核心虛擬伺服器列表中的所有記錄,
第二行是新增一條新的虛擬ip記錄,同時指定策略為輪詢。
第三、四行是在新加虛擬ip記錄中新增兩條新的real server記錄,並且指定lvs的工作模式為直接路由模式。
在dr模式下,director和real server需要在同乙個物理網段中。
-g代表gateway,意思為直接路由,還可以有-i(internet)隧道模型,-m(masq)偽裝,nat模式
二、real server 的配置
在lvs的dr和tun模式下,使用者的訪問請求到達真實伺服器後,是直接返回給使用者的,
而不再經過前端的director server,因此,就需要在每個real server節點上增加虛擬的vip位址,
ifconfig lo:0 192.168.8.200 broadcast 192.168.8.200 netmask 255.255.255.255 up
#子網掩碼255.255.255.255表示這個整個網段只有這乙個位址
route add -host 192.168.8.200 dev lo:0
#上面的命令表示網路請求位址是192.168.8.200的請求,返回的時候的源位址是lo:0網絡卡上配置的位址,
#這樣出去的ip包的src位址就是192.168.8.200
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
在回環裝置上繫結了乙個虛擬ip位址,並設定其子網掩碼為255.255.255.255,
與director server上的虛擬ip保持互通,然後禁止了本機的arp請求。
由於虛擬ip,也就是上面的vip位址,是director server和所有的real server共享的,
如果有arp請求vip位址時,director server與所有real server都做應答的話,就會出現問題,
因此,需要禁止real server響應arp請求。
三、在real server上配置tomcat服務,略。
在192.18.8.5建乙個html檔案內容為:
this is the test page
from server 192.168.8.5
在192.18.8.6建乙個html檔案內容為:
this is the test page
from server 192.168.8.6
四 測試
客戶端通過vip訪問,如下面的url
可以發現返回的內容由192.168.8.5和192.168.8.6輪流提供。
也可在director上通過ipvsadm -lnc可以觀察排程的情況。
軟體負載均衡
硬體負載均衡效能優越,功能全面,但是 昂貴,一般適合初期或者土豪級公司長期使用。因此軟體負載均衡在網際網路領域大量使用。常用的軟體負載均衡軟體有nginx,lvs,haproxy等。本文參考大量文件,部分為直接拷貝,參考出處見負載均衡詳解 4 ngnix是一款輕量級的web伺服器 反向 伺服器,工作...
Linux負載均衡軟體LVS簡介
linux負載均衡軟體lvs lvs集群的體系結構以及特點 1 lvs簡介2 lvs體系結構 使用lvs架設的伺服器集群系統有三個部分組成 最前端的負載均衡層,用load balancer表示,中間的伺服器群組層,用server array表示,最底端的資料共享儲存層,用shared storage...
Linux 負載均衡
在排程器的實現技術中,ip負載均衡技術是效率最高的。在已有的ip負載均衡技術中有通過網路位址轉換 network address translation 將一組伺服器構成乙個高效能的 高可用的虛擬伺服器,我們稱之為vs nat技術 virtual server via network address...