lvs + heatbeat +dr

 

環境描述:本文在配置LVS時使用三臺linux,虛擬VIP:192.168.62.111

一臺做Directorserver(192.168.62.129),操作系統RedhatAS4
兩臺做realserver(192.168.62.5,192.168.62.6)操作系統RedhatAS4
在配置lvs+heartbeat時,又添加了一臺(192.168.62.3)做爲備份主節點,操作系統Fedora7
Virtual IP:192.168.62.111
Load Balancer:192.168.62.129
Backup: 192.168.62.3
Real Server 1: 192.168.62.5
Real Server 2: 192.168.62.6
軟件列表:
ipvsadm-1.24.tar.gz: http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
ipvsadm-1.24-8.1.i386.rpm
ftp://rpmfind.net/linux/fedora/releases/7/Everything/i386/os/Fedora/ipvsadm-1.24-8.1.i386.rpm
libnet.tar 下載地址:http://www.packetfactory.net/libnet/ 穩定版本是:1.1.2.1
heartbeat-2.0.2.tar.gz: http://linux-ha.org/download/heartbeat-2.0.8.tar.gz
2.6內核已經集成IPVS內核補訂了,所以不再需要重新編譯內核。
配置此集羣分以下幾種情況
一、配置基於DR模式Lvs集羣
1、下載ipvsadm管理程序
http://www.linuxvirtualserver.org/software/
注意對應自己的內核版本
ipvsadm-1.24.tar.gz
tar zxvf ipvsadm-1.24.tar.gz
cd ipvsadm-1.24
make && make install
注意在make時可能會出現很多錯誤的信息,請按照如下操作就可以心編譯正常
1.找到ip_vs.h文件.copy to /usr/include/net下
2.ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux (若沒有2.6.9-22.El-*,則rpm –ivh 內核.rpm)
3.修改當前目錄和libipvs目錄中的Makefile的:
INCLUDE = -I/usr/src/linux/include -I.. -I.
爲:
INCLUDE = -I/usr/src/kernels/2.6.9-22.EL-i686/include -I..
 
cd ipvsadm-1.24
make && make install
2.配置VIP腳本
[root@test1song]#vi LvsDR
#!/bin/sh
VIP=192.168.62.111
RIP1=192.168.62.6
RIP2=192.168.62.5
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
#Set the Virtual IP Address
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/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"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
(-s rr 是使用了輪叫算法,可以自行選擇相應的算法,默認是-wlc, -g 是使用lvs工作DR直接路由模式,ipvsadm -h查看幫助)。
3、配置realserver腳本
[root@testrealsong]#vi realserver
#!/bin/sh
VIP=192.168.62.111
/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
sysctl –p
如果有多個realserver直接添加就可以了,之後啓動此腳本就可以了。
測試:分別啓動realserver上的httpd服務
在realserver1 執行 echo "This is realserver1" >> /var/www/html/index.html
在realserver2 執行 echo "This is realserver2" >> /var/www/html/index.html
打開IE瀏覽器輸入http://192.168.62.111應該可以分別看到:This is realserver1 和 This is realserver2.
二、配置基於隧道模式Lvs集羣
1.配置LVS directorserver 腳本
[root@test1song]#vi TunLVS
#!/bin/sh
VIP=192.168.62.111
RIP1=192.168.62.5
RIP2=192.168.62.6
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start Lvs of DirectorServer"
#set vip server
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
#clear IPVS table
/sbin/ipvsadm -C
#set lvs
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#Run Lvs
/sbin/ipvsadm
;;
stop)
echo "Close Lvs DirectorServer "
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
2. 配置realserver
[root@testrealsong]#
#!/bin/sh
VIP=192.168.62.111
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "tunl port starting"
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
echo "tunl port closing"
ifconfig tunl0 down
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usege: $0 {start|stop}"
exit 1
esac
此腳本分別在realserver上執行,目的使realserver忽略arp響應,並設定vip.
3、配置realserver腳本
[root@testrealsong]#vi realserver
#!/bin/sh
VIP=192.168.62.111
/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
sysctl –p
如果有多個realserver直接添加就可以了,之後啓動此腳本就可以了。
測試:分別啓動realserver上的httpd服務
在realserver1 執行 echo "This is realserver1" >> /var/www/html/index.html
在realserver2 執行 echo "This is realserver2" >> /var/www/html/index.html
打開IE瀏覽器輸入http://192.168.62.111應該可以分別看到:This is realserver1 和 This is realserver2.
二、配置基於隧道模式Lvs集羣
1.配置LVS directorserver 腳本
[root@test1song]#vi TunLVS
#!/bin/sh
VIP=192.168.62.111
RIP1=192.168.62.5
RIP2=192.168.62.6
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start Lvs of DirectorServer"
#set vip server
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
#clear IPVS table
/sbin/ipvsadm -C
#set lvs
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#Run Lvs
/sbin/ipvsadm
;;
stop)
echo "Close Lvs DirectorServer "
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
2. 配置realserver
[root@testrealsong]#
#!/bin/sh
VIP=192.168.62.111
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "tunl port starting"
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
echo "tunl port closing"
ifconfig tunl0 down
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usege: $0 {start|stop}"
exit 1
esac
此腳本分別在realserver上執行,目的使realserver忽略arp響應,並設定vip.
三、配置基於高可用Lvs+heartbeat
確定LVS使用DR或/tun模式,請對照上面的配置,本例使用DR模式
1.配置LVS directorserver 腳本
#!/bin/sh
VIP=192.168.62.111
RIP1=192.168.62.6
RIP2=192.168.62.5
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of DirectorServer"
#Set the Virtual IP Address
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:1
#Clear IPVS Table
/sbin/ipvsadm -C
#Set Lvs
/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"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
2. realserver端同樣使用上面的配置文件就可以。
3.安裝heartbeat
3.1 安裝
tar -zxvf libnet.tar.gz
cd libnet
。/configure
make
make install
groupadd -g 694 haclient
useradd -u 694 -g haclient hacluster
tar zxf heartbeat-1.99.4.tar.gz
cd heartbeat-1.99.4
。/ConfigureMe configure
make
make install
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
cp ldirectord/ldirectord.cf /etc/ha.d/
3.2配置主文件/etc/ha.d/ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 60
warntime 10
initdead 120
udpport 694
bcast eth0 # Linux
auto_failback on
ping_group group1 192.168.62.129192.168.62.3
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root
hopfudge 1
use_logd yes
node test1
node test2
crm on
3.3資源文件/etc/ha.d/haresources
test1192.168.62.111 httpd
設置test1爲主節點,集羣服務器的ip地址爲192.168.62.111集羣服務有httpd
3.4認證文件(/etc/ha.d/authkeys),選取一種認證方式,這個文件的權限必須是600
auth 1
1 crc
#2 sha1 sha1_any_password
#3 md5 md5_any_password
chmod 600 /etc/ha.d/ haresources
3.5編輯主機名:/etc/hosts
192.168.62.129 test1
192.168.62.3 test2
備份節點192.168.62.3 上的heartbeat和apache的配置與節點1要完全相同,lvs配置也要相同
完裝完畢進行測試,關閉主節點機器,另一臺自動接管,主節點恢復後自動接管回服務。如果以上測試沒有問題,那麼開始和lvs整合。
4.配置Ldirectord
Ldirectord的作用是監測Real Server,當Real Server失效時,把它從Load Balancer列表中刪除,恢復時重新添加,在安裝heartbeat時已經安裝了Ldirectord.
配置(/etc/ha.d/ldirectord.cf):
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes
# Sample for an http virtual service
virtual=192.168.62.111:80
real=192.168.62.6:80 gate
real=192.168.62.5:80 gate
fallback=127.0.0.1:80 gate
service=http
request="index.html"
receive="Test Page"
protocol=tcp
checktype=negotiate
checkport=80
在每個Real Server的中添加監控頁:
echo "Test Page" >> /var/www/html/index.html
修改/etc/ha.d/haresources
test1192.168.62.111 ipvsadm ldirectord httpd
現在可以在主節點啓動heartbeat
/etc/init.d/heartbeat start
並在備份節點啓動heartbeat
/etc/init.d/heartbeat start
測試:關閉主節點,備份節點將自動接管directorserver服務。
Hnq道州網-道縣網
3、配置realserver腳本
[root@testrealsong]#vi realserver
#!/bin/sh
VIP=192.168.62.111
/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
sysctl –p
如果有多個realserver直接添加就可以了,之後啓動此腳本就可以了。
測試:分別啓動realserver上的httpd服務
在realserver1 執行 echo "This is realserver1" >> /var/www/html/index.html
在realserver2 執行 echo "This is realserver2" >> /var/www/html/index.html
打開IE瀏覽器輸入http://192.168.62.111應該可以分別看到:This is realserver1 和 This is realserver2.
二、配置基於隧道模式Lvs集羣
1.配置LVS directorserver 腳本
[root@test1song]#vi TunLVS
#!/bin/sh
VIP=192.168.62.111
RIP1=192.168.62.5
RIP2=192.168.62.6
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "Start Lvs of DirectorServer"
#set vip server
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
#clear IPVS table
/sbin/ipvsadm -C
#set lvs
/sbin/ipvsadm -A -t $VIP:80 -s rr
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -i
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -i
#Run Lvs
/sbin/ipvsadm
;;
stop)
echo "Close Lvs DirectorServer "
ifconfig tunl0 down
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
2. 配置realserver
[root@testrealsong]#
#!/bin/sh
VIP=192.168.62.111
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "tunl port starting"
/sbin/ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev tunl0
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "1" > /proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p
;;
stop)
echo "tunl port closing"
ifconfig tunl0 down
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usege: $0 {start|stop}"
exit 1
esac
此腳本分別在realserver上執行,目的使realserver忽略arp響應,並設定vip.
3.4認證文件(/etc/ha.d/authkeys),選取一種認證方式,這個文件的權限必須是600
auth 1
1 crc
#2 sha1 sha1_any_password
#3 md5 md5_any_password
chmod 600 /etc/ha.d/ haresources
3.5編輯主機名:/etc/hosts
192.168.62.129 test1
192.168.62.3 test2
備份節點192.168.62.3 上的heartbeat和apache的配置與節點1要完全相同,lvs配置也要相同
完裝完畢進行測試,關閉主節點機器,另一臺自動接管,主節點恢復後自動接管回服務。如果以上測試沒有問題,那麼開始和lvs整合。
4.配置Ldirectord
Ldirectord的作用是監測Real Server,當Real Server失效時,把它從Load Balancer列表中刪除,恢復時重新添加,在安裝heartbeat時已經安裝了Ldirectord.
配置(/etc/ha.d/ldirectord.cf):
checktimeout=3
checkinterval=1
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
quiescent=yes
# Sample for an http virtual service
virtual=192.168.62.111:80
real=192.168.62.6:80 gate
real=192.168.62.5:80 gate
fallback=127.0.0.1:80 gate
service=http
request="index.html"
receive="Test Page"
protocol=tcp
checktype=negotiate
checkport=80
在每個Real Server的中添加監控頁:
echo "Test Page" >> /var/www/html/index.html
修改/etc/ha.d/haresources
test1192.168.62.111 ipvsadm ldirectord httpd
現在可以在主節點啓動heartbeat
/etc/init.d/heartbeat start
並在備份節點啓動heartbeat
/etc/init.d/heartbeat start
測試:關閉主節點,備份節點將自動接管directorserver服務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章