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用于對外提供服務,執行如下指令:
[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,也就是上面我們規劃的IP位址,然後指定廣播位址也為192.168.60.200,需要特别注意的是,這裡的子網路遮罩為255.255.255.255。
然後給裝置eth0:0指定一條路由,執行如下指令:
[root@localhost ~]#route add -host 192.168.60.200 dev eth0:0
接着啟用系統的包轉發功能,進而使系統充當路由器,執行如下指令:
[root@localhost ~]#echo "1" >/proc/sys/net/ipv4/ip_forward
指令中,參數值為1時啟用ip轉發,為0時禁止ip轉發。其實在DR模式中,開啟系統的包轉發功能不是必須的,而在NAT模式下此操作是必須的。
然後開始配置ipvs,執行如下操作:
[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,同時指定持續服務時間為600秒。第三、四行是在新加虛拟IP記錄中添加兩條新的Real Server記錄,并且指定LVS 的工作模式為直接路由模式。
最後,啟動LVS服務,執行如下操作:
[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
./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
/sbin/ipvsadm -C
/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下,執行:
[root@localhost ~]#chomd 755 /etc/init.d/lvsDR
最後可以通過下面指令啟動或停止LVS服務:
service lvsDR {start|stop}
到此為止,指令行方式配置Director Server完畢。
二、Real server 的配置
在lvs的DR和TUn模式下,使用者的通路請求到達真實伺服器後,是直接傳回給使用者的,而不再經過前端的Director Server,是以,就需要在每個Real server節點上增加虛拟的VIP位址,這樣資料才能直接傳回給使用者,增加VIP位址的操作可以通過建立腳本的方式來實作,建立檔案/etc/init.d/lvsrs,腳本内容如下:
/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
此操作是在回環裝置上綁定了一個虛拟IP位址,并設定其子網路遮罩為255.255.255.255,與Director Server上的虛拟IP保持互通,然後禁止了本機的ARP請求。
上面腳本也可以寫成可啟動與停止的服務腳本,内容如下:
[root@localhost ~]#more /etc/init.d/lvsrs
#description : Start Real Server
echo " Start LVS of Real Server"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
/sbin/ifconfig lo:0 down
echo "close LVS Director server"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
然後,修改lvsrs有可執行權限:
[root@localhost ~]#chomd 755 /etc/init.d/lvsrs
最後,可以通過下面指令啟動或關閉lvsrs
service lvsrs {start|stop}
由于虛拟ip,也就是上面的VIP位址,是Director Server和所有的Real server共享的,如果有ARP請求VIP位址時,Director Server與所有Real server都做應答的話,就出現問題了,是以,需要禁止Real server響應ARP請求。而lvsrs腳本的作用就是使Real Server不響應arp請求。
對于2.4以下低版本,在Real Server上要安裝ARP hidden核心更新檔,幸運的是,在2.6核心中通過調整核心參數即可忽略ARP廣播回應。
三、在Director上配置備援政策 Ldirectord
Ldirectord的作用是監測Real Server,當Real Server失效時,把它從虛拟伺服器清單中删除,恢複時重新添加到清單,在前面文章介紹heartbeat時預設已經安裝了Ldirectord,是以。這裡隻需進行配置即可。Ldirectord的配置檔案是/etc/ha.d/ldirectord.cf。
下面是需要配置的選項,注意,“#”号後面的内容為注釋:
# Global Directives
checktimeout=20 #判定real server出錯的時間間隔。
checkinterval=10 #指定ldirectord在兩次檢查之間的間隔時間。
fallback=127.0.0.1:80 #當所有的real server節點不能工作時,web服務重定向的位址。
autoreload=yes #是否自動重載配置檔案,選yes時,配置檔案發生變化,自動載入配置資訊。
logfile="/var/log/ldirectord.log" #設定ldirectord日志輸出檔案路徑。
quiescent=no #當選擇no時,如果一個節點在checktimeout設定的時間周期内沒有響應,ldirectord将會從LVS的路由表中直接移除real server,此時,将中斷現有的用戶端連接配接,并使LVS丢掉所有的連接配接跟蹤記錄和持續連接配接模闆,如果選擇為yes,當某個real server失效時,ldirectord将失效節點的權值設定為0,新的連接配接将不能到達,但是并不從LVS路由表中清除此節點,同時,連接配接跟蹤記錄和程式連接配接模闆仍然保留在Director上。
注意:以上幾行為ldirectord.cf檔案的“全局”設定,它們可以應用到下面多個虛拟主機,下面是每個虛拟主機的配置。
# Sample for an http virtual service
virtual=192.168.60.200:80 #指定虛拟的IP位址和端口号,注意,在virtual行後面的行必
須縮進4個空格或以一個tab字元進行标記。
real=192.168.60.132:80 gate #指定Real Server伺服器位址和端口,同時設定LVS工作模式,
用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式。
real=192.168.60.144:80 gate
fallback=127.0.0.1:80 gate
service=http #指定服務的類型,這裡是對http服務做負載均衡。
request="index.html" #ldirectord将根據指定的Real Server位址,結合該選項給出
的請求路徑,發送通路請求,檢查Real Server上的服務是否正
常運作,確定這裡給出的頁面位址是可通路的,不然ldirectord
會誤認為此節點已經失效,發生錯誤監控現象。
receive="Test Page" #指定請求和應答字串。
scheduler=rr #指定排程算法,這裡是rr(輪叫)算法。
protocol=tcp #指定協定的類型,LVS支援TCP和UDP協定。
checktype=negotiate #指定Ldirectord的檢測類型,預設為negotiate。
checkport=80 #指定監控的端口号。
virtualhost=www.gaojf.com #虛拟伺服器的名稱,随便指定。
配置完畢,就可以執行如下指令啟動或關閉ldirectord服務
/etc/init.d/ldirectord {start|stop}
Ldirectord的核心作用是監控Real Server節點狀态,同時,它還能調用ipvsadm自動建立LVS路由表,這點從ldirectord.cf中可以看出,
這裡需要說明的是,ldirectord和Piranha都具有監控Real Server的功能,如果要通過ldirectord監控節點狀态,隻需啟動ldirectord服務,整個叢集系統就可以運作起來,而無需執行上面我們配置的LVS腳本,因為ldirectord會自動調用ipvsadm建立LVS路由表,而我們上面講述的利用ipvsadm指令行方式配置LVS,是為了讓讀者能更深入的了解ipvsadm的實作細節和實作機制。
如果是通過Piranha工具配置LVS,就無需使用ldirectord,Piranha工具對應的系統程序是pluse,此程序也會自動調用ipvsadm建立LVS路由表,同時會利用自身的nanny守護程序監控real server的狀态!
本文轉自 yntmdr 51CTO部落格,原文連結:http://blog.51cto.com/yntmdr/1587748,如需轉載請自行聯系原作者