系統都是6.3 32位
Vip:192.168.2.244
Lvs-master:192.168.2.80
Lvs-backup:192.168.2.6
Web1:192.168.2.93
Web2:192.168.2.64
聲明;這裏套用一張拓撲圖,基本可以滿足我的實驗環境。 不多說,進行實驗。
1、安裝ipvsadm
yum -y install ipvsadm
2、安裝keepalived
[root@node1 ~]# wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
[root@node1 ~]# tar zxvf keepalived-1.1.15.tar.gz
[root@node1 ~]# cd keepalived-1.1.15
root@node1 keepalived-1.1.15]# ./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.18-92.el5-i686/
configure後會輸入這結果爲正確
Keepalived configuration
------------------------
Keepalived version : 1.1.15
Compiler : gcc
Compiler flags : -g -O2
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes #支持lvs
IPVS sync daemon support : Yes
Use VRRP Framework : Yes
Use LinkWatch : No
Use Debug flags : No
[root@node1 keepalived-1.1.15]# make && make install
到此,lvs+keepalived安裝完成。但是還不能使用lvs功能,接下來以dr模式配置lvs+keepalived
MASTER 配置:(BACKUP 配置跟MASTER 基本一樣,只是有些地方需要改下)
Configuration File for keepalived
global_defs {
notification_email {
}*/全局配置解析global_defs全局配置標識,表面這個區域{}是全局配置*/
notification_email_from [email protected]/*表示發送通知郵件時郵件源地址是誰*/
smtp_server 127.0.0.1/* 表示發送email時使用的smtp服務器地址,這裏可以用本地的sendmail來實現*/
#smtp_connect_timeout 30/*連接smtp連接超時時間*/
router_id LVS_DEVEL/*機器標識*/ 我這個實驗沒有區分*/
}
/*表示keepalived在發生諸如切換操作時需要發送email通知,以及email發送給哪些郵件地址,郵件地址可以多個,每行一個*/
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_interface eth0
virtual_router_id 51
priority 100
advert_int 5
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.244
}
}
virtual_server 192.168.2.244 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
#persistence_timeout 5
protocol TCP
real_server 192.168.2.93 80 {
weight 3
TCP_CHECK {
connect_port 80
nb_get_retry 3
delay_before_retry 3
connect_timeout 30
}
}
}
virtual_server 192.168.2.244 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
#persistence_timeout 5
protocol TCP
real_server 192.168.2.64 80 {
weight 1
TCP_CHECK {
connect_port 80
connect_timeout 30
nb_get_retry 3
delay_brfore_retry 3
}
}
}
state:state 指定instance(Initial)的初始狀態,就是說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,還是得要通過競選通過優先級來確定,裏如果這裏設置爲master,但如若他的優先級不及另外一臺,那麼這臺在發送通告時,會發送自己的優先級,另外一臺發現優先級不如自己的高,那麼他會就回搶佔爲master
interface:實例綁定的網卡,因爲在配置虛擬IP的時候必須是在已有的網卡上添加的
dont track primary:忽略VRRP的interface錯誤
track interface:跟蹤接口,設置額外的監控,裏面任意一塊網卡出現問題,都會進入故障(FAULT)狀態,例如,用nginx做均衡器的時候,內網必須正常工作,如果內網出問題了,這個均衡器也就無法運作了,所以必須對內外網同時做健康檢查
mcast src ip:發送多播數據包時的源IP地址,這裏注意了,這裏實際上就是在那個地址上發送VRRP通告,這個非常重要,一定要選擇穩定的網卡端口來發送,這裏相當於heartbeat的心跳端口,如果沒有設置那麼就用默認的綁定的網卡的IP,也就是interface指定的IP地址
garp master delay:在切換到master狀態後,延遲進行免費的ARP(gratuitous ARP)請求
virtual router id:這裏設置VRID,這裏非常重要,相同的VRID爲一個組,他將決定多播的MAC地址
priority 100:設置本節點的優先級,優先級高的爲master
advert int:檢查間隔,默認爲1秒
virtual ipaddress:這裏設置的就是VIP,也就是虛擬IP地址,他隨着state的變化而增加刪除,當state爲master的時候就添加,當state爲backup的時候刪除,這裏主要是有優先級來決定的,和state設置的值沒有多大關係,這裏可以設置多個IP地址
virtual routes:原理和virtual ipaddress一樣,只不過這裏是增加和刪除路由
lvs sync daemon interface:lvs syncd綁定的網卡
authentication:這裏設置認證
auth type:認證方式,可以是PASS或AH兩種認證方式
auth pass:認證密碼
nopreempt:設置不搶佔,這裏只能設置在state爲backup的節點上,而且這個節點的優先級必須別另外的高
preempt delay:搶佔延遲
debug:debug級別
notify master:和sync group這裏設置的含義一樣,可以單獨設置,例如不同的實例通知不同的管理人員,http實例發給網站管理員,mysql的就發郵件給DBA
Web 1 、2 配置
#!/bin/bash
#descroption: start realserver
VIP=192.168.2.244
/etc/rc.d/init.d/functions
case "$1" in
start)
echo "start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255broadcast $VIP
/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 "1" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
;;
stop)
/sbin/ifconfig lo:0 down
/sbin/route del $VIP >/dev/null 2>&1
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 "close LVS Directorserver"
;;
*)
echo "Usage:$0{start|stop}"
exit 1
esac
exit 0
chmod +x /usr/local/sbin/lvs.sh
chmod 777 /etc/rc.d/init.d/functions
測試。。。。。。。。。。。。。。。。。。。。。。。。。。。
訪問VIP:80 是在64上面 ,然後停掉64 上面的web 服務。測試
基本功能已經實現,由小弟初步學習,如有不足之處。望各位指出,共同學習。