lvs+keepalived實現web服務高可用
linux
1.系統環境:
web
RHEL6:安裝base;developmenttools(全部可選包)。
服務器
四臺服務器:兩臺負載服務器,兩臺真實web服務器。
網絡
vip:192.168.50.179
session
master:192.168.50.170 (主負載)
app
backup:192.168.50.171 (備用負載)
ide
rs1:192.168.50.172 (真實web服務器1)
oop
rs2:192.168.50.173 (真實web服務器2)
測試
2.負載節點安裝配置:
spa
(1)安裝ipvsadm
#ln -s/usr/src/kernels/`uname -r` /usr/src/linux
#tar zxvfipvsadm-1.24.tar.gz
#cdipvsadm-1.24
#make;make install
ipvsadm不須要作任何配置。只需肯定正確安裝便可。
(2)安裝配置keepalived
個人系統環境在安裝過程當中提示以下信息:
須要安裝openssl-devel包,這個包也有幾個依賴包,按提示安裝便可。
此外在安裝過程當中還缺乏 popt-devel,libnl-devel包。直接安裝。
#tar zxvf keepalived-1.2.2.tar.gz
#cd keepalived-1.2.2
#./configure --prefix=/usr/local/keepalived
#make;make install
安裝完成後看到以下提示信息說明安裝正確:
編輯配置文件keepalived.conf文件,下面是個人配置文件內容:
# sed -e /^#/d /usr/local/keepalived/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL_1 #此處在備用負載上改爲其餘值,如:LVS_DEVEL_2
}
vrrp_instance VI_1 {
state MASTER #此處在備用負載上改爲 BACKUP
interface eth0
virtual_router_id 51
priority 200 #此處在備用負載上的值改小一點,值越大有點權越大
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.50.179 #虛擬IP
}
}
virtual_server 192.168.50.179 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50 #session保持時間
protocol TCP
real_server 192.168.50.172 80 {
weight 100
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
check_port 80
}
}
real_server 192.168.50.173 80 {
weight 100
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
check_port 80
}
}
}
注:按照以上配置在主負載從失效狀態再次上線時,會接管備用負載資源,在負載量大的應用環境不太可取,若是不想搶奪備用負載的資源,可把主負載也設置成「BACKUP」,並設置「nopreempt」。優先級要保持比備用負載高。
#ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
#ln -s /usr/local/keepalived/etc/keepalived/keepalived.conf /etc
#keepalived -f /etc/keepalived.conf
echo "keepalived -f /etc/keepalived.conf" >> /etc/rc.local
---------------------------------------------------------------------------
3.真實web節點配置
(1)在真實節點安裝安裝好web應用環境。並分別創建兩個測試頁面。
(2)在真實節點創建腳本文件
#vi /etc/init.d/real_server.sh
#!/bin/sh
# chkconfig: 234572 08
# description:Config realserver lo:0 port and apply arp patch
VIP=192.168.50.179
./etc/rc.d/init.d/functions
case $1 in
start)
echo "lo:0 port starting"
echo "0">/proc/sys/net/ipv4/ip_forward
/sbin/ifconfig lo:0 $VIP broadcast $VIPnetmask 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
;;
stop)
echo "lo:0 port closing"
ifconfig lo:0 down
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#chkconfig --add real_server.sh
#chkconfig --level 235 real_server.sh on
----------------------------------------------------------------------------------
4.測試
分別停掉兩臺web服務器的http服務,或者down掉網絡接口查看結果。
分別停掉兩臺負載服務器,查看相關日誌,看是否能自動接管。