Lvs+keepalived能實現的功能: 利用lvs控制器主備模式避免單點故障以及自動刪除故障WEB服務器結點並當它恢復後再自動添加到羣集中。
拓撲圖:
IP規劃:
1、在LVS SRV上安裝lvs、keepalived軟件(LVS-MASTER & LVS-BACKUP)
lvs install--------------------------------
[root@LVS-MASTER ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
[root@LVS-MASTER ~]# ln -s /usr/src/kernels/2.6.18-238.el5-i686/ /usr/src/linux/
[root@LVS-MASTER ~]# tar zxvf ipvsadm-1.24.tar.gz
[root@LVS-MASTER ~]# cd ipvsadm-1.24
[root@LVS-MASTER ipvsadm-1.24]# make && make install
Keepalived install------------------------------------
[root@LVS-MASTER ~]# wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
[root@LVS-MASTER ~]# tar zxvf keepalived-1.1.15.tar.gz
[root@LVS-MASTER ~]# cd keepalived-1.1.15
[root@LVS-MASTER keepalived-1.1.15]# ./configure && make && make install
######### 將keepalived做成啓動服務,方便管理 ##########
[root@LVS-MASTER ~]# cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
[root@LVS-MASTER ~]# cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
[root@LVS-MASTER ~]# mkdir /etc/keepalived/
[root@LVS-MASTER ~]# cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
[root@LVS-MASTER ~]# cp /usr/local/sbin/keepalived /usr/sbin/
[root@LVS-MASTER ~]# service keepalived start | stop
2、keepalived的配置
============================================================================
################### MASTER ######################
============================================================================
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 127.0.0.1
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.201.188
}
}
virtual_server 172.16.201.188 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.201.211 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.16.201.212 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
============================================================================
######################### BACKUP ######################
============================================================================
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.201.188
}
}
virtual_server 172.16.201.188 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_server 172.16.201.211 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 172.16.201.212 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
3、在realserver SRV上執行realserver.sh腳本,爲lo:0綁定VIP地址172.16.201.188、抑制ARP廣播。
4、分別在LVS-MASTER、LVS-BACKUP SRV上執行service keepalived start啓動keepalived就可實現負載均衡及高可用集羣了;
[root@LVS-MASTER ~]# service keepalived start
日誌信息:
――――――――――――――高可用性測試―――――――――――――――
(爲了模擬故障,將LVS-MASTER上的keepalived服務停掉,然後觀察LVS-BACKUP SRV上的日誌,信息如下…)
(從日誌中可知,主機出現故障後,備機立刻檢測到,此時備機變爲MASTER角色,並且接管了主機的虛擬IP資源,最後將虛擬IP綁定在etho設備上。)
將LVS-MASTER 上的keepalived服務開啓後,LVS-BACKUP的日誌狀態。
(從日誌可知,備機在檢測到主機重新恢復正常後,釋放了虛擬IP資源重新成爲BACKUP角色)
―――――――――――――故障切換測試――――――――――――――――――――
----故障切換是測試當某個節點出現故障後,Keepalived監製模塊是否能及時發現然後屏蔽故障節點,同時將服務器轉移到正常節點來執行。
將REAL-SERVER2節點服務停掉,假設這個節點出現故障,然後主、備機日誌信息如下…….
(從以上可以看出,Keepalived監控模塊檢測到172.16.201.212這臺主機出現故障後,將些節點2從集羣系統中剔除掉了。 此時訪問http://172.16.201.188 只能看到“This is realserver1 !!!”了)
重新啓動REAL-SERVER2節點的服務,日誌信息如下:
(Keepalived監控模塊檢測到172.16.201.212這臺主機恢復正常後,又將此節點加入集羣系統中,再次訪問就可以訪問到“This is realserver2 !!!”頁面了, 嘿嘿……..)