NLB定義
NLB全稱(chēng)是Network Load Balancing。即網(wǎng)絡(luò)負(fù)載均衡。是在支持應(yīng)用程序的資源池中平均分配網(wǎng)絡(luò)流量的一種方法?,F(xiàn)代應(yīng)用程序必須同時(shí)處理數(shù)百萬(wàn)用戶,并以快速、可靠的方式將正確的文本、視頻、圖像和其他數(shù)據(jù)返回給每個(gè)用戶。為了處理如此高的流量,大多數(shù)應(yīng)用程序都有許多資源服務(wù)器,它們之間包含很多重復(fù)數(shù)據(jù)。NLB器是位于用戶與服務(wù)器組之間的設(shè)備,充當(dāng)不可見(jiàn)的協(xié)調(diào)者,確保均等使用所有資源服務(wù)器。
NLB有哪些優(yōu)勢(shì)?
NLB可以定向和控制應(yīng)用程序服務(wù)器與其訪客或客戶端之間的互聯(lián)網(wǎng)流量。因此,它可提高應(yīng)用程序的可用性、可擴(kuò)展性、安全性和性能。
應(yīng)用程序可用性
服務(wù)器故障或維護(hù)可能會(huì)增加應(yīng)用程序停機(jī)時(shí)間,使訪客無(wú)法訪問(wèn)您的應(yīng)用程序。NLB器可以通過(guò)以下方式提高您的系統(tǒng)的容錯(cuò)能力:自動(dòng)檢測(cè)服務(wù)器問(wèn)題并將客戶端流量重定向到可用服務(wù)器。您可以使用NLB來(lái)簡(jiǎn)化以下任務(wù):
運(yùn)行應(yīng)用程序服務(wù)器維護(hù)或升級(jí)而無(wú)需使應(yīng)用程序停機(jī)
為備份站點(diǎn)提供自動(dòng)災(zāi)難恢復(fù)
執(zhí)行運(yùn)行狀況檢查并防止出現(xiàn)可能導(dǎo)致停機(jī)的問(wèn)題
應(yīng)用程序可擴(kuò)展性
您可以使用NLB器在多個(gè)服務(wù)器之間智能地定向網(wǎng)絡(luò)流量。您的應(yīng)用程序可以處理數(shù)千個(gè)客戶端請(qǐng)求,因?yàn)镹LB會(huì)執(zhí)行以下操作:
防止任何一臺(tái)服務(wù)器出現(xiàn)流量瓶頸
預(yù)測(cè)應(yīng)用程序流量,以便您可以在需要時(shí)添加或移除不同服務(wù)器
為您的系統(tǒng)增加冗余度,使您可以放心擴(kuò)展
應(yīng)用程序安全
NLB器具有多項(xiàng)內(nèi)置的安全功能,可為您的互聯(lián)網(wǎng)應(yīng)用程序的安全保駕護(hù)航。它們是應(yīng)對(duì)分布式拒絕服務(wù)攻擊的有用工具,在這種攻擊中,攻擊者會(huì)用數(shù)百萬(wàn)個(gè)并發(fā)請(qǐng)求淹沒(méi)應(yīng)用程序服務(wù)器,從而導(dǎo)致服務(wù)器故障。NLB器還可以執(zhí)行以下操作:
監(jiān)控流量并阻止惡意內(nèi)容
將攻擊流量自動(dòng)重定向到多個(gè)后端服務(wù)器,以最大限度減少影響
通過(guò)一組網(wǎng)絡(luò)防火墻路由流量,以提高安全性
應(yīng)用程序性能
NLB器通過(guò)增加響應(yīng)時(shí)間和減少網(wǎng)絡(luò)延遲來(lái)提高應(yīng)用程序性能。它們可以執(zhí)行諸如以下幾項(xiàng)關(guān)鍵任務(wù):
在服務(wù)器之間平均分配負(fù)載以提高應(yīng)用程序性能
將客戶端請(qǐng)求重定向到地理位置較近的服務(wù)器以減少延遲
確保物理和虛擬計(jì)算資源的可靠性和性能
NLB的工作原理
公司通常在多臺(tái)服務(wù)器上運(yùn)行其應(yīng)用程序。這種服務(wù)器安排稱(chēng)為服務(wù)器場(chǎng)。用戶對(duì)應(yīng)用程序的請(qǐng)求首先轉(zhuǎn)到NLB器。然后,NLB器會(huì)將每個(gè)請(qǐng)求路由到服務(wù)器場(chǎng)中最適合處理該請(qǐng)求的單個(gè)服務(wù)器。
NLB就像餐廳經(jīng)理所做的工作一樣。考慮一家有五名服務(wù)員的餐廳。如果允許顧客選擇服務(wù)員,那么一個(gè)或兩個(gè)服務(wù)員可能會(huì)超負(fù)荷工作,而其他服務(wù)員則處于閑置狀態(tài)。為了避免這種情況,餐廳經(jīng)理將顧客分配給最適合為他們提供服務(wù)的特定服務(wù)員。
什么是NLB算法
NLB算法是一組規(guī)則,NLB器遵循這些規(guī)則來(lái)確定最適合每個(gè)不同客戶端請(qǐng)求的服務(wù)器。NLB算法分為兩個(gè)主要類(lèi)別。
靜態(tài)NLB
靜態(tài)NLB算法遵循固定規(guī)則,與當(dāng)前服務(wù)器狀態(tài)無(wú)關(guān)。以下是靜態(tài)NLB的示例。
循環(huán)法
服務(wù)器的 IP 地址通知客戶端將請(qǐng)求發(fā)往何處。IP 地址是一串很難記住的長(zhǎng)數(shù)字。為了簡(jiǎn)單起見(jiàn),域名系統(tǒng)將網(wǎng)站名稱(chēng)映射到服務(wù)器。當(dāng)您在瀏覽器中輸入 aws.amazon.com 時(shí),請(qǐng)求將首先發(fā)送到我們的名稱(chēng)服務(wù)器,該服務(wù)器會(huì)將我們的 IP 地址返回給您的瀏覽器。
在循環(huán)法中,權(quán)威性名稱(chēng)服務(wù)器(而不是專(zhuān)用硬件或軟件)執(zhí)行NLB。該名稱(chēng)服務(wù)器輪流或以循環(huán)方式返回服務(wù)器場(chǎng)中不同服務(wù)器的 IP 地址。
加權(quán)循環(huán)法
在加權(quán)循環(huán)NLB中,您可以根據(jù)服務(wù)器的優(yōu)先級(jí)或容量為每臺(tái)服務(wù)器分配不同權(quán)重。權(quán)重較高的服務(wù)器將從名稱(chēng)服務(wù)器接收更多的傳入應(yīng)用程序流量。
IP 哈希法
在 IP 哈希法中,NLB器將對(duì)客戶端 IP 地址執(zhí)行名為哈希的數(shù)學(xué)計(jì)算。它將客戶端 IP 地址轉(zhuǎn)換為數(shù)字,然后將該數(shù)字映射到各個(gè)服務(wù)器。
動(dòng)態(tài)NLB
動(dòng)態(tài)NLB算法將在分配流量之前檢查服務(wù)器的當(dāng)前狀態(tài)。以下是動(dòng)態(tài)NLB算法的一些示例。
最少連接法
連接是客戶端與服務(wù)器之間的開(kāi)放通信渠道。當(dāng)客戶端向服務(wù)器發(fā)送第一個(gè)請(qǐng)求時(shí),客戶端將進(jìn)行身份驗(yàn)證,并在彼此之間建立活動(dòng)連接。在最少連接法中,NLB器將檢查哪些服務(wù)器的活動(dòng)連接最少,并將流量發(fā)送到這些服務(wù)器。此方法假定所有連接均要求所有服務(wù)器具有相同處理能力。
加權(quán)最小連接法
加權(quán)最小連接算法假定某些服務(wù)器可以處理比其他服務(wù)器更多的活動(dòng)連接。因此,您可以為每臺(tái)服務(wù)器分配不同的權(quán)重或容量,NLB器會(huì)將新的客戶端請(qǐng)求發(fā)送到按容量計(jì)算連接最少的服務(wù)器。
最短響應(yīng)時(shí)間法
響應(yīng)時(shí)間是服務(wù)器處理傳入請(qǐng)求和發(fā)送響應(yīng)所花費(fèi)的總時(shí)間。最短響應(yīng)時(shí)間法會(huì)將服務(wù)器響應(yīng)時(shí)間與活動(dòng)連接相結(jié)合,以確定最佳服務(wù)器。NLB器使用此算法來(lái)確保為所有用戶提供更快的服務(wù)。
基于資源的方法
在基于資源的方法中,NLB器通過(guò)分析當(dāng)前服務(wù)器負(fù)載來(lái)分配流量。稱(chēng)為代理的專(zhuān)用軟件在每臺(tái)服務(wù)器上運(yùn)行,并計(jì)算服務(wù)器資源的使用情況,如其計(jì)算容量和內(nèi)存。然后,NLB器將先檢查代理是否有足夠的可用資源,然后再將流量分配給該服務(wù)器。
NLB有哪些類(lèi)型
我們可以將NLB分為三個(gè)主要類(lèi)別,具體取決于NLB器為了重定向流量而檢查客戶端請(qǐng)求中的哪些內(nèi)容。
應(yīng)用程序NLB
復(fù)雜的現(xiàn)代應(yīng)用程序擁有多個(gè)服務(wù)器場(chǎng),其中包含多個(gè)專(zhuān)用于單個(gè)應(yīng)用程序功能的服務(wù)器。應(yīng)用程序NLB器會(huì)查看請(qǐng)求內(nèi)容(如 HTTP 標(biāo)頭或 SSL 會(huì)話 ID)以重定向流量。
例如,電子商務(wù)應(yīng)用程序具有產(chǎn)品目錄、購(gòu)物車(chē)和結(jié)賬功能。應(yīng)用程序NLB器會(huì)將瀏覽產(chǎn)品的請(qǐng)求發(fā)送給包含圖像和視頻但不需要保持開(kāi)放連接的服務(wù)器。相比之下,它會(huì)將購(gòu)物車(chē)請(qǐng)求發(fā)送給能夠保持多個(gè)客戶端連接并長(zhǎng)時(shí)間保存購(gòu)物車(chē)數(shù)據(jù)的服務(wù)器。
網(wǎng)絡(luò)NLB
網(wǎng)絡(luò)NLB器會(huì)檢查 IP 地址和其他網(wǎng)絡(luò)信息,以最佳方式重定向流量。它們將跟蹤應(yīng)用程序流量的來(lái)源,并可以將一個(gè)靜態(tài) IP 地址分配給多個(gè)服務(wù)器。網(wǎng)絡(luò)NLB器使用前面介紹的靜態(tài)和動(dòng)態(tài)NLB算法來(lái)均衡服務(wù)器負(fù)載。
全局服務(wù)器NLB
全局服務(wù)器NLB可跨地理位置分散的多個(gè)服務(wù)器進(jìn)行。例如,很多公司可能在不同國(guó)家/地區(qū)的多個(gè)數(shù)據(jù)中心以及全球的第三方云提供商中擁有服務(wù)器。在這種情況下,本地NLB器將管理某一地區(qū)或區(qū)域內(nèi)的應(yīng)用程序負(fù)載。這些NLB器會(huì)嘗試將流量重定向到地理位置更接近客戶端的服務(wù)器目標(biāo)。只有在服務(wù)器出現(xiàn)故障的情況下,這些NLB器才會(huì)將流量重定向到客戶端所在地理區(qū)域之外的服務(wù)器。
DNS NLB
在 DNS NLB中,您可以將域配置為跨域上的資源池路由網(wǎng)絡(luò)請(qǐng)求。域可以對(duì)應(yīng)于網(wǎng)站、郵件系統(tǒng)、打印服務(wù)器或可通過(guò)互聯(lián)網(wǎng)訪問(wèn)的其他服務(wù)。DNS NLB有助于在全球分布的資源池中保持應(yīng)用程序可用性以及均衡網(wǎng)絡(luò)流量。
NLB技術(shù)有哪些類(lèi)型?
NLB器屬于以下兩種類(lèi)型之一:硬件NLB器和軟件NLB器。
硬件NLB器
基于硬件的NLB器是一種硬件設(shè)備,可以安全地處理千兆字節(jié)的流量并將其重定向到數(shù)百個(gè)不同的服務(wù)器。您可以將其存儲(chǔ)在數(shù)據(jù)中心,并使用虛擬化創(chuàng)建多個(gè)可以集中管理的數(shù)字或虛擬NLB器。
軟件NLB器
基于軟件的NLB器是執(zhí)行所有NLB功能的應(yīng)用程序。您可以將它們安裝在任何服務(wù)器上,也可作為完全托管的第三方服務(wù)的形式訪問(wèn)。
硬件NLB器與軟件NLB器的比較
硬件NLB器需要初始投資、配置和持續(xù)維護(hù)。您也可能不會(huì)滿負(fù)荷使用它們,尤其是您購(gòu)買(mǎi)硬件NLB器只是為了處理高峰時(shí)段的流量高峰。如果流量突然增加到超出其當(dāng)前容量,這將影響用戶,直到您能購(gòu)買(mǎi)并設(shè)置另一個(gè)NLB器為止。
相比之下,基于軟件的NLB器要靈活得多。它們可以輕松地縱向擴(kuò)展或縮減,并且與現(xiàn)代云計(jì)算環(huán)境更加兼容。隨著時(shí)間推移,它們的設(shè)置、管理和使用成本也會(huì)降低。