集群和負(fù)載均衡的概念 |
發(fā)布時(shí)間: 2012/9/12 14:58:05 |
集群(Cluster) 所謂集群是指一組獨(dú)立的計(jì)算機(jī)系統(tǒng)構(gòu)成的一個(gè)松耦合的多處理器系統(tǒng),它們之間通過(guò)網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信。應(yīng)用程序可以通過(guò)網(wǎng)絡(luò)共享內(nèi)存進(jìn)行消息傳送,實(shí)現(xiàn)分布式計(jì)算機(jī)。 負(fù)載均衡(Load Balance) 網(wǎng)絡(luò)的負(fù)載均衡是一種動(dòng)態(tài)均衡技術(shù),通過(guò)一些工具實(shí)時(shí)地分析數(shù)據(jù)包,掌握網(wǎng)絡(luò)中的數(shù)據(jù)流量狀況,把任務(wù)合理均衡地分配出去。這種技術(shù)基于現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu),提供了一種擴(kuò)展服務(wù)器帶寬和增加服務(wù)器吞吐量的廉價(jià)有效的方法,加強(qiáng)了網(wǎng)絡(luò)數(shù)據(jù)處理能力,提高了網(wǎng)絡(luò)的靈活性和可用性。 特點(diǎn) (1)高可靠性(HA)。利用集群管理軟件,當(dāng)主服務(wù)器故障時(shí),備份服務(wù)器能夠自動(dòng)接管主服務(wù)器的工作,并及時(shí)切換過(guò)去,以實(shí)現(xiàn)對(duì)用戶(hù)的不間斷服務(wù)。 (2)高性能計(jì)算(HP)。即充分利用集群中的每一臺(tái)計(jì)算機(jī)的資源,實(shí)現(xiàn)復(fù)雜運(yùn)算的并行處理,通常用于科學(xué)計(jì)算領(lǐng)域,比如基因分析、化學(xué)分析等。 (3)負(fù)載平衡。即把負(fù)載壓力根據(jù)某種算法合理分配到集群中的每一臺(tái)計(jì)算機(jī)上,以減輕主服務(wù)器的壓力,降低對(duì)主服務(wù)器的硬件和軟件要求。 LVS系統(tǒng)結(jié)構(gòu)與特點(diǎn) 1. Linux Virtual Server:簡(jiǎn)稱(chēng)LVS。是由中國(guó)一個(gè)Linux程序員章文嵩博士發(fā)起和領(lǐng)導(dǎo)的,基于Linux系統(tǒng)的服務(wù)器集群解決方案,其實(shí)現(xiàn)目標(biāo)是創(chuàng)建一個(gè)具有良好的擴(kuò)展性、高可靠性、高性能和高可用性的體系。許多商業(yè)的集群產(chǎn)品,比如RedHat的Piranha、 Turbo Linux公司的Turbo Cluster等,都是基于LVS的核心代碼的。 2. 體系結(jié)構(gòu):使用LVS架設(shè)的服務(wù)器集群系統(tǒng)從體系結(jié)構(gòu)上看是透明的,最終用戶(hù)只感覺(jué)到一個(gè)虛擬服務(wù)器。物理服務(wù)器之間可以通過(guò)高速的 LAN或分布在各地的WAN相連。最前端是負(fù)載均衡器,它負(fù)責(zé)將各種服務(wù)請(qǐng)求分發(fā)給后面的物理服務(wù)器,讓整個(gè)集群表現(xiàn)得像一個(gè)服務(wù)于同一IP地址的虛擬服務(wù)器。 3. LVS的三種模式工作原理和優(yōu)缺點(diǎn): Linux Virtual Server主要是在負(fù)載均衡器上實(shí)現(xiàn)的,負(fù)載均衡器是一臺(tái)加了 LVS Patch的2.2.x版內(nèi)核的Linux系統(tǒng)。LVS Patch可以通過(guò)重新編譯內(nèi)核的方法加入內(nèi)核,也可以當(dāng)作一個(gè)動(dòng)態(tài)的模塊插入現(xiàn)在的內(nèi)核中。 負(fù)載均衡器可以運(yùn)行在以下三種模式下: (1)Virtual Server via NAT(VS-NAT):用地址翻譯實(shí)現(xiàn)虛擬服務(wù)器。地址轉(zhuǎn)換器有能被外界訪(fǎng)問(wèn)到的合法IP地址,它修改來(lái)自專(zhuān)有網(wǎng)絡(luò)的流出包的地址。外界看起來(lái)包是來(lái)自地址轉(zhuǎn)換器本身,當(dāng)外界包送到轉(zhuǎn)換器時(shí),它能判斷出應(yīng)該將包送到內(nèi)部網(wǎng)的哪個(gè)節(jié)點(diǎn)。優(yōu)點(diǎn)是節(jié)省IP 地址,能對(duì)內(nèi)部進(jìn)行偽裝;缺點(diǎn)是效率低,因?yàn)榉祷亟o請(qǐng)求方的流量經(jīng)過(guò)轉(zhuǎn)換器。 (2)Virtual Server via IP Tunneling (VS-TUN):用IP隧道技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。這種方式是在集群的節(jié)點(diǎn)不在同一個(gè)網(wǎng)段時(shí)可用的轉(zhuǎn)發(fā)機(jī)制,是將IP包封裝在其他網(wǎng)絡(luò)流量中的方法。為了安全的考慮,應(yīng)該使用隧道技術(shù)中的VPN,也可使用租用專(zhuān)線(xiàn)。 集群所能提供的服務(wù)是基于TCP/IP的Web服務(wù)、Mail服務(wù)、News服務(wù)、DNS服務(wù)、Proxy服務(wù)器等等. (3)Virtual Server via Direct Routing(VS-DR):用直接路由技術(shù)實(shí)現(xiàn)虛擬服務(wù)器。當(dāng)參與集群的計(jì)算機(jī)和作為控制管理的計(jì)算機(jī)在同一個(gè)網(wǎng)段時(shí)可以用此法,控制管理的計(jì)算機(jī)接收到請(qǐng)求包時(shí)直接送到參與集群的節(jié)點(diǎn)。優(yōu)點(diǎn)是返回給客戶(hù)的流量不經(jīng)過(guò)控制主機(jī),速度快開(kāi)銷(xiāo)少。 以四臺(tái)服務(wù)器為例實(shí)現(xiàn)負(fù)載均衡: 安裝配置LVS 1. 安裝前準(zhǔn)備: (1)首先說(shuō)明,LVS并不要求集群中的服務(wù)器規(guī)格劃一,相反,可以根據(jù)服務(wù)器的不同配置和負(fù)載狀況,調(diào)整負(fù)載分配策略,充分利用集群環(huán)境中的每一臺(tái)服務(wù)器。如下表: Srv Eth0 Eth0:0 Eth1 Eth1:0 vs1 10.0.0.1 10.0.0.2 192.168.10.1 192.168.10.254 vsbak 10.0.0.3 192.168.10.102 real1 192.168.10.100 real2 192.168.10.101 其中,10.0.0.2是允許用戶(hù)訪(fǎng)問(wèn)的IP。 (2)這4臺(tái)服務(wù)器中,vs1作為虛擬服務(wù)器(即負(fù)載平衡服務(wù)器),負(fù)責(zé)將用戶(hù)的訪(fǎng)問(wèn)請(qǐng)求轉(zhuǎn)發(fā)到集群內(nèi)部的real1,real2,然后由real1,real2分別處理。 Client為客戶(hù)端測(cè)試機(jī)器,可以為任意操作系統(tǒng)。 (3)所有OS為redhat6.2,其中vs1 和vsbak 的核心是2.2.19, 而且patch過(guò)ipvs的包, 所有real server的Subnet mask 都是24位, vs1和vsbak 的10.0.0. 網(wǎng)段是24 位。 2.理解LVS中的相關(guān)術(shù)語(yǔ) (1) ipvsadm :ipvsadm是LVS的一個(gè)用戶(hù)界面。在負(fù)載均衡器上編譯、安裝ipvsadm。 (2) 調(diào)度算法: LVS的負(fù)載均衡器有以下幾種調(diào)度規(guī)則:Round-robin,簡(jiǎn)稱(chēng)rr;weighted Round-robin,簡(jiǎn)稱(chēng)wrr;每個(gè)新的連接被輪流指派到每個(gè)物理服務(wù)器。Least-connected,簡(jiǎn)稱(chēng)lc;weighted Least-connected,簡(jiǎn)稱(chēng)wlc,每個(gè)新的連接被分配到負(fù)擔(dān)最小的服務(wù)器。 (3) Persistent client connection,簡(jiǎn)稱(chēng)pcc,(持續(xù)的客戶(hù)端連接,內(nèi)核2.2.10版以后才支持)。所有來(lái)自同一個(gè)IP的客戶(hù)端將一直連接到同一個(gè)物理服務(wù)器。超時(shí)時(shí)間被設(shè)置為360秒。Pcc是為https和cookie服務(wù)設(shè)置的。在這處調(diào)度規(guī)則下,第一次連接后,所有以后來(lái)自相同客戶(hù)端的連接(包括來(lái)自其它端口)將會(huì)發(fā)送到相同的物理服務(wù)器。但這也會(huì)帶來(lái)一個(gè)問(wèn)題,因?yàn)榇蠹s有25%的Internet 可能具有相同的IP地址。 (4) Persistent port connection調(diào)度算法:在內(nèi)核2.2.12版以后,pcc功能已從一個(gè)調(diào)度算法(你可以選擇不同的調(diào)度算法:rr、wrr、lc、wlc、pcc)演變成為了一個(gè)開(kāi)關(guān)選項(xiàng)(你可以讓rr、 wrr、lc、wlc具備pcc的屬性)。在設(shè)置時(shí),如果你沒(méi)有選擇調(diào)度算法時(shí),ipvsadm將默認(rèn)為wlc算法。 在Persistent port connection(ppc)算法下,連接的指派是基于端口的,例如,來(lái)自相同終端的80端口與443端口的請(qǐng)求,將被分配到不同的物理服務(wù)器上。不幸的是,如果你需要在的網(wǎng)站上采用cookies時(shí)將出問(wèn)題,因?yàn)閔ttp是使用80端口,然而cookies需要使用443端口,這種方法下,很可能會(huì)出現(xiàn)cookies不正常的情況。 (5)Load Node Feature of Linux Director:讓Load balancer 也可以處理users 請(qǐng)求。 (6)IPVS connection synchronization。 (7)ARP Problem of LVS/TUN and LVS/DR:這個(gè)問(wèn)題只在LVS/DR,LVS/TUN 時(shí)存在。 3. 配置實(shí)例 (1) 需要的軟件包和包的安裝: I. piranha-gui-0.4.12-2*.rpm (GUI接口cluster設(shè)定工具); II. piranha-0.4.12-2*.rpm; III. ipchains-1.3.9-6lp*.rpm (架設(shè)NAT)。 取得套件或mount到光盤(pán),進(jìn)入RPMS目錄進(jìn)行安裝: # rpm -Uvh piranha* # rpm -Uvh ipchains* (2) real server群: 真正提供服務(wù)的server(如web server),在NAT形式下是以?xún)?nèi)部虛擬網(wǎng)域的形式,設(shè)定如同一般虛擬網(wǎng)域中Client端使用網(wǎng)域:192.168.10.0/24 架設(shè)方式同一般使用虛擬IP之局域網(wǎng)絡(luò)。 a. 設(shè)網(wǎng)卡IP real1 :192.168.10.100/24 real2 :192.168.10.101/24 b.每臺(tái)server均將default gateway指向192.168.10.254。 192.168.10.254為該網(wǎng)域唯一對(duì)外之信道,設(shè)定在virtual server上,使該網(wǎng)域進(jìn)出均需通過(guò)virtual server 。 c.每臺(tái)server均開(kāi)啟httpd功能供web server服務(wù),可以在各real server上放置不同內(nèi)容之網(wǎng)頁(yè),可由瀏覽器觀察其對(duì)各real server讀取網(wǎng)頁(yè)的情形。 d.每臺(tái)server都開(kāi)啟rstatd、sshd、rwalld、ruser、rsh、rsync,并且從Vserver上面拿到相同的lvs.conf文件。 (3) virtual server: 作用在導(dǎo)引封包的對(duì)外主機(jī),專(zhuān)職負(fù)責(zé)封包的轉(zhuǎn)送,不提供服務(wù),但因?yàn)樵贜AT型式下必須對(duì)進(jìn)出封包進(jìn)行改寫(xiě),所以負(fù)擔(dān)亦重。 a.IP設(shè)置: 對(duì)外eth0:IP:10.0.0.1 eth0:0 :10.0.0.2 對(duì)內(nèi)eth1:192.168.10.1 eth1:0 :192.168.10.254 NAT形式下僅virtual server有真實(shí)IP,real server群則為透過(guò)virtual server. b.設(shè)定NAT功能 # echo 1 >; /proc/sys/net/ipv4/ip_forward # echo 1 >; /proc/sys/net/ipv4/ip_always_defrag # ipchains -P forward MASQ c.設(shè)定piranha 進(jìn)入X-window中 (也可以直接編輯/etc/lvs.cf ) a).執(zhí)行面板系統(tǒng)piranha b).設(shè)定“整體配置”(Global Settings) 主LVS服務(wù)器主機(jī)IP:10.0.0.2, 選定網(wǎng)絡(luò)地址翻譯(預(yù)設(shè)) NAT路徑名稱(chēng): 192.168.10.254, NAT 路徑裝置: eth1:0 c).設(shè)定虛擬服務(wù)器(Virtual Servers) 添加編輯虛擬服務(wù)器部分:(Virtual Server)名稱(chēng):(任意取名);應(yīng)用:http;協(xié)議: tcp;連接:80;地址:10.0……0.2;裝置:eth0:0; 重入時(shí)間:180 (預(yù)設(shè));服務(wù)延時(shí):10 (預(yù)設(shè));加載監(jiān)控工具:ruptime (預(yù)設(shè));調(diào)度策略:Weighted least-connections; 持續(xù)性:0 (預(yù)設(shè)); 持續(xù)性屏蔽: 255.255.255.255 (預(yù)設(shè)); 按下激活:實(shí)時(shí)服務(wù)器部分:(Real Servers); 添加編輯:名字:(任意取名); 地址: 192.168.10.100; 權(quán)重:1 (預(yù)設(shè)) 按下激活 另一架real server同上,地址:192.168.10.101。 d). 控制/監(jiān)控(Controls/Monitoring) 控制:piranha功能的激活與停止,上述內(nèi)容設(shè)定完成后即可按開(kāi)始鍵激活piranha.監(jiān)控器:顯示ipvsadm設(shè)定之routing table內(nèi)容 可立即更新或定時(shí)更新。 (4)備援主機(jī)的設(shè)定(HA) 單一virtual server的cluster架構(gòu)virtual server 負(fù)擔(dān)較大,提供另一主機(jī)擔(dān)任備援,可避免virtual server的故障而使對(duì)外服務(wù)工作終止;備份主機(jī)隨時(shí)處于預(yù)備狀態(tài)與virtual server相互偵測(cè) a.備份主機(jī): eth0: IP 10.0.0.3 eth1: IP 192.168.10.102 同樣需安裝piranha,ipvsadm,ipchains等套件 b.開(kāi)啟NAT功能(同上面所述)。 c.在virtual server(10.0.0.2)主機(jī)上設(shè)定。 a).執(zhí)行piranha冗余度 ; b).按下“激活冗余度”; 冗余LVS服務(wù)器IP: 10.0.0.3;HEARTBEAT間隔(秒數(shù)): 2 (預(yù)設(shè)) 假定在…秒后進(jìn)入DEAD狀態(tài): 5 (預(yù)設(shè)); HEARTBEAT連接埠: 539 (預(yù)設(shè)) c).按下“套用”; d).至“控制/監(jiān)控”頁(yè),按下“在當(dāng)前執(zhí)行層添加PULSE DEAMON” ,按下“開(kāi)始”; e).在監(jiān)控器按下“自動(dòng)更新”,這樣可由窗口中看到ipvsadm所設(shè)定的routing table,并且動(dòng)態(tài)顯示real server聯(lián)機(jī)情形,若real server故障,該主機(jī)亦會(huì)從監(jiān)視窗口中消失。 d.激活備份主機(jī)之pulse daemon (執(zhí)行# /etc/rc.d/init.d/pulse start)。 至此,HA功能已經(jīng)激活,備份主機(jī)及virtual server由pulse daemon定時(shí)相互探詢(xún),一但virtual server故障,備份主機(jī)立刻激活代替;至virtual server 正常上線(xiàn)后隨即將工作交還virtual server。 LVS測(cè)試 經(jīng)過(guò)了上面的配置步驟,現(xiàn)在可以測(cè)試LVS了,步驟如下: 1. 分別在vs1,real1,real2上運(yùn)行/etc/lvs/rc.lvs_dr。注意,real1,real2上面的/etc/lvs 目錄是vs2輸出的。如果您的NFS配置沒(méi)有成功,也可以把vs1上/etc/lvs/rc.lvs_dr復(fù)制到real1,real2上,然后分別運(yùn)行。確保real1,real2上面的apache已經(jīng)啟動(dòng)并且允許telnet。 2. 測(cè)試Telnet:從client運(yùn)行telnet 10.0.0.2, 如果登錄后看到如下輸出就說(shuō)明集群已經(jīng)開(kāi)始工作了:(假設(shè)以guest用戶(hù)身份登錄) [guest@real1 guest]$——說(shuō)明已經(jīng)登錄到服務(wù)器real1上。 再開(kāi)啟一個(gè)telnet窗口,登錄后會(huì)發(fā)現(xiàn)系統(tǒng)提示變?yōu)椋?br /> [guest@real2 guest]$——說(shuō)明已經(jīng)登錄到服務(wù)器real2上。 3. 測(cè)試http:從client運(yùn)行iexplore [url]http://10.0.0.2[/url] 因?yàn)樵趓eal1 和real2 上面的測(cè)試頁(yè)不同,所以登錄幾次之后,顯示出的頁(yè)面也會(huì)有所不同,這樣說(shuō)明real server 已經(jīng)在正常工作了。 億恩科技mszdt.com 如有意者 聯(lián)系海洋QQ1359731023 電話(huà)0371-63322216 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |