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 {

[email protected]

}*/全局配置解析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

}

}

}

statestate 指定instance(Initial)的初始狀態,就是說在配置好後,這臺服務器的初始狀態就是這裏指定的,但這裏指定的不算,還是得要通過競選通過優先級來確定,裏如果這裏設置爲master,但如若他的優先級不及另外一臺,那麼這臺在發送通告時,會發送自己的優先級,另外一臺發現優先級不如自己的高,那麼他會就回搶佔爲master
interface實例綁定的網卡,因爲在配置虛擬IP的時候必須是在已有的網卡上添加的
dont track primary忽略VRRPinterface錯誤
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的變化而增加刪除,當statemaster的時候就添加,當statebackup的時候刪除,這裏主要是有優先級來決定的,和state設置的值沒有多大關係,這裏可以設置多個IP地址
virtual routes原理和virtual ipaddress一樣,只不過這裏是增加和刪除路由
lvs sync daemon interfacelvs syncd綁定的網卡
authentication這裏設置認證
auth type認證方式,可以是PASSAH兩種認證方式
auth pass認證密碼
nopreempt設置不搶佔,這裏只能設置在statebackup的節點上,而且這個節點的優先級必須別另外的高
preempt delay搶佔延遲
debugdebug級別
notify mastersync 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 服務。測試

基本功能已經實現,由小弟初步學習,如有不足之處。望各位指出,共同學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章