LVS+Keepalived構(gòu)建高可用負(fù)載均衡
作者:netsword
LVS提供負(fù)載均衡,keepalived提供健康檢查、故障轉(zhuǎn)移,LVS+keepalived能很好提高系統(tǒng)的可用性。
LVS+Keepalived構(gòu)建高可用負(fù)載均衡
一、地址規(guī)劃
功能 hostname IP地址 虛擬設(shè)備名 虛擬IP
Director1 node0 192.168.32.30 eth0:0 192.168.32.21
Director2 node1 192.168.32.31 eth0:0 192.168.32.21
Real1 node2 192.168.32.32 lo:0 192.168.32.21
Real2 node3 192.168.32.33 lo:0 192.168.32.21
二、安裝keepalived(lvs的安裝配置略)
[root@node0 ~]# uname -r
2.6.18-194.el5PAE
[root@node0 ~]#tar zxvf keepalived-1.1.19.tar.gz
[root@node0 ~]#cd keepalived-1.1.19
[root@node0 keepalived-1.1.19]#./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-194.el5PAE-i686
[root@node0 keepalived-1.1.19]#make
[root@node0 keepalived-1.1.19]#make install
[root@node0 keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived /sbin/keepalived
#在編譯選項(xiàng)中,“--sysconf”指定了Keepalived配置文件的安裝路徑,即路徑為/etc/Keepalived /Keepalived.conf,“--with-kernel-dir”這是個(gè)很重要的參數(shù),但這個(gè)參數(shù)并不是要把Keepalived編譯進(jìn)內(nèi)核, 而是指定使用內(nèi)核源碼里面的頭文件,就是include目錄。如果要使用LVS時(shí),才需要用到此參數(shù),否則是不需要的。
三、配置Keepalived
主、備Director Server都需要安裝Keepalived軟件,安裝成功后,默認(rèn)的配置文件路徑為/etc/Keepalived/Keepalived.conf。 一個(gè)完整的keepalived配置文件,有三個(gè)部分組成,分別是全局定義部分、vrrp實(shí)例定義部分以及虛擬服務(wù)器定義部分,下面詳細(xì)介紹下這個(gè)配置文 件中每個(gè)選項(xiàng)的詳細(xì)含義和用法:
1、主Director Server配置
[root@node0 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
#全局定義部分
global_defs {
notification_email {
root@localhost.localdomain
#設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。注意,如果要開啟郵件報(bào)警,需要開啟本機(jī)的sendmail服務(wù)。
}
notification_email_from root@localhost.localdomain
#設(shè)置郵件的發(fā)送地址
smtp_server 127.0.0.1
#設(shè)置smtp server地址,該地址必須是可到達(dá)的,否則會(huì)出錯(cuò),如果不要求email報(bào)警,請(qǐng)用127.0.0.1
smtp_connect_timeout 30
#設(shè)置連接smtp服務(wù)器超時(shí)時(shí)間
router_id LVS_Keepalive
#運(yùn)行Keepalived服務(wù)器的一個(gè)標(biāo)識(shí)。發(fā)郵件時(shí)顯示在郵件標(biāo)題中的信息
}
#vrrp實(shí)例定義部分
vrrp_instance VI_1 {
#實(shí)例名,自定義
state MASTER
#指定Keepalived的角色,MASTER表示此主機(jī)是主用服務(wù)器,BACKUP表示是備用服務(wù)器
interface eth0
#指定HA監(jiān)測(cè)網(wǎng)絡(luò)的接口
virtual_router_id 51
#虛擬路由標(biāo)識(shí),這個(gè)標(biāo)識(shí)是一個(gè)數(shù)字,并且同一個(gè)vrrp實(shí)例使用唯一的標(biāo)識(shí),即同一個(gè)vrrp_instance下,MASTER和BACKUP必須是一致的
priority 100
#定義優(yōu)先級(jí),數(shù)字越大,優(yōu)先級(jí)越高,在一個(gè)vrrp_instance下,MASTER的優(yōu)先級(jí)必須大于BACKUP的優(yōu)先級(jí)。
advert_int 1
#設(shè)定MASTER與BACKUP負(fù)載均衡器之間同步檢查的時(shí)間間隔,單位是秒
authentication {
#設(shè)定驗(yàn)證類型和密碼
auth_type PASS
#設(shè)置驗(yàn)證類型,主要有PASS和AH兩種
auth_pass bai
#設(shè)置驗(yàn)證密碼,在一個(gè)vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信
}
virtual_ipaddress {
#設(shè)置虛擬IP地址,可以設(shè)置多個(gè)虛擬IP地址,每行一個(gè)
192.168.32.21
}
}
#虛擬服務(wù)器定義部分
virtual_server 192.168.32.21 80 {
#設(shè)置虛擬服務(wù)器,需要指定虛擬ip地址和服務(wù)端口,ip與端口之間用空格隔開。
delay_loop 6
#設(shè)置健康檢查時(shí)間,單位是秒
lb_algo rr
#設(shè)置負(fù)載調(diào)度算法,這里設(shè)置為rr,即輪詢算法
lb_kind DR
#設(shè)置LVS實(shí)現(xiàn)負(fù)載均衡的機(jī)制,可以有NAT、TUN和DR三個(gè)模式可選
persistence_timeout 10
#會(huì)話保持時(shí)間,單位是秒,這個(gè)選項(xiàng)對(duì)于動(dòng)態(tài)網(wǎng)頁(yè)是非常有用的,為集群系統(tǒng)中session共享提供了一個(gè)很好的解決方案。有了這個(gè)會(huì)話保持功 能,用戶的請(qǐng)求會(huì)被一直分發(fā)到某個(gè)服務(wù)節(jié)點(diǎn),直到超過這個(gè)會(huì)話保持時(shí)間。需要注意的是,這個(gè)會(huì)話保持時(shí)間,是最大無響應(yīng)超時(shí)時(shí)間,也就是說用戶在操作動(dòng)態(tài) 頁(yè)面時(shí),如果在50秒內(nèi)沒有執(zhí)行任何操作,那么接下來的操作會(huì)被分發(fā)到另外節(jié)點(diǎn),但是如果一直在操作動(dòng)態(tài)頁(yè)面,則不受50秒的時(shí)間限制。
protocol TCP
#指定轉(zhuǎn)發(fā)協(xié)議類型,有tcp和udp兩種
real_server 192.168.32.32 80 {
#配置服務(wù)節(jié)點(diǎn)1,需要指定real server的真實(shí)IP地址和端口,ip與端口之間用空格隔開。
weight 3
#配置服務(wù)節(jié)點(diǎn)的權(quán)值,權(quán)值大小用數(shù)字表示,數(shù)字越大,權(quán)值越高,設(shè)置權(quán)值的大小可以為不同性能的服務(wù)器分配不同的負(fù)載,可以對(duì)性能高的服務(wù)器設(shè)置較高的權(quán)值,而對(duì)性能較低的服務(wù)器設(shè)置相對(duì)較低的權(quán)值,這樣就合理的利用和分配了系統(tǒng)資源。
TCP_CHECK {
#realserve的狀態(tài)檢測(cè)設(shè)置部分,單位是秒
connect_timeout 3
#10秒無響應(yīng)超時(shí)
nb_get_retry 3
#重試次數(shù)
delay_before_retry 3
#重試間隔
}
}
real_server 192.168.32.33 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#在配置Keepalived.conf時(shí),需要特別注意配置文件的語(yǔ)法格式,因?yàn)镵eepalived在啟動(dòng)時(shí)并不檢測(cè)配置文件的正確性,即使沒有配置文件,Keepalived也照樣能啟動(dòng)起來,因而配置文件一定要正確。
#在默認(rèn)情況下,Keepalived在啟動(dòng)時(shí)會(huì)查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路徑下,可以通過“Keepalived -f”參數(shù)指定你所在的配置文件路徑即可。
2、備Director Server配置
[root@node0 ~]# scp /etc/keepalived/keepalived.conf node1:/etc/keepalived/keepalived.conf
[root@node1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost.localdomain
}
notification_email_from root@localhost.localdomain
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_Keepalive_Master
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass bai
}
virtual_ipaddress {
192.168.32.21
}
}
virtual_server 192.168.32.21 80 {
delay_loop 6
lb_algo rr
lb_kind DR
# persistence_timeout 10
protocol TCP
real_server 192.168.32.32 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.32.33 80 {
weight 3
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#相比主Director Server的配置:
將“state MASTER”更改為“state BACKUP”
將priority 100更改為一個(gè)較小的值,這里改為“priority 80”
四、Real Server配置略
五、啟動(dòng)測(cè)試
1、啟動(dòng)
[root@node0 ~]# service keepalived start
啟動(dòng) keepalived:
[root@node1 ~]# service keepalived start
啟動(dòng) keepalived:
2、測(cè)試(三種情況)
斷開node0網(wǎng)口eth0網(wǎng)線,觀察node1的日志和ipvsadm狀態(tài),接上node0網(wǎng)線,觀察node1的日志和ipvsadm狀態(tài);
重啟node0系統(tǒng),觀察node1的日子和ipvsadm狀態(tài);
關(guān)閉node0的keepalived服務(wù),開啟node0服務(wù),觀察node1的日子和ipvsadm狀態(tài)。
責(zé)任編輯:龐桂玉
來源:
51cto.com