Windows Server 2019 網(wǎng)絡(luò)負(fù)載均衡服務(wù)配置與管理(理論+網(wǎng)絡(luò)拓?fù)浼罢f(shuō)明)
介紹了負(fù)載均衡的基本概念(包括負(fù)載均衡的定義,有無(wú)負(fù)載均衡器的拓?fù)鋵?duì)比,負(fù)載均衡的工作原理,負(fù)載均衡的三要素),網(wǎng)絡(luò)負(fù)載均衡的特性,集群部署要求,網(wǎng)絡(luò)拓?fù)湟约罢f(shuō)明。
1. 負(fù)載均衡的基本概念1.1 負(fù)載均衡的定義Load balancing,將網(wǎng)絡(luò)請(qǐng)求或其他形式的負(fù)載“均攤”到不同的計(jì)算機(jī)上,達(dá)到最優(yōu)化資源使用、最大化吞吐率、最小化響應(yīng)時(shí)間和避免過(guò)載的目的。配置服務(wù)器負(fù)載均衡可以避免集群中部分服務(wù)器壓力過(guò)大,而另一些服務(wù)器比較空閑的情況。負(fù)載均衡可分為軟件負(fù)載均衡和硬件負(fù)載均衡。
示例:
(1)一個(gè)沒(méi)有負(fù)載均衡的Web服務(wù)架構(gòu)
問(wèn)題:如果大量用戶同時(shí)訪問(wèn)該Web服務(wù)器,或遭受DOS/DDOS攻擊,該服務(wù)器可能出現(xiàn)宕機(jī)情況,這時(shí)候普通用戶將無(wú)法正常訪問(wèn),服務(wù)中斷,可能造成大量損失。
(2)加入負(fù)載均衡器的Web服務(wù)架構(gòu)
在服務(wù)器集群中加入負(fù)載均衡器后,負(fù)載均衡器可根據(jù)負(fù)載均衡算法將用戶請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器集群中空閑的服務(wù)器中。(具體請(qǐng)查閱1.2小節(jié))負(fù)載均衡器可以是軟件也可以是硬件。
1.2、負(fù)載均衡的工作原理負(fù)載均衡器通過(guò)更改請(qǐng)求的目的地址對(duì)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),在服務(wù)器返回?cái)?shù)據(jù)包的時(shí)候,更改返回?cái)?shù)據(jù)包的源地址,保證客戶端請(qǐng)求的目的和返回包是同一個(gè)地址。
具體示例
某游戲運(yùn)營(yíng)商申請(qǐng)到一個(gè)公網(wǎng)IP1.1.1.1,玩家的用戶登錄驗(yàn)證需要連接這個(gè)地址,玩家請(qǐng)求數(shù)據(jù)包會(huì)先通過(guò)防火墻,達(dá)到負(fù)載均衡器。負(fù)載均衡器根據(jù)其內(nèi)置算法決定玩家將連接哪一臺(tái)服務(wù)器進(jìn)行登錄驗(yàn)證,這里假設(shè)負(fù)載均衡器將該玩家分配給Web服務(wù)器1。接著負(fù)載均衡器將用戶請(qǐng)求數(shù)據(jù)包中的目的地址換成對(duì)應(yīng)的Web服務(wù)器1的IP地址,Web服務(wù)器的IP地址可能是內(nèi)網(wǎng)IP地址(例如192.168.82.223),玩家的請(qǐng)求數(shù)據(jù)包會(huì)到達(dá)Web服務(wù)器1上進(jìn)行驗(yàn)證。
內(nèi)置算法即決定服務(wù)器集群中哪臺(tái)服務(wù)器可以處理用戶請(qǐng)求。例如,有A、B、C三臺(tái)服務(wù)器,服務(wù)器A使用率已經(jīng)達(dá)到60%,服務(wù)器B和服務(wù)器C使用率均為0%,且正常運(yùn)行時(shí),負(fù)載均衡器中的內(nèi)置算法將用戶請(qǐng)求轉(zhuǎn)發(fā)到服務(wù)器B或服務(wù)器C中,具體需要查看B和C哪臺(tái)服務(wù)器的優(yōu)先級(jí)更高。
當(dāng)驗(yàn)證成功后,Web服務(wù)器1會(huì)發(fā)送一個(gè)響應(yīng)數(shù)據(jù)包返回給負(fù)載均衡器,負(fù)載均衡器會(huì)將收到數(shù)據(jù)包中的源地址由192.168.82.223改為1.1.1.1,再把響應(yīng)數(shù)據(jù)包發(fā)送給玩家。
這樣就保證了用戶的請(qǐng)求目的地址和響應(yīng)數(shù)據(jù)包的源地址是同一個(gè)地址。
1.3、負(fù)載均衡三要素包括分發(fā)策略、會(huì)話保持和服務(wù)器健康檢查。
(1)分發(fā)策略
指負(fù)載均衡設(shè)備,根據(jù)什么樣的策略(即算法)把請(qǐng)求分發(fā)到不同的后臺(tái)服務(wù)器上,最簡(jiǎn)單的算法是輪巡,把用戶請(qǐng)求依次分配到服務(wù)器上。
(2)會(huì)話保持
在大部分的應(yīng)用中都會(huì)涉及到服務(wù)器 Session控制。而且這些Session通常不會(huì)在服務(wù)器之間進(jìn)行復(fù)制的。即用戶A在登錄時(shí)負(fù)載均衡器將其分配到服務(wù)器1處理,那么以后所有關(guān)于用戶A的所有請(qǐng)求都將會(huì)轉(zhuǎn)發(fā)到服務(wù)器1中,而不會(huì)轉(zhuǎn)發(fā)到其他服務(wù)器上。如果分配到其他服務(wù)器上,其他服務(wù)器上沒(méi)有關(guān)于A的記錄,會(huì)導(dǎo)致請(qǐng)求失敗。
最簡(jiǎn)單的會(huì)話保持策略是源地址會(huì)話保持。
(3)服務(wù)器健康檢查
指負(fù)載均衡設(shè)備必須檢測(cè)后臺(tái)服務(wù)器是否在正常工作,如果有某臺(tái)服務(wù)器出現(xiàn)故障,無(wú)法正常工作,那么負(fù)載均衡器會(huì)把這臺(tái)服務(wù)器從負(fù)載均衡組中剔除。當(dāng)故障服務(wù)器恢復(fù)時(shí),再把該服務(wù)器重新加載到負(fù)載均衡組中。
2. Windows Server Network Load Balancing(網(wǎng)絡(luò)負(fù)載均衡)NLB增強(qiáng)了Internet服務(wù)器應(yīng)用程序的可用性和可伸縮性,例如在Web,F(xiàn)TP,防火墻,代理,虛擬專(zhuān)用網(wǎng)(VPN)和其他關(guān)鍵任務(wù)服務(wù)器上使用網(wǎng)絡(luò)負(fù)載平衡服務(wù)。
網(wǎng)絡(luò)負(fù)載平衡(NLB)特性是通過(guò)使用TCP/IP協(xié)議在多個(gè)服務(wù)器之間分配流量。通過(guò)將運(yùn)行應(yīng)用程序的兩臺(tái)或多臺(tái)服務(wù)器合并到一個(gè)虛擬集群中,NLB為web服務(wù)器和其他關(guān)鍵任務(wù)服務(wù)器提供了可靠性和性能。
NLB集群中的服務(wù)器稱(chēng)為主機(jī),每個(gè)主機(jī)都運(yùn)行著相同服務(wù)的單獨(dú)副本。NLB會(huì)將客戶端的請(qǐng)求轉(zhuǎn)發(fā)到集群中的各個(gè)主機(jī)上。系統(tǒng)管理員可以配置由每個(gè)主機(jī)處理客戶端請(qǐng)求。還可以動(dòng)態(tài)地向集群添加主機(jī)來(lái)處理增加的負(fù)載。NLB還可以將所有流量定向到指定的主機(jī)中,該主機(jī)稱(chēng)為默認(rèn)主機(jī)。
NLB允許群集中的所有服務(wù)器使用相同的IP地址集進(jìn)行尋址,并且為每個(gè)主機(jī)維護(hù)一組唯一的專(zhuān)用IP地址。對(duì)于負(fù)載平衡的應(yīng)用程序,當(dāng)主機(jī)發(fā)生故障或脫機(jī)時(shí),負(fù)載會(huì)自動(dòng)在正常工作的服務(wù)器之間重新分配。準(zhǔn)備就緒后,脫機(jī)的服務(wù)器可以透明地重新加入群集并重新獲得其工作負(fù)荷的份額,這使群集中的其他計(jì)算機(jī)可以處理較少的流量。
2.1 特性Windows Server 的網(wǎng)絡(luò)負(fù)載均衡有三個(gè)重要特性,包括高可用性、可擴(kuò)展性和可管理性。
(1)高可用性
高可用性系統(tǒng)可靠地提供了可接受的服務(wù)水平,并且停機(jī)時(shí)間最少。為了提供高可用性,NLB包括內(nèi)置功能,這些功能可以自動(dòng):
檢測(cè)發(fā)生故障或脫機(jī)的群集主機(jī),然后進(jìn)行恢復(fù)。添加或刪除主機(jī)時(shí),平衡網(wǎng)絡(luò)負(fù)載。在10秒之內(nèi)恢復(fù)并重新分配工作負(fù)載。 (2)可擴(kuò)展性
可伸縮性是衡量計(jì)算機(jī),服務(wù)或應(yīng)用程序在滿足不斷增長(zhǎng)的性能要求的能力的度量。對(duì)于NLB群集,可伸縮性是當(dāng)群集的整體負(fù)載超過(guò)其能力時(shí),可以向現(xiàn)有群集中增量添加一個(gè)或多個(gè)系統(tǒng)的能力。為了支持可伸縮性,系統(tǒng)管理員可以對(duì)NLB執(zhí)行以下操作:
平衡NLB群集中各個(gè)TCP / IP服務(wù)的負(fù)載請(qǐng)求。單個(gè)群集中最多支持32臺(tái)服務(wù)器。在群集中的多個(gè)主機(jī)之間平衡多個(gè)服務(wù)負(fù)載請(qǐng)求(來(lái)自同一客戶端或來(lái)自多個(gè)客戶端)。隨著負(fù)載增加,將主機(jī)添加到NLB群集中,而不會(huì)導(dǎo)致群集發(fā)生故障。當(dāng)負(fù)載降低時(shí),可以從群集中刪除主機(jī)。通過(guò)完整的流水線實(shí)施實(shí)現(xiàn)高性能和低開(kāi)銷(xiāo)。流水線化允許將請(qǐng)求發(fā)送到NLB群集,而無(wú)需等待對(duì)先前請(qǐng)求的響應(yīng)。 (3)可管理性
為了支持可管理性,系統(tǒng)管理員可以對(duì)NLB執(zhí)行以下操作:
通過(guò)使用Windows PowerShell中的網(wǎng)絡(luò)負(fù)載平衡(NLB)Cmdlet 或NLB管理器,可以在一臺(tái)服務(wù)器管理和配置多個(gè)NLB群集和群集主機(jī)。使用端口管理規(guī)則為單個(gè)IP端口或一組端口指定負(fù)載平衡行為。為每個(gè)網(wǎng)站定義不同的端口規(guī)則。如果將同一組負(fù)載平衡服務(wù)器用于多個(gè)應(yīng)用程序或網(wǎng)站,則端口規(guī)則基于目標(biāo)虛擬IP地址(使用虛擬群集)。使用可選的單主機(jī)規(guī)則將所有客戶端請(qǐng)求定向到單臺(tái)主機(jī)時(shí)。NLB將客戶端請(qǐng)求路由到運(yùn)行特定應(yīng)用程序的特定主機(jī)。阻止對(duì)某些IP端口的網(wǎng)絡(luò)訪問(wèn)。在多播模式下運(yùn)行時(shí),請(qǐng)?jiān)谌杭鳈C(jī)上啟用Internet組管理協(xié)議(IGMP)支持,以控制交換機(jī)端口泛洪(將傳入網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送到交換機(jī)上的所有端口)。使用Windows PowerShell命令或腳本遠(yuǎn)程啟動(dòng),停止和控制NLB操作。查看Windows事件日志以檢查NLB事件。NLB將所有操作和群集更改記錄在事件日志中。
2.2 部署NLB服務(wù)群集的要求(1)硬件要求 群集中的所有主機(jī)必須位于同一子網(wǎng)中。每個(gè)主機(jī)上的網(wǎng)絡(luò)適配器數(shù)量沒(méi)有限制,并且不同的主機(jī)可以具有不同數(shù)量的適配器。在每個(gè)群集中,所有網(wǎng)絡(luò)適配器必須是多播或單播的。NLB在單個(gè)群集中不支持多播和單播的混合環(huán)境。如果使用單播模式,則用于處理客戶端到群集流量的網(wǎng)絡(luò)適配器必須支持更改其媒體訪問(wèn)控制(MAC)地址。
(2)軟件要求 在每個(gè)主機(jī)上啟用了NLB的適配器上只能使用TCP/IP。請(qǐng)勿將任何其他協(xié)議(例如IPX)添加到此適配器。群集中服務(wù)器的IP地址必須是靜態(tài)的。
NLB不支持動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP)。NLB會(huì)在其配置的每個(gè)接口上禁用DHCP。
3. 網(wǎng)絡(luò)拓?fù)浼罢f(shuō)明右側(cè)三臺(tái)服務(wù)器構(gòu)成服務(wù)器集群,統(tǒng)一為外界提供Web服務(wù),其Web服務(wù)聚合IP地址為10.0.0.1.同時(shí)每臺(tái)服務(wù)器上均安裝網(wǎng)絡(luò)負(fù)載均衡(Network Load Balancing,NLB)形成集群負(fù)載均衡。三臺(tái)服務(wù)器的內(nèi)網(wǎng)IP地址分別為:
NLB1:192.168.82.208NLB2:192.168.82.209NLB3:192.168.82.210
左側(cè)為客戶端電腦PC2,IP地址為10.0.0.2。PC2通過(guò)10.0.0.2訪問(wèn)服務(wù)器集群NLB1-3提供的Web服務(wù)。
參考資料什么是負(fù)載均衡?
Microsoft Docs:
Network Load Balancing
相關(guān)文章:
1. Nginx中default_server指令問(wèn)題詳解2. CentOS7設(shè)置ssh服務(wù)以及端口修改方式3. 在AWS的Linux服務(wù)器部署Flask預(yù)演(詳細(xì)步驟)4. Linux系統(tǒng)開(kāi)機(jī)無(wú)限重啟的解決方案5. linux所有命令都失效顯示bash: xxxxx: command not found的解決6. linux free命令以及系統(tǒng)內(nèi)存占用過(guò)高的處理方式7. centos7下如何安裝ftp服務(wù)8. Tomcat進(jìn)程占用CPU過(guò)高的解決方法9. shell免交互的實(shí)現(xiàn)10. Windows Server 2019 standard安裝配置DHCP服務(wù)
