Lvs+keepalived 实现负载均衡、故障剔除(DR模式)
系統都是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 {
biyn321@126.com
}*/全局配置解析global_defs全局配置標識,表面這個區域{}是全局配置*/
notification_email_from biyn321@126.com/*表示發送通知郵件時郵件源地址是誰*/
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 服務。測試
基本功能已經實現,由小弟初步學習,如有不足之處。望各位指出,共同學習。
轉載于:https://blog.51cto.com/melodyfeng/1200590
總結
以上是生活随笔為你收集整理的Lvs+keepalived 实现负载均衡、故障剔除(DR模式)的全部內容,希望文章能夠幫你解決所遇到的問題。