在生產環境中,一臺機器的性能再好,也不可能抵擋住上萬人的同時訪問。這就需要我們搭建集羣來減輕單一主機的壓力,同時還可以提升服務的速度和質量。
LVS-NET負載均衡集羣:
NET模型的基本配置:
NET模型需要一個director和至少兩個realserver來提供集羣服務,其大致工作原理如圖所示:
Director有兩塊網卡,其中VIP指向外網,DIP指向內網。用戶訪問時訪問的是director,也就是一個集羣服務。但是用戶並不知道自己訪問的是一個集羣服務,用戶看到的只是director通過VIP提供的服務,所以用戶在發送請求時其目標IP指向的是VIP。VIP在接收到用戶請求之後通過指定的算法將請求通過DIP轉發給realserver,realserver得到請求報文之後會在最短的時間內處理並將報文回傳給DIP,DIP再將響應報文轉交給VIP,VIP將響應報文送還給用戶。
下面是用NET模型提供web服務的配置過程:
配置環境:使用VMware虛擬機,Director和兩個realserver的系統均爲RHEL5.8
主機配置:Director主機配置兩塊網卡,realserver配置一塊網卡;Director一塊網卡指向外網,選擇Bridged;指向內網的網卡選擇Hots-Only。兩個realserver的網卡也選擇Host-Only。
首先爲Director提供兩塊網卡,其中一塊用來當做VIP網卡使用,指向外網地址。
配置VIP地址爲:172.16.125.1; DIP網卡地址指向內網,地址爲:192.168.125.1。
realserver 1地址爲192.168.125.3。realserver 2地址爲192.168.125.4。將兩個realserver的網關指向192.168.125.1。
做集羣最重要的是realserver之間的時間間差不能超過1秒鐘,可以使用ntpdate 192.168.125.1來讓realserver的時間與Director同步。realserver上的ntpdate服務要實現停止纔可以同步。
在Director中開啓本地路由轉發功能,可以使用命令# echo “1” > /proc/sys/net/ipv4/ip_foeward 來實現。
查看Director的ipvsadm包是否安裝,沒有安裝的話可以使用yum安裝。安裝後爲ipvsadm添加調度規則。
# ipvsadm -A -t 172.16.125.1:80 -s rr
# ipvsadm -a -t 172.16.125.1:80 -r 192.168.125.3 -m
# ipvsadm -a -t 172.16.125.1:80 -r 192.168.125.4 -m
爲realserver提供web服務,可以利用yum直接安裝使用,爲realserver 1 提供網頁在/var/www/http/下命名爲index.html,內容爲了測試爲host2.earl.com。爲realserver 2 提供網頁在/var/www/http/下命名爲index.html,內容爲host3.earl.com。啓動兩個realserver的httpd服務,在本地的物理機上就可以測試了。
以下爲網頁訪問效果:
realserver 1:
realserver 2:
LVS-DR模型的基本配置:
DR模型總體上來說和NET模型沒有什麼區別,只是將所有的請求報文交給Director處理,Director不再處理響應請求,響應請求直接由realserver交給路由器轉發回Client。這樣可以減輕Director的壓力,提高報文響應的速度。但是用戶請求的是目標IP是VIP,如果RIP直接響應給用戶的話,用戶發現沒有對此IP發送請求,是不會接收的。所以我們還必須用VIP的地址來響應給用戶。可是VIP不處理響應報文,這裏就用到了網卡的別名。可以給RIP的網卡定義一個別名,將其地址設爲VIP的地址。由於是網卡的別名,是隱藏的地址,所以不會發生IP衝突。一般情況下別名的地址是不用來通信的,只用來響應用戶的請求的集羣服務。
配置環境:VMware Workstation 9.0
系統環境: RHEL 5.8
我們可以使用上邊的NET模型中的三臺虛擬機,只是要添加一臺虛擬機當做路由器來進行轉發功能。
配置路由IP地址:
內部路由接口:192.168.125.20
外部路由接口:172.16.125.10
realserver要使用VIP的地址直接響應給用戶的,所以給realserver的網卡配置上別名,不過在這之前將其RIP的網關指向路由設備使其能夠到外網中去(別忘了查看時間同步)。
修改網關之後要修改內核參數,然後定義別名,並給別名添加路由條目(一定要先修改內核參數,然後在定義別名):
Realserver1和Realserver2的步驟完全相同:
# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
# ifconfig eth0:0 172.16.125.1 netmask 255.255.255.255 broadcast 172.16.125.1
# route add -host 172.16.125.1 dev eth0:0
配置Director:
爲Director的VIP提供一條跟RIP的別名相同的路由條目
# route add -host 172.16.125.1 dev eth0
清空NET是用的ipvsadm規則,並重新制定規則
# ipvsadm -A -t 172.16.125.1:80 -s wlc
# ipvsadm -a -t 172.16.125.1 -r 192.168.125.3 -w 1
# ipvsadm -a -t 172.16.125.1 -r 192.168.125.4 -w 1
最後重啓realserver和Director的網絡服務,就可以測試了。
以上便是兩種LVS的負載均衡集羣配置全過程。