Linux負(fù)載均衡軟件LVS之三 (1) |
發(fā)布時(shí)間: 2012/8/2 18:12:10 |
LVS集群有DR、TUN、NAT三種配置模式,可以對(duì)www服務(wù)、FTP服務(wù)、MAIL服務(wù)等做負(fù)載均衡,下面通過(guò)搭建www服務(wù)的負(fù)載均衡實(shí)例,講述基于DR模式的LVS集群配置。 一、 Director Server的配置 在Director Server上配置LVS負(fù)載均衡集群,有兩種方法: ? 通過(guò)ipvsadm命令行進(jìn)行配置 ? 通過(guò)Redhat提供的工具piranha來(lái)配置LVS 1、通過(guò)ipvsadm命令行方式配置LVS 安裝IPVS后,就可以配置LVS集群了,首先在Director Server上綁定一個(gè)虛擬IP(也叫VIP),此IP用于對(duì)外提供服務(wù),執(zhí)行如下命令: [root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 \ >netmask 255.255.255.255 up 此處在eth0設(shè)備上綁定了一個(gè)虛擬設(shè)備eth0:0,同時(shí)設(shè)置了一個(gè)虛擬IP是192.168.60.200,也就是上面我們規(guī)劃的IP地址,然后指定廣播地址也為192.168.60.200,需要特別注意的是,這里的子網(wǎng)掩碼為255.255.255.255。 然后給設(shè)備eth0:0指定一條路由,執(zhí)行如下指令: [root@localhost ~]#route add -host 192.168.60.200 dev eth0:0 接著啟用系統(tǒng)的包轉(zhuǎn)發(fā)功能,從而使系統(tǒng)充當(dāng)路由器,執(zhí)行如下指令: [root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward 指令中,參數(shù)值為1時(shí)啟用ip轉(zhuǎn)發(fā),為0時(shí)禁止ip轉(zhuǎn)發(fā)。其實(shí)在DR模式中,開(kāi)啟系統(tǒng)的包轉(zhuǎn)發(fā)功能不是必須的,而在NAT模式下此操作是必須的。 然后開(kāi)始配置ipvs,執(zhí)行如下操作: [root@localhost ~]#ipvsadm -C [root@localhost ~]#ipvsadm -A -t 192.168.60.200:80 -s rr -p 600 [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.132:80 -g [root@localhost ~]#ipvsadm -a -t 192.168.60.200:80 -r 192.168.60.144:80 -g 上面操作中,第一行是清除內(nèi)核虛擬服務(wù)器列表中的所有記錄,第二行是添加一條新的虛擬IP記錄。這個(gè)新的IP是192.168.60.200,同時(shí)指定持續(xù)服務(wù)時(shí)間為600秒。第三、四行是在新加虛擬IP記錄中添加兩條新的Real Server記錄,并且指定LVS 的工作模式為直接路由模式。 最后,啟動(dòng)LVS服務(wù),執(zhí)行如下操作: [root@localhost ~]#ipvsadm 這樣,LVS在Director Server上的配置就完成了。 為了管理和配置的方便,可以將上面的操作寫(xiě)出一個(gè)腳本文件,腳本內(nèi)容如下: #!/bin/bash VIP=192.168.60.200 RIP1=192.168.60.132 RIP2=192.168.60.144 GW=192.168.60.1 # set the Virtual IP Address /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev eth0:0 echo "1" >/proc/sys/net/ipv4/ip_forward #Clear IPVS table /sbin/ipvsadm -C #set LVS /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g #Run LVS /sbin/ipvsadm #end 也可以寫(xiě)成可啟動(dòng)與停止的服務(wù)腳本,腳本內(nèi)容如下: #!/bin/sh # description: Start LVS of Director server VIP=192.168.60.200 RIP1=192.168.60.132 RIP2=192.168.60.144 ./etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of Director Server" # set the Virtual IP Address and sysctl parameter /sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up echo "1" >/proc/sys/net/ipv4/ip_forward #Clear IPVS table /sbin/ipvsadm -C #set LVS /sbin/ipvsadm -A -t $VIP:80 -s rr -p 600 /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g #Run LVS /sbin/ipvsadm ;; stop) echo "close LVS Directorserver" echo "0" >/proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:0 down ;; *) echo "Usage: $0 {start|stop}" exit 1 esac 將此腳本命名為lvsDR文件,然后把文件放到/etc/init.d下,執(zhí)行: [root@localhost ~]#chomd 755 /etc/init.d/lvsDR 最后可以通過(guò)下面命令啟動(dòng)或停止LVS服務(wù): service lvsDR {start|stop} 到此為止,命令行方式配置Director Server完畢。 2、通過(guò)Redhat提供的工具piranha來(lái)配置LVS Piranha是REDHAT提供的一個(gè)基于Web的LVS配置軟件,可以省去手工配置LVS的繁瑣工作,同時(shí),也可單獨(dú)提供cluster功能,例如,可以通過(guò)Piranha激活Director Server的后備主機(jī),也就是配置Director Server的雙機(jī)熱備功能。 Piranha工具的安裝非常簡(jiǎn)單,下載Piranha的rpm包,進(jìn)行安裝即可: [root@localhost ~]#rpm –ivh piranha-0.8.2-1.i386.rpm Piranha安裝完畢后,會(huì)產(chǎn)生/etc/sysconfig/ha/lvs.cf文件,默認(rèn)此文件是空的,可以通過(guò)Piranha提供的web界面配置此文件,也可以直接手動(dòng)編輯此文件,編輯好的lvs.cf文件內(nèi)容類似如下,注意,“#”號(hào)后面的內(nèi)容為注釋。 [root@localhost ~]# more /etc/sysconfig/ha/lvs.cf serial_no = 18 #序號(hào)。 primary = 192.168.60.56 #指定主Director Server的真實(shí)IP地址,是相對(duì)與有備用的Director Server而言的,也就是給Director Server做HA Cluster。 service = lvs #指定雙機(jī)的服務(wù)名。 backup_active = 0 #是否激活備用Director Server。“0”表示不激活,“1”表示激活。 backup = 0.0.0.0 #這里指定備用Director Server的真實(shí)IP地址,如果沒(méi)有備用Director Server,可以用“0.0.0.0”代替。 heartbeat = 0 #是否開(kāi)啟心跳,1表示開(kāi)啟,0表示不開(kāi)啟。 heartbeat_port = 539 #指定心跳的UDP通信端口。 keepalive = 5 #心跳間隔時(shí)間,單位是秒。 deadtime = 10 #如果主Director Server在deadtime(秒)后沒(méi)有響應(yīng),那么備份Director Server就會(huì)接管主Director Server的服務(wù)。 network = direct #指定LVS的工作模式,direct表示DR模式,nat表示NAT模式,tunnel表示TUNL模式。 debug_level = NONE #定義debug調(diào)試信息級(jí)別。 virtual www.gaojf.com{ #指定虛擬服務(wù)的名稱。 active = 1 #是否激活此服務(wù)。 address = 192.168.60.200 eth0:0 #虛擬服務(wù)綁定的虛擬IP以及網(wǎng)絡(luò)設(shè)備名。 port = 80 #虛擬服務(wù)的端口。 send = "GET / HTTP/1.0 " #給real server發(fā)送的驗(yàn)證字符串。 expect = "HTTP" #服務(wù)器正常運(yùn)行時(shí)應(yīng)該返回的文本應(yīng)答信息,用來(lái)判斷real server是否工作正常。 use_regex = 0 # expect選項(xiàng)中是否使用正則表達(dá)式,0表示不使用,1表示使用。 load_monitor = none #LVS中的Director Server能夠使用 rup 或 ruptime 來(lái)監(jiān)視各個(gè)real server的負(fù)載狀態(tài)。該選項(xiàng)有3個(gè)可選值,rup、ruptime和none,如果選擇rup,每個(gè)real server就必須運(yùn)行rstatd服務(wù)。如果選擇了ruptime,每個(gè)real server就必須運(yùn)行 rwhod 服務(wù)。 scheduler = rr #指定LVS的調(diào)度算法。 protocol = tcp #虛擬服務(wù)使用的協(xié)議類型。 timeout = 6 #real server失效后從lvs路由列表中移除失效real server所必須經(jīng)過(guò)的時(shí)間,以秒為單位。 reentry = 15 #某個(gè)real server被移除后,重新加入lvs路由列表中所必須經(jīng)過(guò)的時(shí)間,以秒為單位。 quiesce_server = 0 #如果此選項(xiàng)為1.那么當(dāng)某個(gè)新的節(jié)點(diǎn)加入集群時(shí),最少連接數(shù)會(huì)被重設(shè) 為零,因此LVS會(huì)發(fā)送大量請(qǐng)求到此服務(wù)節(jié)點(diǎn),造成新的節(jié)點(diǎn)服務(wù)阻塞, 建議設(shè)置為0。 server RS1 { #指定real server服務(wù)名。 address = 192.168.60.132 #指定real server的IP地址。 active = 1 #是否激活此real server服務(wù)。 weight = 1 #指定此real server的權(quán)值,是個(gè)整數(shù)值,權(quán)值是相對(duì)于所有real server節(jié)點(diǎn)而言的,權(quán)值高的real server處理負(fù)載的性能相對(duì)較強(qiáng)。 } server RS2 { address = 192.168.60.144 active = 1 weight = 1 } } 編輯完成,然后啟動(dòng)pulse服務(wù),即啟動(dòng)lvs服務(wù) [root@localhost ~]#service pulse start 同理,此種方式下也要啟用系統(tǒng)的包轉(zhuǎn)發(fā)功能: [root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward 到此為止,Piranha工具方式配置Director Server完畢。 二、Real server 的配置 在lvs的DR和TUn模式下,用戶的訪問(wèn)請(qǐng)求到達(dá)真實(shí)服務(wù)器后,是直接返回給用戶的,而不再經(jīng)過(guò)前端的Director Server,因此,就需要在每個(gè)Real server節(jié)點(diǎn)上增加虛擬的VIP地址,這樣數(shù)據(jù)才能直接返回給用戶,增加VIP地址的操作可以通過(guò)創(chuàng)建腳本的方式來(lái)實(shí)現(xiàn),創(chuàng)建文件/etc/init.d/lvsrs,腳本內(nèi)容如下: #!/bin/bash VIP=192.168.60.200 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /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 “2″ >/proc/sys/net/ipv4/conf/all/arp_announce sysctl -p #end 此操作是在回環(huán)設(shè)備上綁定了一個(gè)虛擬IP地址,并設(shè)定其子網(wǎng)掩碼為255.255.255.255,與Director Server上的虛擬IP保持互通,然后禁止了本機(jī)的ARP請(qǐng)求。 上面腳本也可以寫(xiě)成可啟動(dòng)與停止的服務(wù)腳本,內(nèi)容如下: 億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888 聯(lián)系:億恩小凡 QQ:89317007 電話:0371-63322206 本文出自:億恩科技【www.riomediacenter.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |