WindowsServer2008R2 NLB詳細解html
羣集是指一組服務器,經過彼此的協同做業,提供一個相同的服務或應用程序,用於提高服務或應用程序的可用性(availability)、可靠性(reliability)和可擴展性(scalability)。當羣集內的服務器down掉之後,服務請求會轉給其它羣集內的節點,以實現24小時不中斷的服務web
Windows server 支持三種類型的羣集,分別是NLB、CLB和MSCS。NLB與MSCS內置於windows server中,CLB須要購買Application Center算法
1) NLB (Network Load Balancing,網絡負載平衡):提供以TCP/IP 爲基礎的服務與應用程序的網絡流量負載均衡,用於提高系統的可用性和可擴展性。常見的應用有Terminal Service、Web、×××與FTP等。shell
2) CLB:提供使用COM+組件的中介層應用程序的動態負載均衡,用於提高系統的可用性和延展性。CLB會依據目前的工做負載來決定由誰來處理服務請求。windows
3) MSCS:提供後端服務與應用程序的容錯移轉(failover),主要是提高系統的可用性。常見的應用有SQL Server與Exchange Server等。MSCS是由client來決定由誰來處理服務請求,全部服務器共享一個share storage來儲存session狀態。當主動服務器掛了,則繼續由被動服務器接手。被動服務器會從share storage取出session狀態,繼續未完成的工做,以達到容錯移轉的目的後端
NLB 羣集用一個羣集 IP 地址指定羣集中全部服務器的地址,而且它還爲每一個主機保留一組惟一專用的 IP 地址。對於負載平衡的應用程序,當主機出現故障或者脫機時,會自動在仍然運行的計算機之間從新分發負載。當計算機意外出現故障或者脫機時,將斷開與出現故障或脫機的服務器之間的活動鏈接。可是,若是您有意關閉主機,則能夠在使計算機脫機以前,使用 drainstop 命令處理全部活動的鏈接。任何一種狀況下,均可以在準備好時將脫機計算機明確地從新加入羣集,並從新共享羣集負載,以便使羣集中的其餘計算機處理更少的流量。服務器
NLB 羣集中的主機會交換檢測消息以保持有關羣集成員身份的數據的一致性。默認狀況下,當主機在五秒以內未能發送檢測消息時,該主機便出現了故障。當主機出現故障時,羣集中的剩餘主機將聚合在一塊兒並執行如下操做:網絡
1) 肯定哪些主機仍然是羣集中的活動成員。session
2) 選擇優先級最高的主機做爲新的默認主機。負載均衡
3) 確保全部新的客戶端請求都由仍然活動的主機進行處理。
在聚合期間,仍然活動的主機會查找一致的檢測信號。若是沒法發送檢測信號的主機開始提供一致的檢測信號,則它會在聚合過程當中從新加入羣集。當新的主機嘗試加入羣集時,它會發送檢測消息,該消息也會觸發聚合。當全部羣集主機對當前的羣集成員身份達成一致以後,會向剩餘主機從新分發客戶端負載,並完成聚合。一般聚合只需幾秒鐘,所以由羣集中斷的客戶端服務是很是少的。在聚合期間,仍然活動的主機會繼續處理客戶端請求,而不會影響現有鏈接。若是全部主機在幾個檢測期間報告的羣集成員身份和分發映射都一致,則聚合結束。
以下圖
節點A B C均有一個外部使用的靜態IP地址,建立NLB羣集時會產生一個虛擬的IP,該IP與節點的IP在同一個網段內,對外公佈的 IP爲虛擬的羣集IP,而客戶機所訪問羣集虛擬IP時實際上在訪問節點A或者節點B或者節點C,具體哪臺主機相應請求由NLB算法決定。
對於Windows Server 2008, NLB包括如下改進:
1) 支持IPv6。NLB對全部通訊都徹底支持IPv6。全部NLB組件都支持IPv6地 址,而且能夠將這些地址配置爲主要羣集IP地址、專用IP地址和虛擬IP地址。 此外,還能夠做爲純IPv6以及在IPv6 over IPv4模式下對IPv6進行負載平衡。
2) 支持NDIS6.0。NLB驅動程序使用NDIS6.0輕型篩選模型。NDIS6.0保持與 早期NDIS版本的向後兼容性。NDIS 6.0的設計包括加強的驅動程序性能和可伸 縮性以及簡化的NDIS驅動程序模型。
3) WMI加強。MicrosoftNLB命名空間添加了對IPv6的多個專用IP地址支持,它 們包括:
MicrosoftNLB命名空間中的類支持IPv6地址(除了 IPv4地址以外)。
MicrosoftNLB_NodeSetting類支持多個專用的IP地址,方法是在 Dedicated!PAddresses 和 DedicatedNetMasks 中指定這些地址。
4) 改進了拒絕服務(DoS)***和計時器飢餓保護。使用回調接口,NLB能夠在攻 擊期間或者節點負載太高時檢測並通知應用程序。當羣集節點過載或者受到*** 時,ISA服務器使用該功能。
5) 支持每一個節點使用多個專用IP地址。NLB徹底支持爲每一個節點定義多個專用IP 地址。之前只支持每一個節點使用一個專用IP地址。當客戶端由IPv4和IPv6通 訊組成時,ISA服務器可使用該功能來管理每一個NLB節點。
6) 支持滾動升級。NLB 支持從 Windows Server2003 到 Windows Server2008 的 滾動升級。有關NLB的部署信息(包括有關滾動升級的信息),請參閱 http://go.microsoft.com/fwlink/?Linkld=87253o
7) 經過網絡負載平衡管理器綜合管理。再也不須要使用網絡鏈接工具配置NLB羣集, 只需經過Windows Server2008中的NLB管理器便可執行NLB羣集配置。這 樣即可以最大程度地減小可能因羣集主機之間設置不一致引發的NLB配置問題。
可伸縮性是度量計算機、服務或應用程序如何更好地改進以知足持續增加的性能需求的 標準。對於NLB羣集而言,可伸縮性是指當羣集的所有負載超過其能力時逐步將一個或多 個系統添加到現有羣集中的功能。下表詳細介紹了 NLB的可伸縮×××:
1) 平衡NLB羣集上對各個TCP/IP服務的負載請求
2) 在一個羣集中最多支持32臺計算機
3) 平衡羣集中多個主機之間的多個服務器負載請求(來自同一個客戶端或者來自幾個 客戶端)
4) 支持在負載增長時,可以在不關閉羣集的狀況下向NLB羣集中添加主機
5) 支持在負載下降時,可以從羣集中刪除主機
6) 經過所有實現管道化提升性能並下降開銷。管道容許向NLB羣集發送請求,而無 需等待響應上一個發送的請求
經過最大程度地減小停機時間,高可用系統可以可靠地提供可接受級別的服務。NLB包 括一些內置功能,能夠經過自動執行如下操做來提供高可用性:
1) 檢測發生故障或脫機的羣集主機並對其進行恢復。
2) 在添加或刪除主機時平衡網絡負載。
3) 在十秒以內恢復並從新分發負載。
NLB提供如下可管理×××:
1) 使用NLB管理器,能夠從單個計算機管理和配置多個NLB羣集和羣集主機。
2) 使用端口管理規則,能夠爲單個IP端口或一組端口指定負載平衡行爲。
3) 能夠爲每一個網站定義不一樣的端口規則。若是您對多個應用程序或網站使用相同的一 組負載平衡服務器,則端口規則基於目標虛擬IP地址(使用虛擬羣集)。
4) 使用可選的單主機規則,能夠將全部客戶端請求引導至單個主機。NLB將客戶端 請求路由到運行特定應用程序的特定主機。
5) 能夠阻止對某些IP端口進行不須要的網絡訪問。
6) 能夠在羣集主機上啓用Internet組管理協議(IGMP)支持,以控制交換機廣播
7) (在多播模式中操做時)。
8) 使用shell命令或腳本,能夠從運行Windows的任何聯網計算機上遠程啓動、 中止和控制NLB操做。
9) 能夠查看Windows事件日誌以檢查NLB事件。NLB在事件日誌中記錄全部操 做和羣集更改。
NLB提供了許多便於使用的功能:
1) 能夠做爲標準的Windows網絡驅動程序組件安裝NLB。
2) NLB不須要更改任何硬件便可啓用和運行。
3) 使用NLB管理器能夠新建NLB羣集。
4) 使用NLB管理器,能夠從一臺遠程或本地計算機上配置和管理多個羣集以及羣集 的全部主機。
5) NLB容許客戶端使用單個邏輯Internet名稱和虛擬IP地址(稱爲羣集IP地 址,它保留每臺計算機的各個名稱)訪問羣集。NLB容許多宿主服務器具備多個 虛擬IP地址。注意,若是是虛擬羣集,則不須要服務器是多宿主服務器便可具備 多個虛擬IP地址。
6) 能夠將NLB綁定到多個網絡適配器,這樣您即可以在每一個主機上配置多個獨立的 羣集。支持多個網絡適配器與虛擬羣集不一樣,由於虛擬羣集容許您在單個網絡適配 器上配置多個羣集。
7) 不須要修改服務器應用程序便可在NLB羣集中運行。
8) 若是羣集主機出現故障而且後來又恢復聯機,則能夠將NLB配置爲自動將該主機 添加到羣集。以後,添加的主機將可以開始處理來自客戶端的新的服務器請求。
9) 能夠在不打擾其餘主機上羣集操做的狀況下使計算機脫機進行預防性的維護。
若是NLB羣集中的服務器成員有變更,如服務器故障、服務器脫離羣集或增長新服務 器,則NLB會啓動一個稱爲聚合(convergence)的程序,以便讓NLB集羣中的全部服務 器保持一致的狀態並生新分配工做任務。
例如,NLB羣集中的服務器會隨時監聽其餘服務器的心跳狀態,以便檢測是否有其餘 服務器出現故障。如有服務器出現故障,檢測到此情況的服務器便會啓動聚合程序,在聚合 程序運行時,現有正常的服務器仍然會繼續服務,同時正在處理中的請求也不會受到影響, 當完成聚合程序後,全部鏈接web farm網站的請求,會從新分配給剩下仍正常的web服務 器來負責。
類似性用於定義源主機與NLB羣集成員之間的關係。好比,若是羣集中有3臺web服 務器,當外部主機(源主機)要鏈接web farm時,此請求應由web farm中的哪一臺服務
器來負責處理?是由NLB提供的3種類似來決定的。
1) 無(none):此時NLB是根據源主機的IP地址與端口,將請求分配給其中一臺服 務器處理,羣集中每一臺服務器都有一個主機ID (host ID),而NLB根據源主機 的IP地址與鏈接端口計算出來的哈希值(hash)與主機ID有關聯性,所以NLB 羣集會根據哈希值將此請求發給擁有主機ID的服務器負責處理。由於它同時根據 源主機的IP地下與端口將請求分配給其中一臺服務器處理,所以同一臺外部主機 提出的多個鏈接web farm請求(源主機的IP地址相同、TCP端口不一樣),可能會 分別由不一樣的web服務器來負責。
2) 單一(single):此時NLB僅根據源主機的IP地址將請求分配給其中一臺web服 務器處理,所以同一臺外部主機提出的全部鏈接web farm請求,都會由同一臺服 務器來負責處理。
3) Class C:它是根據源主機的IP地址中最高3個字節,將請求分配給其中一臺web 服務器處理。也就是IP地址中最高3個字節相同的全部外部主機,它所提出的連 接web farm請求都會由同一臺web服務器負責。好比,63.11.11.1~63.11.11.254的外部主機的請求,都會由同一臺web服務器來負責處理。雖然,NLB默認是經過類似性將客戶端的請求分配給其中一臺服務器來負責處理,但 能夠另外經過端口規則來更改類似性。好比,能夠在端口規則中將特定流量指定由優先級較 高的一臺服務器來負責處理,系統默認的端口規則包括全部流量。且會依照設置的類似性將 客戶端的請求分配給某臺服務器來負責處理,也就是全部流量都具有網絡負載平衡與容錯功 倉巨。
在生產環境中推薦使用硬件的NLB設備,後臺數據存放到獨立的存儲設備,例如:
使用防火牆的發行規則來實現NLB效果,例如ISA防火期;ISA Server接收到外部鏈接內部網站的請求時, 它會根據發行規則的設置,將此請求轉交給web farm中的一臺web服務器處理。ISA Server 也具有自動檢測web服務器是否中止服務的功能,所以它只會將請求轉給仍然正常運行的 web服務器,不會轉給已中止服務的web服務器。
或者使用專門的NLB硬件設備,例如F5;使用統一的存儲例如SAN/NAS等,保證用戶訪問數據的統一性;
或者使用文件服務器作爲數據服務器,用DFS(分佈式文件系統)複製保證數據的統一性,架設多臺文件服務器還可保證服務器容錯性;
在單播模式下,NLB從新對每一個NLB節點中啓用NLB的網絡適配器分配MAC地址(此MAC地址稱爲羣集MAC地址),而且全部的NLB節點均使用相同的MAC地址(均使用羣集MAC地址),同時NLB修改全部發送的數據包中的源MAC地址(NLB利用MaskSourceMac功能,更改外送數據包的ethernet header中的源mac地址,也就是將羣集mac地址中最高第2組字符改成主機id,而後將此修改過的mac地址做爲源mac地址),確保使交換機不能將此羣集MAC地址綁定在某個端口上。
工做在單播模式下的NLB能夠在全部網絡環境下正常運行,可是因爲它的工做特性,具備如下兩個限制:
1) 因爲NLB所使用的羣集MAC地址沒有綁定在某個具體的交換機端口上,因此全部的NLB通信均經過在交換機的全部端口上廣播進行,而無論此端口是否鏈接了NLB節點,這形成了額外的網絡流量負擔(解決該問題能夠經過加入一個hub設備,NLB設備鏈接hub,hub在連接交換機某個端口,這樣這個端口便與羣集mac綁定);
2) 因爲全部的NLB節點具備相同的MAC地址,NLB節點之間不能經過本身原有的專用IP地址進行通信。
單播模式的優勢也很明顯:它能夠無縫地與大多數路由器和交換機協同工做(解決該問題能夠在每一個節點上都加一塊網卡,專門用戶節點之間互相通信,保證節點數據的統一性)。
以下圖所示:
單播的其餘注意項:
在Windows server 2003 SP1中,微軟修改了NLB單播模式的驅動,從而支持陣列成員經過本身原有的專用IP地址進行通信。
若咱們在NLB建立時選擇單播的模式,在「羣集IP配置」中的「網絡地址」是以「02 - BF」開頭,後面緊跟IP地址的十六進制表示,該網絡地址與實際主機的MAC地址相同,後續加入的主機也將修改成此MAC地址。
在多播模式下,NLB不會修改NLB節點啓用NLB的網絡適配器的MAC地址,而是爲它再分配一個二層多播MAC地址專用於NLB的通信(此MAC地址稱爲羣集MAC地址),這樣NLB節點之間能夠經過本身原有的專用IP地址進行通信。
可是在多播模式中,NLB節點發送的針對羣集IP地址MAC地址ARP(Address Resolution Protocol,地址解析協議)請求的ARP回覆會將羣集IP地址映射到多播MAC地址,而許多路由器或者交換機(包括CISCO的產品)會拒絕這一行爲。當出現這種狀況時,你必須在路由器和交換機上手動添加靜態映射,將羣集IP地址映射到羣集的多播MAC地址。
這種模式的優勢是能夠經過在交換機的「內容可尋址存儲器」(CAM) 表中建立靜態項,從而使得入站流量僅到達羣集中的主機。
還有一個缺點就是不少路由器不會自動將單播 IP 地址(羣集的虛擬 IP 地址)與多播 MAC 地址關聯起來。若是進行靜態配置的話,一些路由器能夠存在這種關聯。若咱們在NLB建立時選擇多播的模式,在「羣集IP配置」中的「網絡地址」是以「03 -BF」開頭,後面緊跟IP地址的十六進制表示。
以下圖所示:
NLB算法須要NLB羣集中的全部主機都能看到發往羣集的每個數據包。NLB不容許交換機將羣集的MAC地址關聯到交換機的某個特定端口,從而實現了這個目的。可是,這種作法也會帶來不想要的反作用,就是發往NLB羣集的全部數據包會在交換機上的全部端口上形成數據「洪水」。這不只很是麻煩,並且必將會形成網絡資源的浪費。
爲了解決這個問題,一個被稱做IGMP支持的新特性被引入到了Windows Server 2003之中。該特性有助於將數據「洪水」限制到交換機上與NLB計算機相鏈接的端口上。經過這種方式,非NLB的計算機不會看到發往NLB羣集的數據,而與此同時,全部的NLB計算機均可以看到發往羣集的數據,所以知足了NBL算法的要求。可是,應該指出的是:IGMP支持只有在NLB被配置多播(multicast)模式時才能啓用。
在選擇多播模式時,後面還有個複選項「IGMP Multicast(IGMP多播)」,若複選此項,就像多播操做模式同樣,NLB 保留原廠 MAC 地址不變,可是向網絡適配器中增長了一個 IGMP 多播地址。此外,NLB 主機會發出這個組的 IGMP 加入消息。若是交換機探測到這些消息,它可使用所需的多播地址來填充本身的 CAM 表,這樣入站流量就不會擴散到 VLAN 上的全部端口。這是這種羣集模式的主要優勢。缺點是有一些交換機不支持 IGMP 探測。除此以外,路由器仍然支持單播 IP 地址到多播 MAC 地址的轉換。在IGMP多播模式下,將採用「01 – 00 - 5E」開頭的MAC地址。在多播的模式下,實體主機之間能夠互相通訊。
以下圖所示:
NLB對路由器的要求
當羣集已配置爲在多播模式下工做時,若是網絡負載平衡客戶端正在經過路由器訪問一個羣集,請確保路由器知足如下要求:
接受地址解析協議 (ARP) 應答,此應答在 ARP 結構的有效負載部分有一個媒體訪問控制 (MAC) 地址,但正如以太網報頭所肯定的,它看上去像來自具備另外一個 MAC 地址的站點。
接受單播 IP 地址的 ARP 應答,此應答在其 ARP 結構的有效負載部分有一個多播 MAC 地址。
本次試驗拓撲以下:
? 節點A和節點B爲倆臺VmWare虛擬機,系統爲WindowsServer2008R2,安裝有IIS、NLB;
? 客戶端由真機代替系統爲Win7;
節點A網絡配置
節點A主機名配置
節點B網絡配置
節點B主機名配置
節點A與節點B的網絡模式
分別在倆臺節點角色中添加IIS
IIS安裝完成
爲了後期測試方便,將倆臺節點默認的index.html修改
分別在倆臺節點上執行 開始>管理工具>IIS控制檯右>擊默認網站>瀏覽;
在彈出的文件夾中,右擊iisstart,選擇打開方式爲記事本;
以下修改,保存,退出;
以一樣的方式配置節點B;
分別在倆臺節點中在功能中添加網絡負載平衡組件
安裝成功
在任意一臺節點主機上執行點擊「開始」>「管理工具」>「網絡負載平衡管理器」>右擊「網絡負載平衡羣集」>「新建羣集」;
輸入本節點主機名(若是沒有環境中沒有DNS服務器推薦填寫節點的IP地址而不填寫主機名),單擊「連接」;下一步;
在主機參數頁面保持默認配置單擊下一步;
在彈出的羣集IP地址頁面,單擊「添加」輸入羣集ip,單擊肯定;單擊下一步;
在彈出的羣集參數頁面,填寫Internet名稱(自定義),選擇「多播」單擊下一步;
在端口規則頁面保持默認,單擊完成;
節點B配置完成;
右鍵剛建好的羣集,選擇添加主機到羣集;
輸入節點A的ip地址單擊連接,單擊下一步 ;
節點A添加完成
測試拓撲以下
將倆臺節點的網卡模式調整爲nat模式
客戶端網絡配置(爲了不其餘因素影響,推薦禁用除vm8之外的網卡);
客戶端訪問羣集IP(能夠看到訪問到的節點爲節點A);
將節點A網卡斷開測試
繼續訪問羣集IP(能夠看到訪問到的節點爲節點B)禁用網卡只是爲了測試方便,此時節點A與節點B都在運行,能夠用一臺客戶端屢次訪問,或者多臺客戶端訪問,能夠看到倆臺節點都在提供訪問請求;
模擬拓撲以下
將真機網卡vm8調整爲任意不與10.0同網段ip便可,不然影響測試效果;例如
配置真機網卡vm1ip爲192.168.30.18,爲保證測試效果,將除vm1和vm8之外其餘網卡禁用;
打開GNS3,拓撲連接以下
C1配置以下
路由器配置以下;
R1#conf t
R1(config)#int e0/1
R1(config-if)#ip add 192.168.30.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#int e0/0
R1(config-if)#ip add 192.168.10.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#ip routing
此時繼續訪問羣集IP結果以下
此時ping羣集ip不通
訪問羣集ip不能打開網頁;
登陸任一羣集節點,打開「網絡負載平衡管理器「,右擊羣集,選擇」羣集屬性「;
選擇「羣集參數「標籤,記錄下方羣集MAC地址:03-bf-c0-a8-0a-0a
路由器配置以下,將羣集ip和羣集MAC地址作靜態映射
R1(config)#arp 192.168.10.10 03bf.c0a8.0a0a arpa
繼續測試訪問,此時已經能夠ping通羣集ip地址
訪問羣集ip地址已經能夠訪問到網頁;
屢次刷新網頁,或者能夠禁用B節點網卡,或者將B節點宕機;能夠看到能夠切換到節點A;
其餘參考連接
http://www.huawei.com/ecommunity/bbs/10162957.html
本文由 大郭講堂 測試整理,若是疏漏之處請留言指出,旨在提升文檔質量、技術交流;
博客連接 http://daguo.blog.51cto.com/ QQ空間連接http://user.qzone.qq.com/1843472029/main