<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          LVS系列教程02-LVS體系結(jié)構(gòu)

          共 9435字,需瀏覽 19分鐘

           ·

          2021-07-09 19:19

          關(guān)注「開源Linux」,選擇“設(shè)為星標(biāo)”
          回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~

          目錄

          前言

          人類社會(huì)正在進(jìn)入以網(wǎng)絡(luò)為中心的信息時(shí)代,人們需要更快捷、更可靠、功能更豐富的網(wǎng)絡(luò)服務(wù)。萬(wàn)維網(wǎng)的流行促進(jìn)互聯(lián)網(wǎng)使用的指數(shù)級(jí)增長(zhǎng),現(xiàn)在很多站點(diǎn)收到前所未有的訪問負(fù)載,經(jīng)常擔(dān)心系統(tǒng)如何被擴(kuò)展來(lái)滿足不斷增長(zhǎng)的性能需求,同時(shí)系統(tǒng)如何保持 7x24 的可用性。未來(lái)的應(yīng)用將需要更高的吞吐率、更好的交互性、更高的安全性,這要求服務(wù)平臺(tái)具有更強(qiáng)的處理能力和更高的可用性。所以,如何給出合理的框架和有效的設(shè)計(jì)方法,來(lái)建立高性能、高可伸縮、高可用的網(wǎng)絡(luò)服務(wù),這是擺在研究者和系統(tǒng)設(shè)計(jì)者面前極富挑戰(zhàn)性的任務(wù)。

          一、可伸縮網(wǎng)絡(luò)服務(wù)的定義

          可伸縮性(Scalability)是在當(dāng)今計(jì)算機(jī)技術(shù)中經(jīng)常用到的詞匯。對(duì)于不同的人,可伸縮性有不同的含義。現(xiàn)在,我們來(lái)定義可伸縮網(wǎng)絡(luò)服務(wù)的含義。

          可伸縮網(wǎng)絡(luò)服務(wù)是指網(wǎng)絡(luò)服務(wù)能隨著用戶數(shù)目的增長(zhǎng)而擴(kuò)展其性能,如在系統(tǒng)中增加服務(wù)器、內(nèi)存或硬盤等;整個(gè)系統(tǒng)很容易被擴(kuò)展,無(wú)需重新設(shè)置整個(gè)系統(tǒng),無(wú)需中斷服務(wù)。換句話說(shuō),系統(tǒng)管理員擴(kuò)展系統(tǒng)的操作對(duì)最終用戶是透明的,他們不會(huì)知道系統(tǒng)的改變。

          可伸縮系統(tǒng)通常是高可用的系統(tǒng)。在部分硬件(如硬盤、服務(wù)器、子網(wǎng)絡(luò))和部分軟件(如操作系統(tǒng)、服務(wù)進(jìn)程)的失效情況下,系統(tǒng)可以繼續(xù)提供服務(wù),最終用戶不會(huì)感知到整個(gè)服務(wù)的中斷,除了正在失效點(diǎn)上處理請(qǐng)求的部分用戶可能會(huì)收到服務(wù)處理失敗,需要重新提交請(qǐng)求。Caching和復(fù)制是建立高可用系統(tǒng)的常用技術(shù),建立多個(gè)副本會(huì)導(dǎo)致如何將原件的修改傳播到多個(gè)副本上的問題。

          實(shí)現(xiàn)可伸縮網(wǎng)絡(luò)服務(wù)的方法一般是通過(guò)一對(duì)多的映射機(jī)制,將服務(wù)請(qǐng)求流分而治之(Divide and Conquer)到多個(gè)結(jié)點(diǎn)上處理。一對(duì)多的映射可以在很多層次上存在,如主機(jī)名上的DNS系統(tǒng)、網(wǎng)絡(luò)層的TCP/IP、文件系統(tǒng)等。虛擬(Virtual)是描述一對(duì)多映射機(jī)制的詞匯,將多個(gè)實(shí)體組成一個(gè)邏輯上的、虛擬的整體。例如,虛存(Virtual Memory)是現(xiàn)代操作系統(tǒng)中最典型的一對(duì)多映射機(jī)制,虛存建立一個(gè)虛擬內(nèi)存空間,將它映射到多個(gè)物理內(nèi)存上。

          二、網(wǎng)絡(luò)服務(wù)的需求

          隨著Internet的飛速發(fā)展和對(duì)我們生活的深入影響,越來(lái)越多的企業(yè)把他們與顧客和業(yè)務(wù)伙伴之間的聯(lián)絡(luò)搬到互聯(lián)網(wǎng)上,通過(guò)網(wǎng)絡(luò)來(lái)完成交易,建立與客戶之間的聯(lián)系。例如,比較熱門的Web站點(diǎn)會(huì)因?yàn)楸辉L問次數(shù)急劇增長(zhǎng)而不能及時(shí)處理用戶的請(qǐng)求,導(dǎo)致用戶進(jìn)行長(zhǎng)時(shí)間的等待,大大降低了服務(wù)質(zhì)量。另外,隨著電子商務(wù)等關(guān)鍵性應(yīng)用在網(wǎng)上運(yùn)行,任何例外的服務(wù)中斷都將造成不可估量的損失,服務(wù)的高可用性也越來(lái)越重要。所以,對(duì)用硬件和軟件方法實(shí)現(xiàn)高可伸縮、高可用網(wǎng)絡(luò)服務(wù)的需求不斷增長(zhǎng),這種需求可以歸結(jié)以下幾點(diǎn):

          可伸縮性(Scalability)

          當(dāng)服務(wù)的負(fù)載增長(zhǎng)時(shí),系統(tǒng)能被擴(kuò)展來(lái)滿足需求,且不降低服務(wù)質(zhì)量。

          高可用性(Availability)

          盡管部分硬件和軟件會(huì)發(fā)生故障,整個(gè)系統(tǒng)的服務(wù)必須7*24可用。

          可管理性(Manageability)

          整個(gè)系統(tǒng)可能在物理上很大,但應(yīng)該容易管理。

          價(jià)格有效性(Cost-effectiveness)

          整個(gè)系統(tǒng)實(shí)現(xiàn)是經(jīng)濟(jì)的、易支付的。

          單服務(wù)器顯然不能處理不斷增長(zhǎng)的負(fù)載,升級(jí)方法有下列不足:

          • 一是升級(jí)過(guò)程繁瑣,機(jī)器切換會(huì)使服務(wù)暫時(shí)中斷,并造成原有計(jì)算資源的浪費(fèi)。
          • 二是越往高端的服務(wù)器,所花費(fèi)的代價(jià)越大。
          • 三是一旦該服務(wù)器或應(yīng)用軟件失效,會(huì)導(dǎo)致整個(gè)服務(wù)的中斷。

          通過(guò)高性能網(wǎng)絡(luò)或局域網(wǎng)互聯(lián)的服務(wù)器集群正成為實(shí)現(xiàn)高可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的有效結(jié)構(gòu)。這種松耦合結(jié)構(gòu)比緊耦合的多處理器系統(tǒng)具有更好的伸縮性和性能價(jià)格比,組成集群的PC服務(wù)器或RISC服務(wù)器和標(biāo)準(zhǔn)網(wǎng)絡(luò)設(shè)備因?yàn)榇笠?guī)模生產(chǎn),價(jià)格低,具有很高的性能價(jià)格比。但是,這里有很多挑戰(zhàn)性的工作,如何在集群系統(tǒng)實(shí)現(xiàn)并行網(wǎng)絡(luò)服務(wù),它對(duì)外是透明的,它具有良好的可伸縮性和可用性。

          針對(duì)上述需求,我們給出了基于 IP 層和基于內(nèi)容請(qǐng)求分發(fā)的負(fù)載平衡調(diào)度解決方法,并在Linux內(nèi)核中實(shí)現(xiàn)了這些方法,將一組服務(wù)器構(gòu)成一個(gè)實(shí)現(xiàn)可伸縮的、高可用網(wǎng)絡(luò)服務(wù)的服務(wù)器集群,我們稱之為L(zhǎng)inux虛擬服務(wù)器(Linux Virtual Server)。在LVS集群中,使得服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,客戶訪問集群提供的網(wǎng)絡(luò)服務(wù)就像訪問一臺(tái)高性能、高可用的服務(wù)器一樣。客戶程序不受服務(wù)器集群的影響不需作任何修改。系統(tǒng)的伸縮性通過(guò)在服務(wù)機(jī)群中透明地加入和刪除一個(gè)節(jié)點(diǎn)來(lái)達(dá)到,通過(guò)檢測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)達(dá)到高可用性。

          三、LVS 集群的體系結(jié)構(gòu)

          下面先給出LVS集群的通用結(jié)構(gòu),討論了它的設(shè)計(jì)原則和相應(yīng)的特點(diǎn),然后將LVS集群應(yīng)用于建立可伸縮的Web、Media、CacheMail等服務(wù)。

          3.1 LVS 集群的通用結(jié)構(gòu)

          LVS集群采用IP 負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器。

          為此,在設(shè)計(jì)時(shí)需要考慮系統(tǒng)的透明性、可伸縮性、高可用性和易管理性。LVS集群的體系結(jié)構(gòu)如圖所示,它有三個(gè)主要組成部分:

          • 負(fù)載調(diào)度器(load balancer)

          負(fù)載調(diào)度器是整個(gè)集群對(duì)外面的前端機(jī),負(fù)責(zé)將客戶的請(qǐng)求發(fā)送到一組服務(wù)器上執(zhí)行,而客戶認(rèn)為服務(wù)是來(lái)自一個(gè)IP地址上的。它可以是用IP 負(fù)載均衡技術(shù)的負(fù)載調(diào)度器,也可以是基于內(nèi)容請(qǐng)求分發(fā)的負(fù)載調(diào)度器,還可以是兩者的結(jié)合。

          • 服務(wù)器池(server pool)

          服務(wù)器池是一組真正執(zhí)行客戶請(qǐng)求的服務(wù)器,執(zhí)行的服務(wù)有WEB、MAIL、FTP和DNS等。

          • 后端存儲(chǔ)(backend storage)

          后端存儲(chǔ)為服務(wù)器池提供一個(gè)共享的存儲(chǔ)區(qū),這樣很容易使得服務(wù)器池?fù)碛邢嗤膬?nèi)容,提供相同的服務(wù)。

          調(diào)度器采用 IP 負(fù)載均衡技術(shù)、基于內(nèi)容請(qǐng)求分發(fā)技術(shù)或者兩者相結(jié)合。在IP 負(fù)載均衡技術(shù)中,需要服務(wù)器池?fù)碛邢嗤膬?nèi)容提供相同的服務(wù)。當(dāng)客戶請(qǐng)求到達(dá)時(shí),調(diào)度器只根據(jù)負(fù)載情況從服務(wù)器池中選出一個(gè)服務(wù)器,將該請(qǐng)求轉(zhuǎn)發(fā)到選出的服務(wù)器,并記錄這個(gè)調(diào)度;當(dāng)這個(gè)請(qǐng)求的其他報(bào)文到達(dá),也會(huì)被轉(zhuǎn)發(fā)到前面選出的服務(wù)器。在基于內(nèi)容請(qǐng)求分發(fā)技術(shù)中,服務(wù)器可以提供不同的服務(wù),當(dāng)客戶請(qǐng)求到達(dá)時(shí),調(diào)度器可根據(jù)請(qǐng)求的內(nèi)容和服務(wù)器的情況選擇服務(wù)器執(zhí)行請(qǐng)求。因?yàn)樗械牟僮鞫际窃诓僮飨到y(tǒng)核心空間中將完成的,它的調(diào)度開銷很小,所以它具有很高的吞吐率。

          服務(wù)器池的結(jié)點(diǎn)數(shù)目是可變的。當(dāng)整個(gè)系統(tǒng)收到的負(fù)載超過(guò)目前所有結(jié)點(diǎn)的處理能力時(shí),可以在服務(wù)器池中增加服務(wù)器來(lái)滿足不斷增長(zhǎng)的請(qǐng)求負(fù)載。對(duì)大多數(shù)網(wǎng)絡(luò)服務(wù)來(lái)說(shuō),結(jié)點(diǎn)與結(jié)點(diǎn)間不存在很強(qiáng)的相關(guān)性,所以整個(gè)系統(tǒng)的性能可以隨著服務(wù)器池的結(jié)點(diǎn)數(shù)目增加而線性增長(zhǎng)。

          后端存儲(chǔ)通常用容錯(cuò)的分布式文件系統(tǒng),如AFS、GFS、CodaIntermezzo等。分布式文件系統(tǒng)為各服務(wù)器提供共享的存儲(chǔ)區(qū),它們?cè)L問分布式文件系統(tǒng)就像訪問本地文件系統(tǒng)一樣。同時(shí),分布式文件系統(tǒng)提供良好的伸縮性和可用性。然而,當(dāng)不同服務(wù)器上的應(yīng)用程序同時(shí)訪問分布式文件系統(tǒng)上同一資源時(shí),應(yīng)用程序的訪問沖突需要消解才能使得資源處于一致狀態(tài)。這需要一個(gè)分布式鎖管理器(Distributed Lock Manager),它可能是分布式文件系統(tǒng)內(nèi)部提供的,也可能是外部的。開發(fā)者在寫應(yīng)用程序時(shí),可以使用分布式鎖管理器來(lái)保證應(yīng)用程序在不同結(jié)點(diǎn)上并發(fā)訪問的一致性。

          負(fù)載調(diào)度器、服務(wù)器池和分布式文件系統(tǒng)通過(guò)高速網(wǎng)絡(luò)相連,如100Mbps交換機(jī)、Myrinet、CompactNET和Gigabit交換機(jī)等。使用高速的網(wǎng)絡(luò),主要為避免當(dāng)系統(tǒng)規(guī)模擴(kuò)大時(shí)互聯(lián)網(wǎng)絡(luò)成為瓶頸。

          為什么使用層次的體系結(jié)構(gòu)呢?

          層次的體系結(jié)構(gòu)可以使得層與層之間相互獨(dú)立,允許在一個(gè)層次的已有軟件在不同的系統(tǒng)中被重用。例如,調(diào)度器層提供了負(fù)載平衡、可伸縮性和高可用性等,在服務(wù)器層可以運(yùn)行不同的網(wǎng)絡(luò)服務(wù),如Web、Cache、Mail和Media等,來(lái)提供不同的可伸縮網(wǎng)絡(luò)服務(wù)。

          為什么使用共享存儲(chǔ)呢?

          共享存儲(chǔ)如分布式文件系統(tǒng)在這個(gè)LVS集群系統(tǒng)是可選項(xiàng)。當(dāng)網(wǎng)絡(luò)服務(wù)需要有相同的內(nèi)容,共享存儲(chǔ)是很好的選擇,否則每臺(tái)服務(wù)器需要將相同的內(nèi)容復(fù)制到本地硬盤上。當(dāng)系統(tǒng)存儲(chǔ)的內(nèi)容越多,這種不共享結(jié)構(gòu)的代價(jià)越大,因?yàn)槊颗_(tái)服務(wù)器需要一樣大的存儲(chǔ)空間,所有的更新需要涉及到每臺(tái)服務(wù)器,系統(tǒng)的維護(hù)代價(jià)也很高。共享存儲(chǔ)為服務(wù)器組提供統(tǒng)一的存儲(chǔ)空間,這使得系統(tǒng)的維護(hù)工作比較輕松。

          為什么需要高可用性呢?
          • 集群系統(tǒng)的特點(diǎn)是它在軟硬件上都有冗余。系統(tǒng)的高可用性可以通過(guò)檢測(cè)節(jié)點(diǎn)或服務(wù)進(jìn)程故障和正確地重置系統(tǒng)來(lái)實(shí)現(xiàn),使得系統(tǒng)收到的請(qǐng)求能被存活的結(jié)點(diǎn)處理。通常,我們?cè)谡{(diào)度器上有資源監(jiān)視進(jìn)程來(lái)時(shí)刻監(jiān)視各個(gè)服務(wù)器結(jié)點(diǎn)的健康狀況,當(dāng)服務(wù)器對(duì)ICMP ping不可達(dá)時(shí)或者它的網(wǎng)絡(luò)服務(wù)在指定的時(shí)間沒有響應(yīng)時(shí),資源監(jiān)視進(jìn)程通知操作系統(tǒng)內(nèi)核將該服務(wù)器從調(diào)度列表中刪除或者失效。這樣,新的服務(wù)請(qǐng)求就不會(huì)被調(diào)度到壞的結(jié)點(diǎn)。資源監(jiān)測(cè)程序能通過(guò)電子郵件或傳呼機(jī)向管理員報(bào)告故障,一旦監(jiān)測(cè)到服務(wù)進(jìn)程恢復(fù)工作,通知調(diào)度器將其加入調(diào)度列表進(jìn)行調(diào)度。

          • 現(xiàn)在前端的調(diào)度器有可能成為系統(tǒng)的單一失效點(diǎn)。為了避免調(diào)度器失效導(dǎo)致整個(gè)系統(tǒng)不能工作,我們需要設(shè)立調(diào)度器的備份。兩個(gè)心跳進(jìn)程(兩個(gè)心跳進(jìn)程)分別在主、從調(diào)度器上運(yùn)行,它們通過(guò)串口線和UDP等心跳線來(lái)相互匯報(bào)各自的健康情況。當(dāng)從調(diào)度器不能聽得主調(diào)度器的心跳時(shí),從調(diào)度器會(huì)接管主調(diào)度器的工作來(lái)提供負(fù)載調(diào)度服務(wù)。這里,一般通過(guò)ARP 欺騙來(lái)接管集群的虛擬 IP 地址。

          • 當(dāng)主調(diào)度器恢復(fù)時(shí),這里有兩種方法,一是主調(diào)度器自動(dòng)變成從調(diào)度器,二是從調(diào)度器釋放虛擬 IP 地址,主調(diào)度器收回虛擬 IP 地址并提供負(fù)載調(diào)度服務(wù)。然而,當(dāng)主調(diào)度器故障后或者接管后,會(huì)導(dǎo)致已有的調(diào)度信息丟失,這需要客戶程序重新發(fā)送請(qǐng)求。

          Graphic Monitor是為系統(tǒng)管理員提供整個(gè)集群系統(tǒng)的監(jiān)視器,它可以監(jiān)視系統(tǒng)中每個(gè)結(jié)點(diǎn)的狀況。Graphic Monitor是基于瀏覽器的,所以無(wú)論管理員在本地還是異地都可以監(jiān)測(cè)系統(tǒng)的狀況。為了安全的原因,瀏覽器要通過(guò)HTTPS協(xié)議和身份認(rèn)證后,才能進(jìn)行系統(tǒng)監(jiān)測(cè),并進(jìn)行系統(tǒng)的配置和管理。

          3.2 可伸縮 Web 和媒體服務(wù)

          基于LVS可伸縮Web和媒體服務(wù)的體系結(jié)構(gòu)所示:在前端是一個(gè)負(fù)載調(diào)度器,一般采用IP負(fù)載均衡技術(shù)來(lái)獲得整個(gè)系統(tǒng)的高吞吐率;在第二層是Web 服務(wù)器池,Web服務(wù)和媒體服務(wù)分別運(yùn)行在每個(gè)結(jié)點(diǎn)上;第三層是數(shù)據(jù)存儲(chǔ),通過(guò)分布式文件系統(tǒng)使得每個(gè)服務(wù)器結(jié)點(diǎn)共享相同的數(shù)據(jù)。集群中節(jié)點(diǎn)間是通過(guò)高速網(wǎng)絡(luò)相連的。

          分布式文件系統(tǒng)提供統(tǒng)一的存儲(chǔ)空間,這使得系統(tǒng)的維護(hù)工作比較方便,且系統(tǒng)運(yùn)行比較高效。當(dāng)所有服務(wù)器結(jié)點(diǎn)超載時(shí),管理員可以很快地加入新的結(jié)點(diǎn)來(lái)處理請(qǐng)求,而無(wú)需將Web文檔等復(fù)制到結(jié)點(diǎn)的本地硬盤上。Webmaster可以看到統(tǒng)一的文檔存儲(chǔ)空間,維護(hù)和更新頁(yè)面比較方便,對(duì)分布式文件系統(tǒng)中頁(yè)面的修改對(duì)所有的服務(wù)器都有效。大的媒體文件(如視頻文件)分段存儲(chǔ)在分布式文件系統(tǒng)的多個(gè)結(jié)點(diǎn)上,可以提高文件系統(tǒng)的性能和文件服務(wù)器間的負(fù)載均衡。

          IP 負(fù)載調(diào)度器(即VS/DR方法)可以分別將Web服務(wù)和媒體服務(wù)負(fù)載均衡地分發(fā)到各個(gè)服務(wù)器上,服務(wù)器將響應(yīng)數(shù)據(jù)直接返回給客戶,這樣可以極大地提高系統(tǒng)的吞吐率。

          3.3 可伸縮 Cache 服務(wù)

          有效的網(wǎng)絡(luò)Cache系統(tǒng)可以大大地減少網(wǎng)絡(luò)流量、降低響應(yīng)延時(shí)以及服務(wù)器的負(fù)載。但是,若Cache服務(wù)器超載而不能及時(shí)地處理請(qǐng)求,反而會(huì)增加響應(yīng)延時(shí)。所以,Cache服務(wù)的可伸縮性很重要,當(dāng)系統(tǒng)負(fù)載不斷增長(zhǎng)時(shí),整個(gè)系統(tǒng)能被擴(kuò)展來(lái)提高Cache服務(wù)的處理能力。尤其,在主干上的Cache服務(wù)可能需要幾個(gè)Gbps的吞吐率,單臺(tái)服務(wù)器遠(yuǎn)不能達(dá)到這個(gè)吞吐率。可見,通過(guò)PC服務(wù)器集群實(shí)現(xiàn)可伸縮Cache服務(wù)是很有效的方法,也是性能價(jià)格比最高的方法。

          基于LVS可伸縮Cache集群的體系結(jié)構(gòu)如圖所示:在前端是一個(gè)負(fù)載調(diào)度器,一般采用IP負(fù)載均衡技術(shù)來(lái)獲得整個(gè)系統(tǒng)的高吞吐率;在第二層是Cache 服務(wù)器池,一般Cache服務(wù)器放置在接近主干Internet連接處,它們可以分布在不同的網(wǎng)絡(luò)中。調(diào)度器可以有多個(gè),放在離客戶接近的地方,可實(shí)現(xiàn)透明的Cache服務(wù)。

          Cache 服務(wù)器采用本地硬盤來(lái)存儲(chǔ)可緩存的對(duì)象,因?yàn)榇鎯?chǔ)可緩存的對(duì)象是寫操作,且占有一定的比例,通過(guò)本地硬盤可以提高I/O的訪問速度。Cache服務(wù)器間有專用的多播通道,通過(guò)ICP協(xié)議(Internet Cache Protocol)來(lái)交互信息。當(dāng)一臺(tái)Cache服務(wù)器在本地硬盤中未命中當(dāng)前請(qǐng)求時(shí),它可以通過(guò)ICP查詢其他Cache服務(wù)器是否有請(qǐng)求對(duì)象的副本,若存在,則從鄰近的Cache服務(wù)器取該對(duì)象的副本,這樣可以進(jìn)一步提高Cache服務(wù)的命中率。

          3.4 可伸縮郵件服務(wù)

          隨著Internet用戶不斷增長(zhǎng),很多ISP面臨他們郵件服務(wù)器超載的問題。當(dāng)郵件服務(wù)器不能容納更多的用戶帳號(hào)時(shí),有些ISP買更高檔的服務(wù)器來(lái)代替原有的,將原有服務(wù)器的信息(如用戶郵件)遷移到新服務(wù)器是很繁瑣的工作,會(huì)造成服務(wù)的中斷;有些ISP設(shè)置新的服務(wù)器和新的郵件域名,新的郵件用戶放置在新的服務(wù)器上,如上海電信現(xiàn)在用不同的郵件服務(wù)器public1.sta.net.cn、public2.sta.net.cnpublic9.sta.net.cn放置用戶的郵件帳號(hào),這樣靜態(tài)地將用戶分割到不同的服務(wù)器上,會(huì)造成郵件服務(wù)器負(fù)載不平衡,系統(tǒng)的資源利用率低,對(duì)用戶來(lái)說(shuō)郵件的地址比較難記。

          可以利用LVS框架實(shí)現(xiàn)可伸縮郵件服務(wù)。它的體系結(jié)構(gòu)如圖所示:在前端是一個(gè)采用 IP 負(fù)載均衡技術(shù)的負(fù)載調(diào)度器;在第二層是服務(wù)器池,有LDAP(Light-weight Directory Access Protocol)服務(wù)器和一組郵件服務(wù)器。第三層是數(shù)據(jù)存儲(chǔ),通過(guò)分布式文件系統(tǒng)來(lái)存儲(chǔ)用戶的郵件。集群中結(jié)點(diǎn)間是通過(guò)高速網(wǎng)絡(luò)相連的。

          用戶的信息如用戶名、口令、主目錄和郵件容量限額等存儲(chǔ)在LDAP服務(wù)器中,可以通過(guò)HTTPS讓管理員進(jìn)行用戶管理。在各個(gè)郵件服務(wù)器上運(yùn)行SMTP、POP3、IMAP4和HTTP服務(wù)。SMTP接受和轉(zhuǎn)發(fā)用戶的郵件,SMTP服務(wù)進(jìn)程查詢LDAP服務(wù)器獲得用戶信息,再存儲(chǔ)郵件。POP3和IMAP4通過(guò)LDAP服務(wù)器獲得用戶信息,口令驗(yàn)證后,處理用戶的郵件訪問請(qǐng)求。SMTP、POP3和IMAP4服務(wù)進(jìn)程需要有機(jī)制避免用戶郵件的讀寫沖突。HTTP服務(wù)是讓用戶通過(guò)瀏覽器可以訪問郵件。負(fù)載調(diào)度器將四種服務(wù)請(qǐng)求負(fù)載均衡地調(diào)度到各個(gè)服務(wù)器上。

          系統(tǒng)中可能的瓶頸是LDAP服務(wù)器,對(duì)LDAP服務(wù)中B+樹的參數(shù)進(jìn)行優(yōu)化,再結(jié)合高端的服務(wù)器,可以獲得較高的性能。若分布式文件系統(tǒng)沒有多個(gè)存儲(chǔ)結(jié)點(diǎn)間的負(fù)載均衡機(jī)制,則需要相應(yīng)的郵件遷移機(jī)制來(lái)避免郵件訪問的傾斜。

          這樣,這個(gè)集群系統(tǒng)對(duì)用戶來(lái)說(shuō)就像一個(gè)高性能、高可靠的郵件服務(wù)器。當(dāng)郵件用戶不斷增長(zhǎng)時(shí),只要在集群中增加服務(wù)器結(jié)點(diǎn)和存儲(chǔ)結(jié)點(diǎn)。

          四、地理分布 LVS 集群的體系結(jié)構(gòu)

          由于互聯(lián)網(wǎng)用戶分布在世界各地,通過(guò)地理分布的服務(wù)器讓用戶訪問就近的服務(wù)器,來(lái)節(jié)省網(wǎng)絡(luò)流量和提高響應(yīng)速度。以下,我們給出地理分布的LVS集群系統(tǒng),通過(guò)BGP路由插入使得用戶訪問離他們最近的服務(wù)器集群,并提供服務(wù)器集群之間的負(fù)載平衡。

          4.1 體系結(jié)構(gòu)

          地理分布LVS集群的體系結(jié)構(gòu)如圖所示:有三個(gè)LVS集群系統(tǒng)分布在Internet上,他們一般放置在不同區(qū)域的Internet數(shù)據(jù)中心中,例如他們分別放在中國(guó)、美國(guó)和德國(guó)的三個(gè)不同的IDC中。三個(gè)LVS集群系統(tǒng)都有自己的分布式文件系統(tǒng),它們的內(nèi)容是相互復(fù)制的,提供相同的網(wǎng)絡(luò)服務(wù)。它們共享一個(gè)Virtual IP Address來(lái)提供網(wǎng)絡(luò)服務(wù)。當(dāng)用戶通過(guò)Virtual IP Address訪問網(wǎng)絡(luò)服務(wù),離用戶最近的LVS集群提供服務(wù)。例如,中國(guó)的用戶訪問在中國(guó)的LVS集群系統(tǒng),美國(guó)的用戶使用美國(guó)的LVS集群系統(tǒng),這一切對(duì)用戶來(lái)說(shuō)是透明的。

          地理分布LVS集群系統(tǒng)可以帶來(lái)以下好處:

          • 使得用戶訪問離他們最近的系統(tǒng),對(duì)用戶來(lái)說(shuō)體驗(yàn)到更快的響應(yīng)速度,對(duì)服務(wù)提供商來(lái)說(shuō)節(jié)約網(wǎng)絡(luò)帶寬,降低成本。

          • 避免災(zāi)難導(dǎo)致系統(tǒng)中止服務(wù)。當(dāng)一個(gè)地點(diǎn)發(fā)生地震、火災(zāi)等使得系統(tǒng)或者網(wǎng)絡(luò)連接癱瘓時(shí),所有的用戶訪問可以很快由其他地點(diǎn)的 LVS 集群來(lái)提供。除了已建立的連接中斷以外,這一切對(duì)用戶來(lái)說(shuō)都是透明的。

          4.2 基于 BGP 的集群調(diào)度

          基于 BGP 的地理分布服務(wù)器集群調(diào)度

          BGP(Border Gateway Protocol)是用于自治系統(tǒng)之間交換路由信息的協(xié)議,BGP可以設(shè)置路由策略,如政策、安全和經(jīng)濟(jì)上的考慮。

          我們可以利用BGP協(xié)議在Internet的BGP路由器插入到Virtual IP Address的路由信息。在不同區(qū)域的LVS集群向它附近的BGP路由器廣播到Virtual IP Address的路由信息,這樣就存在多條到Virtual IP Address的路徑,Internet的BGP路由器會(huì)根據(jù)評(píng)價(jià)函數(shù)選出最近的一條路徑。這樣,我們可以使得用戶訪問離他們最近的LVS集群。當(dāng)一個(gè)LVS集群系統(tǒng)失效時(shí),它的路由信息自然不會(huì)在Internet的BGP路由器中交換,BGP路由器會(huì)選擇其他到Virtual IP Address的路徑。這樣可以做到抗災(zāi)害性。

          下面我們舉一個(gè)基于BGP的地理分布服務(wù)器集群調(diào)度例子。測(cè)試的例子如圖所示,R11、R22分別在不同自治系統(tǒng)AS1和AS2中的Internet服務(wù)提供商,R31和R32表示在自治系統(tǒng)AS3中兩個(gè)ISP。兩個(gè)LVS集群系統(tǒng)分別放置在兩個(gè)不同數(shù)據(jù)中心IDC1和IDC2中,LB1和LB2分別是兩個(gè)LVS集群系統(tǒng)的負(fù)載調(diào)度器,它們對(duì)外提供網(wǎng)絡(luò)服務(wù)的IP地址為10.101.4.1。在第一個(gè)集群中,請(qǐng)求被調(diào)度到服務(wù)器10.101.5.11和10.101.5.12執(zhí)行。在第二個(gè)集群中,請(qǐng)求被調(diào)度到服務(wù)器10.101.6.11和10.101.6.12。10.101.4.1是在自治系統(tǒng)AS5的網(wǎng)絡(luò)10.101.4.0/24中。LB1上的BGP服務(wù)進(jìn)程將網(wǎng)絡(luò)10.101.4.0/24的路由信息廣播到鄰近的AS1,LB2上的BGP服務(wù)進(jìn)程將網(wǎng)絡(luò)10.101.4.0/24的路由信息廣播到鄰近的AS2中。

          我們?cè)赗31端口10.101.3.1相連的BGP路由器上查到AS5的自治系統(tǒng)路徑為3→1→5。在與R32端口10.101.3.9相連的BGP路由器上查到AS5的自治系統(tǒng)路徑為3→2→5,并在該路由器上訪問10.101.4.1上提供的Web服務(wù),是由服務(wù)器10.101.6.11處理的。當(dāng)我們關(guān)掉LB2后,在該BGP路由器上查到AS5的自治系統(tǒng)路徑變?yōu)?code style="font-size: 14px;word-wrap: break-word;border-radius: 4px;font-family: Operator Mono, Consolas, Monaco, Menlo, monospace;word-break: break-all;color: #9b6e23;background-color: #fff5e3;padding: 3px;margin: 3px;">3→1→5。

          4.3 服務(wù)器集群間的負(fù)載均衡

          通過(guò)BGP插入路由信息的方法可以使得用戶訪問鄰近的服務(wù)器集群,但是用戶訪問存在突發(fā)性,在某個(gè)區(qū)域的訪問高峰可能會(huì)導(dǎo)致該區(qū)域的服務(wù)器集群系統(tǒng)超載,而其他服務(wù)器集群系統(tǒng)可能處于低負(fù)載狀態(tài),這時(shí)與其將請(qǐng)求在超載系統(tǒng)上排隊(duì)等候,不如將請(qǐng)求送到遠(yuǎn)處的低負(fù)載系統(tǒng)上執(zhí)行,可以提高響應(yīng)速度。例如,中國(guó)用戶在白天時(shí)間的一段訪問高峰使得在中國(guó)的鏡像服務(wù)器集群系統(tǒng)超載,而此時(shí)美國(guó)是晚上時(shí)間其鏡像服務(wù)器集群系統(tǒng)處于低負(fù)載狀態(tài)。

          我們提出通過(guò)IP 隧道的方法將請(qǐng)求從一個(gè)調(diào)度器轉(zhuǎn)發(fā)到另一個(gè)調(diào)度器,再調(diào)度到真實(shí)服務(wù)器上執(zhí)行。下面將詳細(xì)描述如何通過(guò) IP 隧道作 IP 負(fù)載均衡調(diào)度。在通過(guò) IP 隧道轉(zhuǎn)發(fā)請(qǐng)求前,各個(gè)服務(wù)器集群需要定時(shí)交換負(fù)載信息(如 2 分鐘交換一次),當(dāng)確信遠(yuǎn)處的集群系統(tǒng)處于低負(fù)載狀態(tài),再轉(zhuǎn)發(fā)請(qǐng)求。例如,當(dāng)本地集群系統(tǒng)的綜合負(fù)載大于1.1和遠(yuǎn)處集群系統(tǒng)的負(fù)載小于0.7時(shí),調(diào)度器通過(guò) IP 隧道將新的請(qǐng)求轉(zhuǎn)發(fā)到遠(yuǎn)處的集群系統(tǒng)。若遠(yuǎn)處集群系統(tǒng)的負(fù)載超過(guò)0.7時(shí),停止轉(zhuǎn)發(fā)請(qǐng)求。當(dāng)本地集群系統(tǒng)的負(fù)載降至1.0時(shí),也停止轉(zhuǎn)發(fā)請(qǐng)求,由本地服務(wù)器處理。這樣,基本上可以避免兩個(gè)調(diào)度器間相互轉(zhuǎn)發(fā)一個(gè)請(qǐng)求。即使兩個(gè)調(diào)度器間相互轉(zhuǎn)發(fā)一個(gè)請(qǐng)求報(bào)文的例外情況發(fā)生,報(bào)文的TTL會(huì)降到零,報(bào)文被丟掉。

          五、總結(jié)

          我們分析了現(xiàn)在和將來(lái)網(wǎng)絡(luò)服務(wù)的需求,提出可伸縮網(wǎng)絡(luò)服務(wù)的體系結(jié)構(gòu),分為負(fù)載調(diào)度器、服務(wù)器池和后端存儲(chǔ)三層結(jié)構(gòu)。負(fù)載調(diào)度器采用 IP 負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。它的實(shí)現(xiàn)將在Linux操作系統(tǒng)進(jìn)行,將一組服務(wù)器組成一個(gè)高可伸縮的、高可用的服務(wù)器,故稱之為L(zhǎng)inux Virtual Server。它提供了負(fù)載平衡、可伸縮性和高可用性,可以應(yīng)用于建立很多可伸縮網(wǎng)絡(luò)服務(wù),如Web、Cache、Mail和Media等服務(wù)。

          在此基礎(chǔ)上,我們給出了地理分布的LVS集群系統(tǒng),通過(guò)BGP插入路由信息的方法可以使得用戶訪問鄰近的服務(wù)器集群,通過(guò) IP 隧道實(shí)現(xiàn)服務(wù)器集群間的負(fù)載均衡,進(jìn)一步提高響應(yīng)速度。地理分布的LVS集群系統(tǒng)可以節(jié)約網(wǎng)絡(luò)帶寬,改善網(wǎng)絡(luò)服務(wù)質(zhì)量,有很好的抗災(zāi)害性。

          文章作者: Escape

          鏈接: https://escapelife.github.io/posts/e26b997c.html



          往期推薦



          LVS系列教程01-集群技術(shù)

          服務(wù)部署-DNS域名解析服務(wù)配置

          OpenStack 與 Kubernetes 的共存

          服務(wù)部署-Samba服務(wù)器

          服務(wù)部署-NFS服務(wù)器

          Linux下實(shí)現(xiàn)MySQL每天自動(dòng)定時(shí)備份

          常用正則表達(dá)式最強(qiáng)整理(速查手冊(cè))

          關(guān)注「開源Linux」加星標(biāo),提升IT技能

          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月人人爱 | 亚洲人妻无码在线 | 久久精品免费 | 超碰日韩| 乱伦小说av |