負載均衡軟件實現(xiàn)與硬件實現(xiàn)方案_第1頁
負載均衡軟件實現(xiàn)與硬件實現(xiàn)方案_第2頁
負載均衡軟件實現(xiàn)與硬件實現(xiàn)方案_第3頁
負載均衡軟件實現(xiàn)與硬件實現(xiàn)方案_第4頁
負載均衡軟件實現(xiàn)與硬件實現(xiàn)方案_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、該文檔是word2003word2007兼容版軟件、硬件負載均衡部署方案目錄1、硬件負載均衡之F5部署方案21.1網(wǎng)絡拓撲結(jié)構(gòu)21.2反向代理部署方式32軟件負載均衡方案52.1負載均衡軟件實現(xiàn)方式之一 - URL重定向方式52.2負載均衡軟件實現(xiàn)方式之二 - 基于DNS62.3負載均衡軟件實現(xiàn)方式之三 - LVS82.4負載均衡軟件實現(xiàn)方式之四 - 專業(yè)負載均衡軟件16總結(jié):171、硬件負載均衡之F5部署方案對于所有的對外服務的服務器,均可以在BIG-IP上配置Virtual Server實現(xiàn)負載均衡,同時BIG-IP可持續(xù)檢查服務器的健康狀態(tài),一旦發(fā)現(xiàn)故障服務器,則將其從負載均衡組中摘除。

2、BIG-IP利用虛擬IP地址(VIP由IP地址和TCP/UDP應用的端口組成,它是一個地址)來為用戶的一個或多個目標服務器(稱為節(jié)點:目標服務器的IP地址和TCP/UDP應用的端口組成,它可以是internet的私網(wǎng)地址)提供服務。因此,它能夠為大量的基于TCP/IP的網(wǎng)絡應用提供服務器負載均衡服務。根據(jù)服務類型不同分別定義服務器群組,可以根據(jù)不同服務端口將流量導向到相應的服務器。BIG-IP連續(xù)地對目標服務器進行L4到L7合理性檢查,當用戶通過VIP請求目標服務器服務時,BIG-IP根椐目標服務器之間性能和網(wǎng)絡健康情況,選擇性能最佳的服務器響應用戶的請求。如果能夠充分利用所有的服務器資源,將

3、所有流量均衡的分配到各個服務器,我們就可以有效地避免“不平衡”現(xiàn)象的發(fā)生。利用UIE+iRules可以將TCP/UDP數(shù)據(jù)包打開,并搜索其中的特征數(shù)據(jù),之后根據(jù)搜索到的特征數(shù)據(jù)作相應的規(guī)則處理。因此可以根據(jù)用戶訪問內(nèi)容的不同將流量導向到相應的服務器,例如:根據(jù)用戶訪問請求的URL將流量導向到相應的服務器。1.1網(wǎng)絡拓撲結(jié)構(gòu)網(wǎng)絡拓撲結(jié)構(gòu)如圖所示:網(wǎng)絡拓撲結(jié)構(gòu)1.2反向代理部署方式下圖為集群服務器的硬件負載均衡詳細架構(gòu)圖,由一臺F5虛擬機分別對多臺服務器進行負載分配。如圖,假設域名被解析到F5的外網(wǎng)/公網(wǎng)虛擬IP:(vs_squid),該虛擬IP下有一個服務器池(pool_squi

4、d),該服務器池下包含兩臺真實的Squid服務器(1和2)。、如果Squid緩存未命中,則會請求F5的內(nèi)網(wǎng)虛擬IP:(vs_apache),該虛擬IP下有一個默認服務器池(pool_apache_default),該服務器池下包含兩臺真實的Apache服務器(1和2),當該虛擬IP匹配iRules規(guī)則時,則會訪問另外一個服務器池(pool_apache_irules),該服務器池下同樣包含兩臺真實的Apache服務器(3和4)。、另外,所有真

5、實服務器的默認網(wǎng)關(guān)指向F5的自身內(nèi)網(wǎng)IP,即。、所有的真實服務器通過SNAT IP地址訪問互聯(lián)網(wǎng)。2軟件負載均衡方案2.1負載均衡軟件實現(xiàn)方式之一 - URL重定向方式有一種用軟件實現(xiàn)負載均衡的方式,是基于"URL重定向"的.先看看什么是URL重定向:"簡單的說,如果一個網(wǎng)站有正規(guī)的URL和別名URL,對別名URL進行重定向到正規(guī)URL,訪問同一個網(wǎng)址,或者網(wǎng)站改換成了新的域名則把舊的域名重定向到新的域名,都叫URL重定向"("很多網(wǎng)絡協(xié)議都支持“重定向”功能,例如在HTTP協(xié)議中支持Location指令,

6、接收到這個指令的瀏覽器將自動重定向到Location指明的另一個URL上。"(http:/sysapp. 這種方式,對于簡單的網(wǎng)站,如果網(wǎng)站是自己開發(fā)的,也在一定程度上可行.但是它存在著較多的問題:1、“例如一臺服務器如何能保證它重定向過的服務器是比較空閑的,并且不會再次發(fā)送Location指令,Location指令和瀏覽器都沒有這方面的支持能力,這樣很容易在瀏覽器上形成一種死循環(huán)?!?、在哪里放LOCATION,也是一個問題。很有可能用戶會訪問系統(tǒng)的很多個不同URL,這個時候做起來會非常麻煩。并且,對URL的訪問,有的時候是 直接過來的,可以被重定向,有的時候是帶著SESSION之

7、類的,重定向就可能會出問題。并且,這種做法,將負載均衡這個系統(tǒng)級的問題放到了應用層,結(jié)果 可能是麻煩多多。3、這種方式一般只適用于HTTP方式,但是實際上有太多情況不僅僅是HTTP方式了,特別是用戶如果在應用里面插一點流媒體之類的。4、重定向的方式,效率遠低于IP隧道。5、這種方式,有的時候會伴以對服務器狀態(tài)的檢測,但往往也是在應用層面實現(xiàn),從而實時性大打折扣。實際上,這種方式是一種“對付”的解決方法,并不能真正用于企業(yè)級的負載均衡應用(這里企業(yè)級是指稍微復雜一點的應用系統(tǒng))可以看一下專業(yè)的負載均衡軟件是如何來實現(xiàn)的:http:/www. 對比一下可以發(fā)現(xiàn),專業(yè)的負載均衡軟件要更適用于正規(guī)應用

8、,而重定向方式則比較適用于一些簡單的網(wǎng)站應用。  2.2負載均衡軟件實現(xiàn)方式之二 - 基于DNS    負載均衡集群網(wǎng)絡拓撲圖講到負載均衡,幾乎所有地方都必須要講一下基于DNS的方式,因為這實在是最基本、最簡單的方式了。當然,也幾乎所有地方都說到這種方式的種種缺點,不過,既然很基本,就還是要說明一下。下面這段講得很清楚:最早的負載均衡技術(shù)是通過DNS來實現(xiàn)的,在DNS中為多個地址配置同一個名字,因而查詢這個名字的客戶機將得到其中一個地址,從而使得不同的客戶訪問不同的服務器,達到負載均衡的目的。 DNS負載均衡是一種簡單而有效的方法,但

9、是它不能區(qū)分服務器的差異,也不能反映服務器的當前運行狀態(tài)。當使用DNS負載均衡的時候,必須盡量保證不同的 客戶計算機能均勻獲得不同的地址。由于DNS數(shù)據(jù)具備刷新時間標志,一旦超過這個時間限制,其他DNS服務器就需要和這個服務器交互,以重新獲得地址數(shù) 據(jù),就有可能獲得不同IP地址。因此為了使地址能隨機分配,就應使刷新時間盡量短,不同地方的DNS服務器能更新對應的地址,達到隨機獲得地址,然而將過 期時間設置得過短,將使DNS流量大增,而造成額外的網(wǎng)絡問題。DNS負載均衡的另一個問題是,一旦某個服務器出現(xiàn)故障,即使及時修改了DNS設置,還是 要等待足夠的時間(刷新時間)才能發(fā)揮作用,在此期間,保存了

10、故障服務器地址的客戶計算機將不能正常訪問服務器。 盡管存在多種問題,但它還是一種非常有效的做法,包括Yahoo在內(nèi)的很多大型網(wǎng)站都使用DNS。引自:負載均衡技術(shù)研究 原文:http:/www. 比較一下DNS方式與專業(yè)的負載均衡軟件如PCL負載均衡軟件,會發(fā)現(xiàn)DNS的問題在于,一是往往不能根據(jù)系統(tǒng)與服務的狀態(tài)來判斷負載,二是往往不能建立較復雜的負載均衡算法,而最主要的是DNS往往有緩存,簡單分配負載問題不大,如果是應用集群這個就是無法接受的。那么,為什么象Yahoo在內(nèi)的大型網(wǎng)站都使用DNS方式呢?因為對于門戶網(wǎng)站來講,應用形態(tài)單一且簡單,重要的是服務器數(shù)量與分布,而如果出現(xiàn)短時 間對于少量用

11、戶的服務中斷問題并不大(比如有100臺服務器,有一臺不行了,即使DNS有緩存,也關(guān)系不大,用戶重新刷一下,就很可能又分配到其他機器上 了)。但是,對于應用系統(tǒng)而言,比如兩三臺服務器,跑著比較復雜的應用,DNS方式就完全不適合了,這個時候,就要用專業(yè)的負載均衡軟件了。我們可以看一個實例,這樣會對專業(yè)化負載均衡軟件應該支持什么樣的應用有更多的理解:36000人同時應用的負載均衡實例2.3負載均衡軟件實現(xiàn)方式之三 - LVS LVS是一個開源的軟件,可以實現(xiàn)LINUX平臺下的簡單負載均衡. 后面所附文章,講述了LVS實現(xiàn)負載均衡的方法.因為文章較長,所以在轉(zhuǎn)載前,先總結(jié)一下LVS的優(yōu)缺點:優(yōu)點:1、

12、開源,免費2、在網(wǎng)上能找到一些相關(guān)技術(shù)資源3、具有軟件負載均衡的一些優(yōu)點缺點:1、具有開源產(chǎn)品常有的缺點,最核心的就是沒有可靠的支持服務,沒有人對其結(jié)果負責2、功能比較簡單,支持復雜應用的負載均衡能力較差,如算法較少等。3、開啟隧道方式需重編譯內(nèi)核4、配置復雜5、只支持LINUX,如果應用還包括WINDOWS、SOLIRIS等就不行了因此,建議在簡單的LINUX應用中使用LVS,復雜的應用,或者重要的應用,還是應該使用專業(yè)的負載均衡軟件,如富士通西門子公司的PCL負載均衡軟件。下面轉(zhuǎn)載一下如何使用LVS實現(xiàn)負載均衡:搭建集群負載均衡系統(tǒng) (原文: . p/20060707/2519.html)

13、負載均衡集群是在應用服務器高負載的情況下,由多臺節(jié)點提供可伸縮的,高負載的服務器組以保證對外提供良好的服務響應;而LVS就是實現(xiàn)這一功能的技 術(shù).實際上LVS是一種Linux操作系統(tǒng)上基于IP層的負載均衡調(diào)度技術(shù),它在操作系統(tǒng)核心層上,將來自IP層的TCP/UDP請求均衡地轉(zhuǎn)移到不同的 服務器,從而將一組服務器構(gòu)成一個高性能、高可用的虛擬服務器。使用三臺機器就可以用LVS實現(xiàn)最簡單的集群,如圖1所示。       圖1 LVS實現(xiàn)集群系統(tǒng)結(jié)構(gòu)簡圖 圖1顯示一臺名為Director的機器是前端負載均衡器,運行LVS,目前只能在

14、Linux下運行.可以針對web、ftp、cache、mms甚至 mysql等服務做load balance;后端兩臺機器稱之為Real Server,是需要負載均衡的服務器,可以為各類系統(tǒng),Linux、Solaris、Aix、BSD、Windows都可,甚至Director本身也 可以作為Real Server. 本文將通過實際操作,重點介紹如何在Redhat 9上用LVS構(gòu)建一個負載均衡集群,關(guān)于負載均衡集群、LVS的詳細內(nèi)容,可參考如下信息:  / . r/lvs/part1/index.shtml

15、60; 安裝LVS RedHat在 9.0以后,就將ipvsadm這些套件去除,因此如果想使用LVS(Linux Virtual Server),就得自己重新編譯核心(kernel)。 下載所需軟件 下載ipvs補丁包 從RedHat 9開始ipvs不再被預先編譯到了RedHat發(fā)行版的內(nèi)核中,我們需要從/software/kernel-2.4下載新版的ipvs, 這里我們使用ipvs-1.0.9.tar.gz這個版本. 下載內(nèi)核linux-2.4.20.tar.gz  這里需要強調(diào)的是由于所有的ip

16、vs的補丁包都是為標準內(nèi)核開發(fā)的,所以安裝ipvs時不能使用RedHat光盤中的Kernel Source,而是需要去下載標準的內(nèi)核。所以我們從/pub/linux/kernel/ 得到standard kernel linux-2.4.20.tar.gz  下載ipvs管理工具ipvsadm 從/ 得到ipvs管理工具ipvsadm-1.21.tar.gz, ipvsadm是設置ipvs轉(zhuǎn)發(fā)方式和調(diào)度算法的工具. 開始安裝 安裝內(nèi)核源碼 把linux-2.4.20.tar

17、.gz解壓到/usr/src目錄,生成了/usr/src/linux目錄;如果生成的是/usr/src /linux-2.4.20目錄,則要在/usr/src下建立一個連接 ln s linux-2.4.20 linux,因為在ipvs-1.0.9中的makefile文件中默認指定Kernel Source的路徑為:KERNELSOURCE = /usr/src/linux  把ipvs補丁Patch到內(nèi)核源碼中 把ipvs-1.0.9.tar.gz解壓縮到某個目錄,如/test,生成了/test/ipvs-1.0.9目錄;進入/test/ipvs- 1.0.9,依次執(zhí)行如

18、下命令:make patchkernel、make installsource,將ipvs的Patch加載到kernel的source中。 重新編譯支持ipvs的內(nèi)核  進入/usr/src/linux目錄,分別執(zhí)行:  make mrproper 為創(chuàng)建新的內(nèi)和配置做好準備  make menuconfig 進行配置   這里請確保IP:Virtual Server Configuration中的選項設定都用M  make dep 檢測是否有相關(guān)的軟件包被使用  

19、make clean 為新內(nèi)核結(jié)構(gòu)準備源目錄樹  make bzImage 創(chuàng)建內(nèi)核引導映像  make modules、make modules_install 生成模塊 make install安裝新的內(nèi)核到指定位置并重新配置grub.conf 到這里新內(nèi)核就安裝完畢了,請重啟并用此內(nèi)核引導系統(tǒng) 安裝ipvs管理工具ipvsadm  當使用新內(nèi)核啟動后,就可以安裝ipvsadm: tar xzvf ipvsadm-1.21.tar.gz  cd ./ipvsadm-1.21  make

20、60; make install  安裝完成后,執(zhí)行ipvsadm命令,如果有如下信息出現(xiàn)則說明安裝成功了。    rootleon c# ipvsadm IP Virtual Server version 1.0.9 (size=65536) Prot LocalAddress:Port Scheduler Flags    -> RemoteAddress:Port           

21、 Forward Weight ActiveConn InActConn 到現(xiàn)在為止,支持負載均衡功能的director就安裝成功了,接下來我們可以通過ipvsadm來配置一個負載均衡集群。 構(gòu)建負載均衡集群  這里我們假設局域網(wǎng)中有兩臺FTP服務器,IP分別為FTP1:03,FTP2: 所提供的資料都是相同的,這可以通過無密碼SSH登錄+RSYNC來保證數(shù)據(jù)一致,這非本文中電,故而略過.我們提供給用戶的虛擬IP是 00,而在后臺為這兩臺FTP服務器實行LVS負載均衡的服務器的IP是3.這三臺

22、均安裝RedHat9系統(tǒng). 我們最終要實現(xiàn)的目標是當用戶輸入ftp 00時, LVS負載均衡服務器系統(tǒng)會根據(jù)當時的負載情況,依據(jù)輪換策略來決定Real Server到底是FTP1還是FTP2,從而使得整個FTP服務器的負載到達均衡. 目前LVS有三種負載平衡方式,NAT(Network Address Translation),DR(Direct Routing),IP Tunneling。其中,最為常用的是DR方式,因此這里只說明DR(Direct Routing)方式的LVS負載平衡。其它兩種的詳細情況請參考LVS-HOWTO. Director(即

23、3)上執(zhí)行的設置 為了方便我們將所有步驟寫成一個shell script. #!/bin/bash echo "0" > /proc/sys/net/ipv4/ip_forward (關(guān)閉ip_forward) echo "1" > /proc/sys/net/ipv4/conf/all/send_redirects (開啟ICMP Redirects) echo "1" > /proc/sys/net/ipv4/conf/default/send_redirects (開啟ICMP Redirects) echo

24、"1" > /proc/sys/net/ipv4/conf/eth0/send_redirects   (開啟ICMP Redirects) ifconfig eth0:100 00 broadcast 00 netmask 55 (設置虛擬IP) route add -host 00 dev eth0:100 (設置達到虛擬Ip的路由) ipvsadm C (清空ipvsadm table) ipvsadm -A -t 00:21 -s wr

25、r (建立service rule, 當前調(diào)度算法為加權(quán)輪叫調(diào)度) ipvsadm -a -t 00:21 -r 6 -g -w 3 (建立轉(zhuǎn)發(fā)規(guī)則) ipvsadm -a -t 00:21 -r -g -w 1   (建立轉(zhuǎn)發(fā)規(guī)則) ipvsadm (檢查當前ipvsadm table) 將此shell script加入到/etc/rc.local中,這樣在每次系統(tǒng)啟動時都可以自動運行進行設置了。 Realserver(即和6)上的設置 這里我們必須先

26、修正real server上arp problem .這是因為在使用VS/DR的時候,real server會在一塊網(wǎng)卡上綁定兩個IP,但linux在kernel 2.2.14以后就將eth0:1的NOARP FLAG關(guān)閉,這使得eth0:1僅僅是eth0的別名,任何對eth0:1的操作都對eth0有效,因此如果此時使eth0:1 NOARP,則也使得eth0 NOARP,這樣整個網(wǎng)卡都不會收到數(shù)據(jù)包,具體的說就是因為我所有的機器都放在同一個網(wǎng)段,當該網(wǎng)段的Router接收到用戶對虛擬IP的TCP connection要求(即使用FTP登錄服務器)時,會先在網(wǎng)段中利用Arp request詢問

27、誰有VIP的地址,而包含Director與Real Servers上所有的interface,只要他有那個ip,都會發(fā)送arp reply回去,造成網(wǎng)段內(nèi)所有擁有Virtual IP的interface都會reply給Router,最后結(jié)果就是看誰的速度快,Router就將該封包送給誰,如此會造成LVS的Server并無 法發(fā)揮其效果,而我們所希望的是只有Director上的Virtual IP發(fā)送arp reply回去,因此需要利用hidden這個pattch,將real server上的Virtual IP給隱藏起來,如此他就不會對Arp Request進行Reply,就可以解決ARP的問

28、題.具體步驟是: 下載所需的軟件包  從http:/www.ssi.bg/ja/ 得到hidden修正包,不同的核心使用相應的版本.請參考下表 Patch Linux 2.4 Created hidden-2.4.28-1.diff   2.4.28 - 2.4.30   November 18, 2004  hidden-2.4.26-1.diff   2.4.26 - 2.4.27   February 28, 2004  hidden-2.4.25-

29、1.diff   2.4.25   February 19, 2004  hidden-2.4.20pre10-1.diff   2.4.20pre10 - 2.4.24   October 12, 2002  hidden-2.4.19pre5-1.diff   2.4.19pre5 - 2.4.20pre9   April 7, 2002  hidden-2.4.5-1.diff   2.4.

30、5 - 2.4.19pre4   June 2, 2001  hidden-2.4.4-1.diff   2.4.4   April 29, 2001  Patch Linux 2.6 Created hidden-2.6.9-1.diff   2.6.9 - 2.6.11   October 19, 2004  hidden-2.6.4-1.diff   2.6.4 - 2.6.8   Marc

31、h 12, 2004  hidden-2.6.3-1.diff   2.6.3   February 19, 2004  hidden-2.5.67-1.diff   2.5.67 - 2.6.2   April 9, 2003  本例使用的內(nèi)核版本是2.4.20-8,因此下載hidden-2.4.20pre10-1.diff 重新編譯內(nèi)核,修正arp problem  把hidden-2.4.20pre10-1.diff放到/usr/

32、src/linux下,用命令 patch -p1 < hidden-2.4.20pre10-1.diff對kernel進行patch  進入/usr/src/linux目錄,分別執(zhí)行:  make mrproper 為創(chuàng)建新的內(nèi)和配置做好準備  make menuconfig 進行配置    make dep 檢測是否有相關(guān)的軟件包被使用  make clean 為新內(nèi)核結(jié)構(gòu)準備源目錄樹  make bzImage 創(chuàng)建內(nèi)核引導映像 

33、60;make modules、make modules_install 生成模塊 make install 安裝新的內(nèi)核到指定位置并重新配置grub.conf 到這里新內(nèi)核就安裝完畢了,請重啟并用此內(nèi)核引導系統(tǒng) 設置Real server 為了方便我們將所有步驟寫成一個shell script. #!/bin/bash echo "0" > /proc/sys/net/ipv4/ip_forward (關(guān)閉ip_forward) ifconfig lo:100 00 broadcast 00 netmask 0xffffffff up (設置虛擬IP) route add -host 00 dev lo:100 (設置達到虛擬Ip的路由) echo "1" > /proc/sys/net/ip

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論