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