Lvs+keepalived 实现负载均衡、故障剔除(DR模式)
系統(tǒng)都是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
?聲明;這里套用一張拓?fù)鋱D,基本可以滿足我的實驗環(huán)境。 ?不多說,進行實驗。
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后會輸入這結(jié)果為正確
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全局配置標(biāo)識,表面這個區(qū)域{}是全局配置*/
notification_email_from biyn321@126.com/*表示發(fā)送通知郵件時郵件源地址是誰*/
smtp_server 127.0.0.1/* 表示發(fā)送email時使用的smtp服務(wù)器地址,這里可以用本地的sendmail來實現(xiàn)*/
#smtp_connect_timeout 30/*連接smtp連接超時時間*/
router_id LVS_DEVEL/*機器標(biāo)識*/ 我這個實驗沒有區(qū)分*/
}
/*表示keepalived在發(fā)生諸如切換操作時需要發(fā)送email通知,以及email發(fā)送給哪些郵件地址,郵件地址可以多個,每行一個*/
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)的初始狀態(tài),就是說在配置好后,這臺服務(wù)器的初始狀態(tài)就是這里指定的,但這里指定的不算,還是得要通過競選通過優(yōu)先級來確定,里如果這里設(shè)置為master,但如若他的優(yōu)先級不及另外一臺,那么這臺在發(fā)送通告時,會發(fā)送自己的優(yōu)先級,另外一臺發(fā)現(xiàn)優(yōu)先級不如自己的高,那么他會就回?fù)屨紴?/span>master
interface:實例綁定的網(wǎng)卡,因為在配置虛擬IP的時候必須是在已有的網(wǎng)卡上添加的
dont track primary:忽略VRRP的interface錯誤
track interface:跟蹤接口,設(shè)置額外的監(jiān)控,里面任意一塊網(wǎng)卡出現(xiàn)問題,都會進入故障(FAULT)狀態(tài),例如,用nginx做均衡器的時候,內(nèi)網(wǎng)必須正常工作,如果內(nèi)網(wǎng)出問題了,這個均衡器也就無法運作了,所以必須對內(nèi)外網(wǎng)同時做健康檢查
mcast src ip:發(fā)送多播數(shù)據(jù)包時的源IP地址,這里注意了,這里實際上就是在那個地址上發(fā)送VRRP通告,這個非常重要,一定要選擇穩(wěn)定的網(wǎng)卡端口來發(fā)送,這里相當(dāng)于heartbeat的心跳端口,如果沒有設(shè)置那么就用默認(rèn)的綁定的網(wǎng)卡的IP,也就是interface指定的IP地址
garp master delay:在切換到master狀態(tài)后,延遲進行免費的ARP(gratuitous ARP)請求
virtual router id:這里設(shè)置VRID,這里非常重要,相同的VRID為一個組,他將決定多播的MAC地址
priority 100:設(shè)置本節(jié)點的優(yōu)先級,優(yōu)先級高的為master
advert int:檢查間隔,默認(rèn)為1秒
virtual ipaddress:這里設(shè)置的就是VIP,也就是虛擬IP地址,他隨著state的變化而增加刪除,當(dāng)state為master的時候就添加,當(dāng)state為backup的時候刪除,這里主要是有優(yōu)先級來決定的,和state設(shè)置的值沒有多大關(guān)系,這里可以設(shè)置多個IP地址
virtual routes:原理和virtual ipaddress一樣,只不過這里是增加和刪除路由
lvs sync daemon interface:lvs syncd綁定的網(wǎng)卡
authentication:這里設(shè)置認(rèn)證
auth type:認(rèn)證方式,可以是PASS或AH兩種認(rèn)證方式
auth pass:認(rèn)證密碼
nopreempt:設(shè)置不搶占,這里只能設(shè)置在state為backup的節(jié)點上,而且這個節(jié)點的優(yōu)先級必須別另外的高
preempt delay:搶占延遲
debug:debug級別
notify master:和sync group這里設(shè)置的含義一樣,可以單獨設(shè)置,例如不同的實例通知不同的管理人員,http實例發(fā)給網(wǎng)站管理員,mysql的就發(fā)郵件給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 服務(wù)。測試
基本功能已經(jīng)實現(xiàn),由小弟初步學(xué)習(xí),如有不足之處。望各位指出,共同學(xué)習(xí)。
轉(zhuǎn)載于:https://blog.51cto.com/melodyfeng/1200590
總結(jié)
以上是生活随笔為你收集整理的Lvs+keepalived 实现负载均衡、故障剔除(DR模式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。