ipvs負載均衡(lvs)html
IPVS在內核中的負載均衡調度是以鏈接爲粒度的。在HTTP協議(非持久)中,每一個對象從WEB服務器上獲取都須要創建一個TCP鏈接,同一用戶 的不一樣請求會被調度到不一樣的服務器上,因此這種細粒度的調度在必定程度上能夠避免單個用戶訪問的突發性引發服務器間的負載不平衡。node
在內核中的鏈接調度算法上,IPVS已實現瞭如下十種調度算 (http://zh.linuxvirtualserver.org/node/35)linux
輪叫調度(Round-Robin Scheduling) web
加權輪叫調度(Weighted Round-Robin Scheduling) 算法
最小鏈接調度(Least-Connection Scheduling) 後端
加權最小鏈接調度(Weighted Least-Connection Scheduling) 瀏覽器
基於局部性的最少連接(Locality-Based Least Connections Scheduling) 服務器
帶複製的基於局部性最少連接(Locality-Based Least Connections with Replication Scheduling) 負載均衡
目標地址散列調度(Destination Hashing Scheduling) tcp
源地址散列調度(Source Hashing Scheduling)
最短預期延時調度(Shortest Expected Delay Scheduling)
不排隊調度(Never Queue Scheduling)
具體的調度算法會在之後的博客中概述!
################################################################################
注意:實驗以前關閉防火牆與selinux
實驗環境:rhel6.5
lvs調度器主機:172.25.28.8 vm8.example.com
後臺web應用服務器:172.25.28.1 vm1.example.com
172.25.28.4 vm4.example.com
兩臺web服務主機安裝httpd:yum install httpd -y
兩臺web主機執行如下操做:
[root@vm1 ~]# cd /var/www/html/ 分別 在各自默認發佈目錄下創建html文件
[root@vm1 html]# cat index.html
vm1.example.com
[root@vm4 html]# cat index.html
vm4.example.com
[root@vm8 ~]# yum install -y ipvsadm 在調度主機上面安裝軟件
[root@vm8 ~]# ifconfig eth0:0 172.25.28.100 netmask 255.255.255.0 up 設置虛擬ip
[root@vm1 html]# ifconfig eth0:0 172.25.28.100 netmask 255.255.255.255 設置後端應用服務器的虛擬ip
vm1的操做與vm4進行同樣的操做
[root@vm1 html]# yum install -y arptables_jf
[root@vm1 html]# /etc/init.d/arptables_jf start
[root@vm1 html]# arptables -A IN -d 172.25.28.100 -j DROP
[root@vm1 html]# arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.1
[root@vm1 html]# /etc/init.d/arptables_jf save
Saving current rules to /etc/sysconfig/arptables: [ OK ]
[root@vm4 html]# yum install -y arptables_jf
[root@vm4 html]# /etc/init.d/arptables_jf start
[root@vm4 html]# arptables -A IN -d 172.25.28.100 -j DROP
[root@vm4 html]# arptables -A OUT -s 172.25.28.100 -j mangle --mangle-ip-s 172.25.28.4
[root@vm4 html]# /etc/init.d/arptables_jf save
Saving current rules to /etc/sysconfig/arptables: [ OK ]
[root@vm8 ~]# ipvsadm -A -t 172.25.28.100:80 -s rr
[root@vm8 ~]# ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.1:80 -g
[root@vm8 ~]# ipvsadm -a -t 172.25.28.100:80 -r 172.25.28.4:80 -g
測試:
在瀏覽器中輸入:http://172.25.28.100 會負載均衡顯示應用服務器的首頁內容
可使用命令在調度主機上查看:
[root@vm8 ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 172.25.28.100:http rr
-> vm1.example.com:http Route 1 0 2
-> vm4.example.com:http Route 1 0 2
-A --add-service 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也
就是增長一臺新的虛擬服務器。
-t --tcp-service service-address 說明虛擬服務器提供的是tcp 的服務
[vip:port] or [real-server-ip:port]
-s --scheduler scheduler 使用的調度算法,有這樣幾個選項
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq, 默認的調度算法是: wlc.
-a --add-server 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器
記錄。也就是在一個虛擬服務器中增長一臺新的真實服務器
-r --real-server server-address 真實的服務器[Real-Server:port]
-g --gatewaying 指定LVS 的工做模式爲直接路由模式(也是LVS 默認的模式)
-L|-l --list 顯示內核虛擬服務器表
-C --clear 清除內核虛擬服務器表中的全部記錄。