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