Linux搭建負載均衡集群,使用LVS的DR模式,Linux Cluster
LB(負載均衡集群)
負載均衡集群,通常有兩種實現方式,基於硬件或基於軟件。
基於硬件:BIP
基於軟件:
基於OSI第四層傳輸層:LVS(Linux Virtual Server)
基於OSI第期層傳輸層:nginx
LVS,全稱Linux Virtual Server,由國人章文嵩博士提出並實現。 LVS有三種工作模式:DR直接路由模式、NAT地址轉換模式、TUN隧道模式 在實際環境中若是搭建負載均衡集群直接使用DR模式。

Director有一張網卡,與realserver連接在同一個交換機上,並能相互通信,配置一個網絡別名作為VIP,
在每個realserver上綁定一個虛擬網卡ip地址lo:0,該虛擬ip地址為director的ip地址,
用於realserver處理完director分給的用戶請求後,直接使用director的ip作為源ip返回給用戶。
在綁定虛擬網卡ip前,需要先調整director的arptable(對arp請求的通告級別、回應級別調整)。
arp_ignore:只對什麼級別的arp請求進行響應,當arp廣播請求的目標ip不在同一個接口上就不予響應。
默認為0,能通告就通告。
0:只要本地配置的有相應地址,就給予響應;
1:僅在請求的目標地址配置請求到達的接口上的時候,才給予響應;
arp_announce:向外主動通告自己的通告級別。
默認為0,能通告就通告。
0:將本地任何接口上的任何地址向外通告;
1:試圖僅向目標網絡通告與其網絡匹配的地址;
2:僅向與本地接口上地址匹配的網絡進行通告
在realserver上配置一條獨特的路由條目,才能將處理好的用戶請求使用director的IP地址返回結果給用戶
物理機上安裝virtualbox軟件上創建一台centos5.5,最小化安裝即可,作為Director。 桌面可裝可不裝,使用6.X,7.X也是可以的,這裡使用centos5.5是因為my computer才8G內存 virtualbox的虛擬介質管理,復制2台剛才安裝好的centos5.5硬盤,明明為realserver1,realserver2 新建虛擬機作為realserver時,選擇存儲介質選擇現有的磁盤,路徑指向剛才復制的centos5.5
0).ipvs在2.6.X版本後的內核中默認安裝有,我們需要安裝ipvsadm進行管理,注意:ipvsadm與iptables不能同時使用,實驗前需關閉iptables與selinux
1).Director只需一張網卡選擇橋接模式,啟動
2).為Director安裝ipvsadm
yum -y install ipvsadm
檢查是否安裝成功只需輸入ipvsadm,無輸出則未安裝有,若已安裝則輸出如下字樣
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3).配置測試網頁
為每台realserver安裝http,並啟動httpd服務
yum install http
service httpd start
echo "this is realserver1 test web" > /var/www/html/index.html
echo "this is realserver2 test web" > /var/www/html/index.html
echo "this is realserver3 test web" > /var/www/html/index.html
#分別創建測試頁
curl http://ipaddress #訪問測試頁
4).配置director
配置VIP
配置網絡別名DIP
ifconfig eth0:0 192.168.8.30/24
5).配置realserver的RIP
realserver1:192.168.8.32
realserver2:192.168.8.33
6).分別配置realserver的arp_ignore、arp_announce
realserver1:
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
realserver2:
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
7).分別在realserver1、2上配置的網絡別名VIP與靜態路由
ifconconfig lo:0 192.168.8.30 broadcast 192.168.8.30 netmask 255.255.255.255 up
route add -host 192.168.8.30 dev lo:0
在director上也需要配置靜態路由
route add -host 192.168.8.30 dev eth0:0
8).在director上測試能否正常訪問realserver的測試頁
9).配置ipvsadm規則
在director上配置
[root@director ~]# ipvsadm -C #清空之前的ipvsadm規則
[root@director ~]# ipvsadm -A -t 192.168.8.30:80 -s wlc
[root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.32 -g -w 2 #-g表示DR模式 -w表示權重
[root@director ~]# ipvsadm -a -t 192.168.8.30:80 -r 192.168.8.33 -g -w 1
[root@director ~]# ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.8.30:80 wlc
-> 192.168.8.33:80 Route 1 0 0
-> 192.168.8.32:80 Route 2 0 0
10).測試
使用物理機的浏覽器輸入http://director的ip地址
不斷刷新即可看到效果