LVS+Keepalived構(gòu)建高可用負(fù)載均衡配置方法(配置篇)
一、 LVS簡(jiǎn)介
LVS是Linux Virtual Server的簡(jiǎn)稱,也就是Linux虛擬服務(wù)器, 是一個(gè)由章文嵩博士發(fā)起的自由軟件項(xiàng)目,它的官方站點(diǎn)是www.linuxvirtualserver.org。現(xiàn)在LVS已經(jīng)是 Linux標(biāo)準(zhǔn)內(nèi)核的一部分,在Linux2.4內(nèi)核以前,使用LVS時(shí)必須要重新編譯內(nèi)核以支持LVS功能模塊,但是從Linux2.4內(nèi)核以后,已經(jīng)完全內(nèi)置了LVS的各個(gè)功能模塊,無需給內(nèi)核打任何補(bǔ)丁,可以直接使用LVS提供的各種功能。使用LVS技術(shù)要達(dá)到的目標(biāo)是:通過LVS提供的負(fù)載均衡技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能、高可用的服務(wù)器群集,它具有良好可靠性、可擴(kuò)展性和可操作性。從而以低廉的成本實(shí)現(xiàn)最優(yōu)的服務(wù)性能。
關(guān)于LVS的安裝與介紹,在前面的文章中已經(jīng)有過深入介紹,這里不再講述。
本文講解的環(huán)境如下:
操作系統(tǒng):統(tǒng)一采用Centos5.3版本,地址規(guī)劃如下:
圖1
圖1中的VIP指的是虛擬IP地址,還可以叫做LVS集群的服務(wù)IP,在DR、TUN模式中,數(shù)據(jù)包是直接返回給用戶的,所以,在Director Server上以及集群的每個(gè)節(jié)點(diǎn)上都需要設(shè)置這個(gè)地址。此IP在Real Server上一般綁定在回環(huán)地址上,例如lo:0,同樣,在Director Server上,虛擬IP綁定在真實(shí)的網(wǎng)絡(luò)接口設(shè)備上,例如eth0:0。
各個(gè)Real Server可以是在同一個(gè)網(wǎng)段內(nèi),也可以是相互獨(dú)立的網(wǎng)段,還可以是分布在internet上的多個(gè)服務(wù)器.
LVS+Keepalived高可用負(fù)載均衡集群拓?fù)浣Y(jié)構(gòu)如圖2所示:
圖2
二、安裝Keepalived
keepalived起初是為L(zhǎng)VS設(shè)計(jì)的,專門用來監(jiān)控集群系統(tǒng)中各個(gè)服務(wù)節(jié)點(diǎn)的狀態(tài),后來又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗余協(xié)議)的縮寫,VRRP出現(xiàn)的目的就是為了解決靜態(tài)路由出現(xiàn)的單點(diǎn)故障問題,它能夠保證網(wǎng)絡(luò)的不間斷、穩(wěn)定的運(yùn)行。所以,keepalived一方面具有服務(wù)器健康檢測(cè)功能,另一方面也具有HA cluster功能。
Keepalived的官方站點(diǎn)是http://www.keepalived.org,可以在這里下載到各種版本,我們這里下載的是keepalived-1.1.19.tar.gz,安裝步驟如下:
[root@DR1 ~]#tar zxvf keepalived-1.1.19.tar.gz
[root@DR1 ~]#cd keepalived-1.1.19
[root@DR1 keepalived-1.1.19]#./configure --sysconf=/etc \
> --with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686
[root@DR1 keepalived-1.1.19]#make
[root@DR1 keepalived-1.1.19]#make install
[root@DR1 keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived /sbin/
在編譯選項(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
Keepalived的配置非常簡(jiǎn)單,僅僅需要一個(gè)配置文件即可完成HA cluster和lvs服務(wù)節(jié)點(diǎn)監(jiān)控功能,Keepalived的安裝已經(jīng)在上面章節(jié)進(jìn)行了介紹,在通過Keepalived搭建高可用的LVS集群實(shí)例中,主、備Director Server都需要安裝Keepalived軟件,安裝成功后,默認(rèn)的配置文件路徑為/etc/Keepalived/Keepalived.conf。一個(gè)完整的keepalived配置文件,有三個(gè)部分組成,分別是全局定義部分、vrrp實(shí)例定義部分以及虛擬服務(wù)器定義部分,下面詳細(xì)介紹下這個(gè)配置文件中每個(gè)選項(xiàng)的詳細(xì)含義和用法:
#全局定義部分
global_defs {
notification_email {
dba.gao@gmail.com #設(shè)置報(bào)警郵件地址,可以設(shè)置多個(gè),每行一個(gè)。注意,如果要開啟郵件報(bào)警,需要開啟本機(jī)的sendmail服務(wù)。
ixdba@163.com
}
notification_email_from Keepalived@localhost #設(shè)置郵件的發(fā)送地址。
smtp_server 192.168.200.1 #設(shè)置smtp server地址。
smtp_connect_timeout 30 #設(shè)置連接smtp服務(wù)器超時(shí)時(shí)間。
router_id LVS_MASTER #運(yùn)行Keepalived服務(wù)器的一個(gè)標(biāo)識(shí)。發(fā)郵件時(shí)顯示在郵件標(biāo)題中的信息
}
#vrrp實(shí)例定義部分
vrrp_instance VI_1 {
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 1111 #設(shè)置驗(yàn)證密碼,在一個(gè)vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。
}
virtual_ipaddress { #設(shè)置虛擬IP地址,可以設(shè)置多個(gè)虛擬IP地址,每行一個(gè)。
192.168.12.135
}
}
#虛擬服務(wù)器定義部分
virtual_server 192.168.12.135 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 50 #會(huì)話保持時(shí)間,單位是秒,這個(gè)選項(xiàng)對(duì)于動(dòng)態(tài)網(wǎng)頁是非常有用的,為集群系統(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)頁面時(shí),如果在50秒內(nèi)沒有執(zhí)行任何操作,那么接下來的操作會(huì)被分發(fā)到另外節(jié)點(diǎn),但是如果一直在操作動(dòng)態(tài)頁面,則不受50秒的時(shí)間限制。
protocol TCP #指定轉(zhuǎn)發(fā)協(xié)議類型,有tcp和udp兩種。
real_server 192.168.12.246 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 10 #10秒無響應(yīng)超時(shí)
nb_get_retry 3 #重試次數(shù)
delay_before_retry 3 #重試間隔
}
}
real_server 192.168.12.237 80 { #配置服務(wù)節(jié)點(diǎn)2
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
在配置Keepalived.conf時(shí),需要特別注意配置文件的語法格式,因?yàn)镵eepalived在啟動(dòng)時(shí)并不檢測(cè)配置文件的正確性,即使沒有配置文件,Keepalived也照樣能啟動(dòng)起來,因而配置文件一定要正確。
在默認(rèn)情況下,Keepalived在啟動(dòng)時(shí)會(huì)查找/etc/Keepalived/Keepalived.conf配置文件,如果你的配置文件放在了其它路徑下,可以通過“Keepalived -f”參數(shù)指定你所在的配置文件路徑即可。
Keepalived.conf配置完畢后,將此文件拷貝到備用Director Server對(duì)應(yīng)的路徑下,然后做兩個(gè)簡(jiǎn)單的修改即可:
將“state MASTER”更改為“state BACKUP”
將priority 100更改為一個(gè)較小的值,這里改為“priority 80”
最后,還要配置集群的Real server節(jié)點(diǎn),以達(dá)到與Director Server相互廣播通信并忽略arp的目的,腳本的內(nèi)容已經(jīng)在前面文章中進(jìn)行過介紹,這里不做解釋。
(待續(xù))
本文出自 “技術(shù)成就夢(mèng)想” 博客,請(qǐng)務(wù)必保留此出處http://ixdba.blog.51cto.com/2895551/586898
相關(guān)文章
linux掛載新磁盤后原數(shù)據(jù)文件不見的解決辦法
linux掛載新磁盤后原數(shù)據(jù)文件不見了,丟失了嗎,沒有,這篇文章就教你找回解決辦法,文章中有詳細(xì)的操作步驟,有不會(huì)找的小伙伴可以參考閱讀本文2023-08-08Centos系統(tǒng)服務(wù)器查看端口是否開放的方法
本文介紹了在Centos系統(tǒng)服務(wù)器上如何查看端口是否開放的方法,通過telnet命令可以輕松實(shí)現(xiàn)。這對(duì)于服務(wù)器管理員來說非常重要,可以幫助他們及時(shí)發(fā)現(xiàn)端口問題并進(jìn)行修復(fù)。2023-03-03Centos7如何備份和還原Redis數(shù)據(jù)的方法
這篇文章主要介紹了Centos7如何備份和還原Redis數(shù)據(jù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-06-06centos 7 修改sshd | 禁止 root登錄及sshd端口腳本定義
這篇文章主要介紹了centos 7 修改sshd | 禁止 root登錄及sshd端口腳本定義,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09分享Linux 系統(tǒng)生成隨機(jī)密碼的10種方法
利用Linux系統(tǒng)生成隨機(jī)密碼的10種方法 Linux操作系統(tǒng)的一大優(yōu)點(diǎn)是對(duì)于同樣一件事情,你可以使用高達(dá)數(shù)百種方法來實(shí)現(xiàn)它。例如,你可以通過數(shù)十種方法來生成隨機(jī)密碼。本文將介紹生成隨機(jī)密碼的十種方法,感興趣的朋友一起學(xué)習(xí)吧2015-12-12使用Python生成Shell命令,批量執(zhí)行程序代碼解析
這篇文章主要介紹了使用Python生成Shell命令,批量執(zhí)行程序代碼解析,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01linux C編程常見的錯(cuò)誤總結(jié)(必看篇)
下面小編就為大家?guī)硪黄猯inux C編程常見的錯(cuò)誤總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12CentOS 7中搭建NFS文件共享存儲(chǔ)服務(wù)的完整步驟
如果僅僅只是希望搭建一個(gè)linux之間進(jìn)行文件共享的服務(wù)器,而不是所有異構(gòu)的系統(tǒng)之間共享的話,nfs是一個(gè)不錯(cuò)的選擇。下面這篇文章主要給大家介紹了關(guān)于在CentOS 7中搭建NFS文件共享存儲(chǔ)服務(wù)的完整步驟,需要的朋友可以參考下2018-11-11