一:環境說明:
LVS-DR-Master: 10.3.0.82
LVS-DR-Backup: 10.3.0.70
VIP: 10.3.0.60
RealServer1: 10.3.0.69
RealServer1: 10.3.0.83
Centos:5.7
二:安裝LVS和Keepalvied軟件包
1. 下載相關軟件包
mkdir /usr/local/src/lvs
cd /usr/local/src/lvs
wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
2. 安裝LVS和Keepalived
lsmod |grep ip_vs
uname -r
2.6.18-53.el5PAE
ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/ /usr/src/linux
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install
find / -name ipvsadm # 查看ipvsadm的位置
或者使用yum install ipvsadm
tar zxvf keepalived-1.1.15.tar.gz
cd keepalived-1.1.15
./configure && make && make install
find / -name keepalived # 查看keepalived位置
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
cp /usr/local/sbin/keepalived /usr/sbin/
service keepalived start|stop #作成系統啓動服務方便管理. html
備註:在安裝keepalived的過程當中,第一次的版本過高我下載1.2的版本,linux
以上是個人kernel版本,在安裝的過程當中總報錯,網上也沒有找到相關的說明,因此就下載了個低版本的結果就ok了。
三:LVS-DR,配置LVS腳本實現負載均衡
vim /etc/init.d/lvsdr
#!/bin/bash
RIP1=10.3.0.69
RIP2=10.3.0.83
VIP=10.3.0.60
. /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
#Web Apache
/sbin/ipvsadm -A -t $VIP:80 -s rr
/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 eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
chmod a+x /etc/init.d/lvsdr
service lvsdr start|stop
查看命令:
ipvsadm -lnnginx
ipvsadm -lcn 查看請求轉發狀況vim
備註:此腳本在LVS-DR-Master和Backup上均需執行
四:配置Realserver腳本
vim /etc/init.d/realserver
#!/bin/bash
VIP=10.3.0.60
. /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
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
chmod a+x /etc/init.d/realserver
service realserver start|stop
能夠經過ifconfig或者ip add 命令查看是否綁定
備註:此腳本在兩臺realserver上均須執行。
五:利用Keepalvied實現負載均衡和和高可用性bash
vim /etc/keepalived/keepalived.conf服務器
! Configuration File for keepalived
global_defs {
notification_email {
caozhenhuamail@gmail.com
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #備份服務器上將MASTER改成BACKUP
interface eth0
virtual_router_id 51
priority 100 #備份服務器將100改成98
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.3.0.60
}
}
virtual_server 10.3.0.60 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP
real_server 10.3.0.69 80 {
weight 3 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應超時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 10.3.0.83 80 {
weight 3 #(權重)
TCP_CHECK {
connect_timeout 10 #(10秒無響應超時)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}負載均衡
service keepalived start|stop
備註:BACKUP服務器同上配置,只需將紅色標示的部分改一下便可.oop
六:測試測試
1 realserver其中一臺服務中止:spa
我用的是兩臺nginx服務器
ps -aux |grep nginx #查找nginx主線程pid
kill -QUIT 4195
觀察DR狀況:
10.3.0.83服務器已經被清除了,證實ok;
2. 把剛纔停掉得83的nginx啓動
繼續觀察DR狀況:
83已經成功被加入到realserver組
3:停掉master的keepalived看是否backup能接管:
訪問10.3.0.60 觀察backup的DR狀況:
發現backup的DR接收到了客戶端發出得請求,並且成功轉發,也能夠經過日誌信息查看
tail -f /var/log/message
4:咱們把master的keepalived從新啓動,觀察客戶端請求是否會從新被master接收而且轉發:
visit: http://10.3.0.60 觀察
master:
請求成功接收而且轉發
backup 日誌:
tail -f /var/log/message
備份服務器日誌說明它已經進入備份狀態,並且也沒有接收到客戶端發來的請求;
七: 以上是本身操做的流程,有什麼問題請你們給予指正,對了,還有點要說明的是若是你的機器的防火牆都開得話,試驗是不可能成功的,除非你對防火牆的過濾規則 設置的正確,由於此次主要是測試負載均衡,因此我直接把全部的機器的iptables都停掉了,service iptables stop;
轉自:http://www.cnblogs.com/czh-liyu/archive/2011/12/01/2270973.html