一、 LVS簡介
LVS是Linux Virtual Server的簡稱,也就是Linux虛擬服務(wù)器, 是一個由章文嵩博士發(fā)起的自由軟件項目,它的官方站點是www.?,F(xiàn)在LVS已經(jīng)是 Linux標準內(nèi)核的一部分,在Linux2.4內(nèi)核以前,使用LVS時必須要重新編譯內(nèi)核以支持LVS功能模塊,但是從Linux2.4內(nèi)核以后,已經(jīng)完全內(nèi)置了LVS的各個功能模塊,無需給內(nèi)核打任何補丁,可以直接使用LVS提供的各種功能。使用LVS技術(shù)要達到的目標是:通過LVS提供的負載均衡技術(shù)和Linux操作系統(tǒng)實現(xiàn)一個高性能、高可用的服務(wù)器群集,它具有良好可靠性、可擴展性和可操作性。從而以低廉的成本實現(xiàn)最優(yōu)的服務(wù)性能。 關(guān)于LVS的安裝與介紹,在前面的文章中已經(jīng)有過深入介紹,這里不再講述。 本文講解的環(huán)境如下: 操作系統(tǒng):統(tǒng)一采用Centos5.3版本,地址規(guī)劃如下:
圖1中的VIP指的是虛擬IP地址,還可以叫做LVS集群的服務(wù)IP,在DR、TUN模式中,數(shù)據(jù)包是直接返回給用戶的,所以,在Director Server上以及集群的每個節(jié)點上都需要設(shè)置這個地址。此IP在Real Server上一般綁定在回環(huán)地址上,例如lo:0,同樣,在Director Server上,虛擬IP綁定在真實的網(wǎng)絡(luò)接口設(shè)備上,例如eth0:0。
各個Real Server可以是在同一個網(wǎng)段內(nèi),也可以是相互獨立的網(wǎng)段,還可以是分布在internet上的多個服務(wù)器. LVS+Keepalived高可用負載均衡集群拓撲結(jié)構(gòu)如圖2所示:
二、安裝Keepalived
keepalived起初是為LVS設(shè)計的,專門用來監(jiān)控集群系統(tǒng)中各個服務(wù)節(jié)點的狀態(tài),后來又加入了VRRP的功能,VRRP是Virtual Router Redundancy Protocol(虛擬路由器冗余協(xié)議)的縮寫,VRRP出現(xiàn)的目的就是為了解決靜態(tài)路由出現(xiàn)的單點故障問題,它能夠保證網(wǎng)絡(luò)的不間斷、穩(wěn)定的運行。所以,keepalived一方面具有服務(wù)器健康檢測功能,另一方面也具有HA cluster功能。 Keepalived的官方站點是http://www.,可以在這里下載到各種版本,我們這里下載的是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/ 在編譯選項中,“--sysconf”指定了Keepalived配置文件的安裝路徑,即路徑為/etc/Keepalived/Keepalived.conf,“--with-kernel-dir”這是個很重要的參數(shù),但這個參數(shù)并不是要把Keepalived編譯進內(nèi)核,而是指定使用內(nèi)核源碼里面的頭文件,就是include目錄。如果要使用LVS時,才需要用到此參數(shù),否則是不需要的. 三、配置Keepalived Keepalived的配置非常簡單,僅僅需要一個配置文件即可完成HA cluster和lvs服務(wù)節(jié)點監(jiān)控功能,Keepalived的安裝已經(jīng)在上面章節(jié)進行了介紹,在通過Keepalived搭建高可用的LVS集群實例中,主、備Director Server都需要安裝Keepalived軟件,安裝成功后,默認的配置文件路徑為/etc/Keepalived/Keepalived.conf。一個完整的keepalived配置文件,有三個部分組成,分別是全局定義部分、vrrp實例定義部分以及虛擬服務(wù)器定義部分,下面詳細介紹下這個配置文件中每個選項的詳細含義和用法: #全局定義部分 global_defs { notification_email { dba.gao@gmail.com #設(shè)置報警郵件地址,可以設(shè)置多個,每行一個。注意,如果要開啟郵件報警,需要開啟本機的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ù)器超時時間。 router_id LVS_MASTER #運行Keepalived服務(wù)器的一個標識。發(fā)郵件時顯示在郵件標題中的信息 }
#vrrp實例定義部分
vrrp_instance VI_1 { state MASTER #指定Keepalived的角色,MASTER表示此主機是主用服務(wù)器,BACKUP表示是備用服務(wù)器。 interface eth0 #指定HA監(jiān)測網(wǎng)絡(luò)的接口。 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 #設(shè)定MASTER與BACKUP負載均衡器之間同步檢查的時間間隔,單位是秒。 authentication { #設(shè)定驗證類型和密碼。 auth_type PASS #設(shè)置驗證類型,主要有PASS和AH兩種。 auth_pass 1111 #設(shè)置驗證密碼,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。 } virtual_ipaddress { #設(shè)置虛擬IP地址,可以設(shè)置多個虛擬IP地址,每行一個。 192.168.12.135 } } #虛擬服務(wù)器定義部分 virtual_server 192.168.12.135 80 { #設(shè)置虛擬服務(wù)器,需要指定虛擬ip地址和服務(wù)端口,ip與端口之間用空格隔開。 delay_loop 6 #設(shè)置健康檢查時間,單位是秒。 lb_algo rr #設(shè)置負載調(diào)度算法,這里設(shè)置為rr,即輪詢算法。 lb_kind DR #設(shè)置LVS實現(xiàn)負載均衡的機制,可以有NAT、TUN和DR三個模式可選。 persistence_timeout 50 #會話保持時間,單位是秒,這個選項對于動態(tài)網(wǎng)頁是非常有用的,為集群系統(tǒng)中session共享提供了一個很好的解決方案。有了這個會話保持功能,用戶的請求會被一直分發(fā)到某個服務(wù)節(jié)點,直到超過這個會話保持時間。需要注意的是,這個會話保持時間,是最大無響應(yīng)超時時間,也就是說用戶在操作動態(tài)頁面時,如果在50秒內(nèi)沒有執(zhí)行任何操作,那么接下來的操作會被分發(fā)到另外節(jié)點,但是如果一直在操作動態(tài)頁面,則不受50秒的時間限制。 protocol TCP #指定轉(zhuǎn)發(fā)協(xié)議類型,有tcp和udp兩種。 real_server 192.168.12.246 80 { #配置服務(wù)節(jié)點1,需要指定real server的真實IP地址和端口,ip與端口之間用空格隔開。 weight 3 #配置服務(wù)節(jié)點的權(quán)值,權(quán)值大小用數(shù)字表示,數(shù)字越大,權(quán)值越高,設(shè)置權(quán)值的大小可以為不同性能的服務(wù)器分配不同的負載,可以對性能高的服務(wù)器設(shè)置較高的權(quán)值,而對性能較低的服務(wù)器設(shè)置相對較低的權(quán)值,這樣就合理的利用和分配了系統(tǒng)資源。 TCP_CHECK { #realserve的狀態(tài)檢測設(shè)置部分,單位是秒 connect_timeout 10 #10秒無響應(yīng)超時 nb_get_retry 3 #重試次數(shù) delay_before_retry 3 #重試間隔 } } real_server 192.168.12.237 80 { #配置服務(wù)節(jié)點2 weight 1 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ù)指定你所在的配置文件路徑即可。 Keepalived.conf配置完畢后,將此文件拷貝到備用Director Server對應(yīng)的路徑下,然后做兩個簡單的修改即可: 將“state MASTER”更改為“state BACKUP” 將priority 100更改為一個較小的值,這里改為“priority 80” 最后,還要配置集群的Real server節(jié)點,以達到與Director Server相互廣播通信并忽略arp的目的,腳本的內(nèi)容已經(jīng)在前面文章中進行過介紹,這里不做解釋。 |
|