在公司閒了,研究研究自己喜歡的東西,哈哈,這兩天安裝部署了LVS負載均衡環境,搞了很久才配置成功,不容易啊。下面是我的環境:
虛擬機A:
IP:192.168.213.129
操作系統:CentOS 6.3
虛擬機B:
IP:192.168.213.128
操作系統:Ubuntu 12.04
虛擬IP設置爲:192.168.213.130
上面兩個虛擬機我這裏已經安裝了Nginx1.0+PHP5.3+MYSQL5.5(測試效果的時候用到),還沒安裝的請自行安裝。
由於只裝了兩個虛擬機,我這裏將虛擬機A作爲Directorserver,同時也作爲realServer,將虛擬機B作爲realServer,具體安裝步驟如下:
1:安裝依賴類庫:
>yum -y install popt-static kernel-devel lftp libnl* popt*
2:在虛擬機A中安裝LVS,即ipvsadm:
>wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz
>tar -zxf ipvsadm-1.26.tar.gz
>cd ipvsadm-1.26
>make && make install
3:在虛擬機A創建lvsServer啓動腳本:
>cd /etc/rc.d/init.d/
>vi lvsServer
#添加如下內容:
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.213.130
RIP1=192.168.213.128
RIP2=192.168.213.129
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
#虛擬網絡接口指的是爲一個網絡接口指定多個IP地址,虛擬接口是這樣的 eth0:0 、 eth0:1、eth0:2
#其實用ifconfig 爲一個網卡配置多個IP地址
/sbin/ifconfig eth1:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth1:0
#echo "1" >/proc/sys/net/ipv4/ip_forward,通過該參數來啓用包轉發功能,從而使系統充當路由器。
#參數值爲1時啓用ip轉發,爲0時禁止ip轉發。注意,我們可以在單網卡或雙網卡的主機上實現ip轉發
echo "1" >/proc/sys/net/ipv4/ip_forward
# Clear all iptables rules.
/sbin/iptables -F
# Reset iptables counters.
/sbin/iptables -Z
# Clear all ipvsadm rules/services.
#清除內核虛擬服務器表中的所有記錄
/sbin/ipvsadm -C
#set LVS
#-A 在內核的虛擬服務器表中添加一條新的虛擬服務器記錄。也就是增加一臺新的虛擬服務器
#-t 說明虛擬服務器提供的是tcp 的服務
#-s 使用的調度算法,有這樣幾個選項rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,默認的調度算法是:wlc
#-p 持久穩固的服務。這個選項的意思是來自同一個客戶的多次請求,將被同一臺真實的服務器處理。timeout 的默認值爲300 秒
/sbin/ipvsadm -A -t $VIP:80 -s rr -p 30
#-a 在內核虛擬服務器表的一條記錄裏添加一條新的真實服務器記錄。也就是在一個虛擬服務器中增加一臺新的真實服務器
#-r 真實的服務器[Real-Server:port]
#-g 指定LVS 的工作模式爲直接路由模式(也是LVS 默認的模式)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth1:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
4:在虛擬機A創建realServer啓動腳本:
>cd /etc/rc.d/init.d/
>vi realServer
#內容如下:
#!/bin/bash
#description : start realserver
VIP=192.168.213.130
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
5:在虛擬機A中設置ip地址轉發功能:
>vi /etc/sysctl.conf #修改net.ipv4.ip_forward = 1
6:在虛擬機B中設置如下:
>vi /etc/sysctl.conf
#修改如下
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
7:在虛擬機A啓動lvsServer:
>cd /etc/rc.d/init.d/
>./lvsServer start
8:在虛擬機A啓動realServer
>cd /etc/rc.d/init.d/
>./realServer start
9:在虛擬機B創建realServer啓動腳本:
>cd /etc/init.d/
>vi realServer
#內容如下:
#!/bin/bash
#description : start realserver
VIP=192.168.213.130
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
10:在虛擬機B啓動realServer:
>cd /etc/init.d/
>./realServer start
11:分別在虛擬機A和B創建測試文件,在真實電腦裏用瀏覽器訪問192.168.213.130即可看到負載均衡效果。
12:在虛擬機A中查看負載狀態:
>ipvsadm -lcn
#顯示如下:
IPVS connection entries
pro expire state source virtual destination
TCP 01:56 FIN_WAIT 192.168.213.1:60118 192.168.213.130:80 192.168.213.129:80
TCP 14:56 ESTABLISHED 192.168.213.1:60119 192.168.213.130:80 192.168.213.128:80