一、關於NLB的官方描述,在搭建NLB羣集之前,必須先對NLB的原理進行初步瞭解
Windows Server 2008 R2 中的網絡負載平衡 (NLB) 功能可以增強 Internet 服務器應用程序 [如在 Web、FTP、防火牆、代理、虛擬專用網絡 (***) 以及其他執行關鍵任務的服務器上使用的應用程序] 的可用性和可伸縮性。運行 Windows Server 2008 R2 的單個計算機提供有限的服務器可靠性和可伸縮性能。但是,通過將運行 Windows Server 2008 R2 的其中一個產品的兩臺或多臺計算機的資源組合到單個虛擬羣集中,NLB 便可以提供 Web 服務器和其他執行關鍵任務服務器所需的可靠性和性能。
NLB 允許使用相同的羣集 IP 地址集指定羣集中所有計算機的地址,並且它還爲每個主機保留一組唯一專用的 IP 地址。對於負載平衡的應用程序,當主機出現故障或者脫機時,會自動在仍然運行的計算機之間重新分發負載。當計算機意外出現故障或者脫機時,將斷開與出現故障或脫機的服務器之間的活動連接。但是,如果您有意關閉主機,則可以在使計算機脫機之前,使用drainstop 命令處理所有活動的連接。任何一種情況下,都可以在準備好時將脫機計算機明確地重新加入羣集,並重新共享羣集負載,以便使羣集中的其他計算機處理更少的流量。 NLB 羣集中的主機會交換檢測消息以保持有關羣集成員身份的數據的一致性。默認情況下,當主機在五秒之內未能發送檢測消息時,該主機便出現了故障。當主機出現故障時,羣集中的剩餘主機將聚合在一起並執行以下操作: 在聚合期間,仍然活動的主機會查找一致的檢測信號。如果無法發送檢測信號的主機開始提供一致的檢測信號,則它會在聚合過程中重新加入羣集。當新的主機嘗試加入羣集時,它會發送檢測消息,該消息也會觸發聚合。當所有羣集主機對當前的羣集成員身份達成一致之後,會向剩餘主機重新分發客戶端負載,並完成聚合。 通常聚合只需幾秒鐘,因此由羣集中斷的客戶端服務是非常少的。在聚合期間,仍然活動的主機會繼續處理客戶端請求,而不會影響現有連接。如果所有主機在幾個檢測期間報告的羣集成員身份和分發映射都一致,則聚合結束。 |
NLB 中有什麼新增功能? 對於 Windows Server 2008 R2,NLB 包括以下改進: 擴展的相關性。“擴展”選項可在 NLB 羣集的配置發生更改時保持客戶端的相關性。通過該選項,即使在客戶端與主機之間沒有任何活動的現有連接的情況下,客戶端仍能夠保持與羣集主機的相關性。 用於 NLB 羣集的 Windows PowerShell。Windows PowerShell 是一種新的命令行界面和腳本語言。Windows PowerShell 可加速實現系統管理任務的自動化。可以使用 Windows PowerShell 管理 NLB 羣集。有關將 Windows PowerShell 用於 NLB 羣集的詳細信息,請參閱 http://go.microsoft.com/fwlink/?LinkId=140180(可能爲英文網頁)。 支持滾動升級。NLB 支持從 Windows Server 2003 到 Windows Server 2008 R2 以及從 Windows Server 2008 到 Windows Server 2008 R2 的滾動升級。有關 NLB 的部署信息(包括有關滾動升級的信息),請參閱http://go.microsoft.com/fwlink/?LinkId=87253。
|
NLB 包括以下功能: 可伸縮性可伸縮性是度量計算機、服務或應用程序如何更好地改進以滿足持續增長的性能需求的標準。對於 NLB 羣集而言,可伸縮性是指當羣集的全部負載超過其能力時逐步將一個或多個系統添加到現有羣集中的功能。爲支持可伸縮性,NLB 可執行以下操作: 平衡 NLB 羣集上對各個 TCP/IP 服務的負載請求。 在一個羣集中最多支持 32 臺計算機。 平衡羣集中多個主機之間的多個服務器負載請求(來自同一個客戶端或來自幾個客戶端)。 在負載增加時,支持在不關閉羣集的情況下向 NLB 羣集中添加主機。 在負載降低時,支持從羣集中刪除主機。 通過全部實現管道化提高性能並降低開銷。管道允許向 NLB 羣集發送請求,而無需等待響應上一個發送的請求。 高可用性通過最大程度地減少停機時間,高可用系統能夠可靠地提供可接受級別的服務。爲提供高可用性,NLB 包括一些內置功能,這些功能可自動執行以下操作: 檢測發生故障或脫機的羣集主機並對其進行恢復。 在添加或刪除主機時平衡網絡負載。 在十秒之內恢復並重新分發負載。 可管理性NLB 提供以下可管理性功能: 使用 NLB 管理器,可以從單個計算機管理和配置多個 NLB 羣集和羣集主機。 使用端口管理規則,可以爲單個 IP 端口或一組端口指定負載平衡行爲。 可以爲每個網站定義不同的端口規則。如果您對多個應用程序或網站使用相同的一組負載平衡服務器,則端口規則基於目標虛擬 IP 地址(使用虛擬羣集)。 使用可選的單主機規則,可以將所有客戶端請求引導至單個主機。NLB 將客戶端請求路由到運行特定應用程序的特定主機。 可以阻止對某些 IP 端口進行不需要的網絡訪問。 可以在羣集主機上啓用 Internet 組管理協議 (IGMP) 支持,以控制交換機廣播(在多播模式中操作時)。 使用 shell 命令或腳本,可以從運行 Windows 的任何聯網計算機上遠程啓動、停止和控制 NLB 操作。 可以查看 Windows 事件日誌以檢查 NLB 事件。NLB 在事件日誌中記錄所有操作和羣集更改。 易用性NLB 提供了許多便於使用的功能: 可以將 NLB 作爲標準的 Windows 網絡連接驅動程序組件進行安裝。 NLB 不需要更改任何硬件即可啓用和運行。 使用 NLB 管理器可以新建 NLB 羣集。 使用 NLB 管理器,可以從一臺遠程或本地計算機上配置和管理多個羣集以及羣集的所有主機。 NLB 允許客戶端使用單個邏輯 Internet 名稱和虛擬 IP 地址(稱爲羣集 IP 地址,它保留每臺計算機的各個名稱)訪問羣集。NLB 允許多宿主服務器具有多個虛擬 IP 地址。 備註 如果是虛擬羣集,則不需要服務器是多宿主服務器即可具有多個虛擬 IP 地址。 可以將 NLB 綁定到多個網絡適配器,這樣您便可以在每個主機上配置多個獨立的羣集。支持多個網絡適配器與虛擬羣集不同,因爲虛擬羣集允許您在單個網絡適配器上配置多個羣集。 不需要修改服務器應用程序即可在 NLB 羣集中運行。 如果羣集主機出現故障並且後來又恢復聯機,則可以將 NLB 配置爲自動將該主機添加到羣集。之後,添加的主機將能夠開始處理來自客戶端的新的服務器請求。 可以在不打擾其他主機上羣集操作的情況下使計算機脫機進行預防性的維護。
|
二、瞭解了NLB相關的技術知識後,下面我們就可以做測試了,先看看本次測試的拓撲結構
三、測試步驟
首先需要搭建如圖的實驗環境,本例在域環境下測試,出於實驗的方便,我先更改了高級共享設置和防火牆設置
在NLB1和NLB2上分別安裝網絡負載平衡功能
兩個節點均安裝完成後,在NLB1上配置網絡負載均衡,節點一配置完成後,再將節點二加入到節點一得NLB中
首先新建羣集,將當前節點加入到NLB中,設置public網卡爲羣集接口
在“主機參數”,設置優先級(單一主機標識符),作用是設定NLB羣集中節點進行負載的優先級
設置一個羣集IP地址,如果是用IIS進行測試,則訪問WEB的時候,實際訪問羣集IP,或在DNS中建立一個對應羣集IP的網站A記錄,訪問羣集IP對應的FQDN名。客戶訪問IIS的時候,不會感覺到後面負載的變化。
設置一個羣集IP地址,與PUBLIC網卡出於同一個網段
設定一個羣集IP對應的完整Internet名稱,羣集的操作模式這裏保持默認
關於單播和多播的區別(下面的話引自網絡)
單播:在每個羣集成員上,NLB 覆蓋網絡適配器上製造商提供的 MAC 地址。NLB 對所有成員都使用相同的單播 MAC 地址。這種模式的優點是它可以無縫地與大多數路由器和交換機協同工作。缺點是到達羣集的流量會擴散到交換機虛擬 LAN (VLAN) 上的所有端口,並且主機之間的通信不能通過 NLB 綁定到的適配器,也即實體主機間不可以互相通信。若我們在NLB創建時選擇單播的模式,在“羣集IP配置”中的“網絡地址”是以“02 - BF”開頭,後面緊跟IP地址的十六進制表示,該網絡地址與實際主機的MAC地址相同,後續加入的主機也將修改爲此MAC地址。
多播:保留原廠 MAC 地址不變,但是向網絡適配器中增加了一個第 2 層多播 MAC 地址。所有入站流量都會到達這個多播 MAC 地址。優點是這種方法可以通過在交換機的“內容可尋址存儲器”(CAM) 表中創建靜態項,從而使得入站流量僅到達羣集中的主機。缺點是因爲 CAM 項必須靜態關聯一組交換機端口,如果沒有這些 CAM 項,入站流量仍然會擴散到交換機 VLAN 上的所有端口。還有一個缺點就是很多路由器不會自動將單播 IP 地址(羣集的虛擬 IP 地址)與多播 MAC 地址關聯起來。如果進行靜態配置的話,一些路由器可以存在這種關聯。若我們在NLB創建時選擇多播的模式,在“羣集IP配置”中的“網絡地址”是以“03 -BF”開頭,後面緊跟IP地址的十六進制表示。在選擇多播模式時,後面還有個複選項“IGMP Multicast(IGMP多播)”,若複選此項,就像多播操作模式一樣,NLB 保留原廠 MAC 地址不變,但是向網絡適配器中增加了一個 IGMP 多播地址。此外,NLB 主機會發出這個組的 IGMP 加入消息。如果交換機探測到這些消息,它可以使用所需的多播地址來填充自己的 CAM 表,這樣入站流量就不會擴散到 VLAN 上的所有端口。這是這種羣集模式的主要優點。缺點是有一些交換機不支持 IGMP 探測。除此之外,路由器仍然支持單播 IP 地址到多播 MAC 地址的轉換。在IGMP多播模式下,將採用“01 – 00 - 5E”開頭的MAC地址。在多播的模式下,實體主機之間可以互相通信。 一般來說,在NLB的創建時,單網卡多播,雙網卡單播。雙網卡單播時,因爲主機之間不能互相通信,將設置內網通訊的網卡,也就是羣集設置中的心跳。在微軟官方推薦在NLB設置時,首先考慮單播模式,除非單播不能滿足其要求,若要解決流量擴展的方法,推薦使用VLAN。 |
節點一配置完成後,回到節點二上,打開節點二的羣集管理器,將NLB2連接到現存的羣集
輸入第一個節點主機名,點擊連接後,在下方的羣集窗口會出現已存的羣集
連接到羣集後,下面將節點n3.contoso.com加入到現存的羣集
添加完成後,如圖所示
下面將進行NLB負載測試
首先默認訪問WEB站點,地址是:http://10.1.1.100
如圖網卡中會多一個羣集IP地址
斷掉上步驟中訪問的節點的網卡連接,再次嘗試訪問,效果如圖所示
配置網絡負載均衡羣集需要注意:網絡負載平衡並不爲經過負載的主機提供額外的安全保護,也不可以將其用於防火牆,因此,正確地保護經過負載平衡的應用程序和主機是很重要的。如果可能,在每個羣集的主機上至少要使用兩個網絡適配器,但並非必要條件,在羣集適配器上只使用TCP/IP協議,確保羣集中的所有主機屬於同一個子網並且客戶機能夠訪問該子網,使用網絡負載平衡管理器配置NLB羣集,啓用日誌記錄,不要啓用網絡負載平衡的遠程控制。
NLB提供網絡負載均衡服務,每個節點都監聽到客戶端的請求,每個節點都在本地存儲一份數據,支持32個節點,可以是域環境或者工作組的環境。
四、實施網絡負載均衡中可能遇到的問題(微軟官方文檔)
安裝網絡負載平衡並重新啓動羣集主機之後,出現一條消息:“系統已檢測到有一個 IP 地址與網絡上的其他系統發生衝突...”原因:網絡上已存在相同的 IP 地址。 解決方案:選擇一個新的 IP 地址,或者刪除重複的地址。 原因:您在主機上配置了不同的羣集操作模式(“單播”或“多播”),這樣會使兩個不同的 MAC 地址映射到同一個 IP 地址。 解決方案:確保將所有主機配置爲具有相同的羣集操作模式。 原因:將 NLB 綁定到網絡適配器之前,已經配置了羣集的 IP 地址。 解決方案:從 TCP/IP 屬性中刪除羣集的 IP 地址,在相應的適配器上啓用 NLB,然後配置羣集的 IP 地址。 原因:您已將羣集的 IP 地址添加到尚未啓用 NLB 的網絡適配器中。 解決方案:從不正確適配器的 TCP/IP 屬性中刪除羣集的 IP 地址,在相應的適配器上啓用 NLB,然後配置羣集的 IP 地址。
有關啓用 NLB 的詳細信息,請參閱安裝網絡負載平衡 使用 ping 從外部網絡訪問羣集的 IP 地址時沒有響應。驗證是否可以使用 ping 從路由器之外的計算機訪問羣集主機的專用 IP 地址。如果該測試失敗,並且您使用了多個網絡適配器,則此問題與 NLB 無關。如果您對專用 IP 地址和羣集 IP 地址使用了一個網絡適配器,請考慮以下原因: 原因:如果您使用了多播支持,您可能會發現路由器無法通過使用地址解析協議 (ARP) 將主要 IP 地址解析爲多播媒體訪問控制 (MAC) 地址。 解決方案:驗證是否可以使用 ping 從羣集子網上的客戶端訪問羣集,以及是否可以從路由器之外的計算機訪問羣集主機的專用 IP 地址。如果這些測試都工作正常,則可能是路由器出現了故障。您應該能夠通過向路由器中添加靜態 ARP 條目來避開此問題。還可以關閉 NLB 多播支持,並使用單播網絡地址(在沒有集線器的情況下)。 原因:在多播或單播模式中使用 NLB 時,路由器需要接受代理 ARP 響應(在 Ethernet 框架中用不同網絡源地址接收的 IP 到網絡地址的映射)。 解決方案:確保您的路由器打開了代理 ARP 支持。還可以設置靜態 ARP 條目以保持禁用路由器中的代理 ARP 支持。 原因:羣集的 Internet 控制消息協議 (ICMP) 被路由器或防火牆阻止。 解決方案:允許 ICMP 通訊通過路由器或防火牆。請注意,這可能會使您的系統暴露於其他的安全風險。
使用 ping 從一臺羣集主機訪問另一臺主機的專用 IP 地址時沒有響應。原因:在多播或單播模式中使用 NLB 時,路由器需要接受代理 ARP 響應(在 Ethernet 框架中用不同網絡源地址接收的 IP 到網絡地址的映射)。 解決方案:確保您的路由器打開了代理 ARP 支持。還可以設置靜態 ARP 條目以保持禁用路由器中的代理 ARP 支持。 原因:羣集的 Internet 控制消息協議 (ICMP) 被路由器或防火牆阻止。 解決方案:允許 ICMP 通訊通過防火牆或路由器。請注意,這可能會使您的系統暴露於其他的安全風險。
嘗試使用網絡負載平衡管理器連接到羣集中的某個主機時,收到錯誤“不能訪問主機”。 使用 Telnet 或嘗試從羣集主機瀏覽羣集之外的計算機時,沒有響應。 從羣集之外的計算機調用網絡負載平衡遠程控制命令時,一個或多個羣集主機中沒有響應。原因:沒有將遠程控制命令發送到羣集的 IP 地址。 解決方案:必須將命令發送到羣集的主要 IP 地址,可以在“網絡負載平衡屬性”對話框中指定該操作。確保將遠程命令發送到正確的 IP 地址。 原因:Internet 協議安全 (IPSec) 對遠程控制通訊進行了加密。如果 NLB 遠程控制命令是從配置了 IPSec(以便 IPSec 對遠程控制通訊進行加密)的計算機發送的,則這些命令將無法正常運行。 解決方案:禁用 IPSec。 有關詳細信息,請參閱 Internet 協議安全 (IPSec) 幫助內容。 原因:防火牆未正確保護 NLB UDP 控制端口。默認情況下,會將遠程控制命令發送到羣集 IP 地址上的 UDP 端口 1717 和 2504。 解決方案:確保這些端口尚未被路由器或防火牆錯誤阻止。還可以通過修改相應的 NLB 參數來更改端口號。
使用主機的專用 IP 地址將其指定爲遠程控制命令的目標時,沒有應答。但是,按其優先級 (ID) 指定主機正常運行。 拒絕某些用戶(並非所有用戶)連接羣集。原因:正在進行負載平衡的應用程序沒有響應。 解決方案:這是一個應用程序特定的問題,與 NLB 無關。請參考您的應用程序文檔來更正此問題。您可能需要停止並重新啓動應用程序。 原因:如果羣集配置爲單播模式,則某個交換機可能已經知道了 NLB 網絡適配器的 MAC 地址。 解決方案:清除該交換機的端口到 MAC 地址的映射。 原因:在一個或多個主機上,未將羣集的 IP 地址添加到 TCP/IP 中。 解決方案:如果沒有使用 NLB 管理器配置您的羣集,則必須使用羣集的 IP 地址手動配置 TCP/IP。 原因:某個主機由於使用了 drainstop 或 stop 命令而正在離開羣集,但聚合未正常完成。 解決方案:等待聚合完成。如果聚合未完成,請參閱該疑難解答主題中後面的以下問題: 羣集主機啓動後便開始聚合,但它們從未完成聚合
無法通過使用 net config 和 Windows Management Instrumentation (WMI) 查看或更改網絡負載平衡的屬性。 由服務器或客戶端重設的到羣集 IP 地址的 TCP 連接數量異常。原因:在 NLB 主機上啓用了 HTTP keep-alive 值,並且啓用了 keep-alive 值的客戶端正在連接羣集。 解決方案:禁用 HTTP keep-alive 值。有關 HTTP keep-alive 值和 Internet 信息服務 (IIS) 的詳細信息,請參閱 IIS 文檔集。 若要從桌面上查看 IIS 文檔集,請安裝 IIS,然後單擊“開始”,再單擊“運行”,然後在“打開”文本框中鍵入以下命令: %windir%\help\iisrv.chm 原因:服務器上的系統資源不足,從而導致 TCP 拒絕連接。 解決方案:釋放系統資源,例如,通過添加額外的系統內存或者關閉不必要的應用程序。 原因:羣集已被分爲兩個單獨聚合的羣集,這樣導致多個節點要求獲得每個連接的所有權。 解決方案:刪除這兩個羣集,然後重新創建一個羣集。
當進行引起聚合的更改(如添加主機、刪除主機或排出主機)時,虛擬專用網絡 (***) 調用失敗。 羣集主機啓動後便開始聚合,但它們從未完成聚合。原因:在不同的羣集上輸入了不同數量的端口規則或者輸入了不兼容的端口規則。這將會阻止聚合。 解決方案:在每個羣集主機上,打開“網絡負載平衡屬性”對話框,並驗證所有主機都具有相同的端口規則。 原因:網絡適配器或電纜已損壞。 解決方案:使用 ping 命令測試連接情況。輸入主機的完全限定的域名。還可以通過使用 ping 命令按 IP 地址搜索域控制器以及按名稱和 IP 地址搜索其他網絡服務器,瞭解有關此問題的詳細信息。 原因:某個交換機或集線器上的雙工設置不匹配。 解決方案:確認每個交換機和集線器中的雙工設置配置正確。 原因:網絡上已經存在爲其中一個主機使用的專用 IP 地址。 解決方案:選擇一個新的 IP 地址,或刪除重複的地址。 原因:您的羣集包含運行 Windows 2000 的主機。 解決方案:您的羣集必須在所有主機上都運行 Windows Server 2008。僅當滾動升級到 Windows Server 2008 時,才支持包含運行 Windows Server 2003 和 Windows Server 2008 的主機的 NLB 羣集環境。不支持長期在同一個羣集中混合使用 Windows Server 2003 和 Windows Server 2008。 原因:在主機上配置了不同的羣集操作模式(單播和多播)。 解決方案:使用 NLB 管理器確保將所有主機配置爲具有相同的羣集操作模式。
備註 還可以查看 Windows 事件日誌以檢查錯誤和警告。有關詳細信息,請參閱安裝網絡負載平衡。 羣集移入和移出已聚合狀態。 羣集主機啓動後,網絡負載平衡報告聚合已完成,但是存在多個默認主機。原因:羣集主機已成爲不同子網的成員,因此無法在同一個網絡上訪問所有主機。 解決方案:確保所有羣集主機可以彼此通信。 原因:正在使用三層交換機。 解決方案:在主機和三層交換機之間放置一個兩層交換機。 原因:冗餘交換機的中斷導致羣集分爲兩個羣集,從而創建兩個默認的主機。 解決方案:刪除這兩個羣集,然後創建一個羣集。 原因:您的交換機已配置爲拒絕廣播數據包。 解決方案:將您的交換機配置爲可接受廣播數據包(請注意這可能會引入某些安全風險)或者將 NLB 羣集配置爲可使用多播模式。 原因:一個主機無法發送或接收檢測信號。 解決方案:使用 ping 命令測試與每個主機的連接情況。輸入主機的完全限定的域名。 原因:某個主機插入了交換機的錯誤端口中。 解決方案:使用交換機上的正確端口。
網絡負載平衡未應用負載平衡,默認主機處理所有網絡流量。原因:缺少端口規則。默認情況下,NLB 會將端口規則不管理的所有傳入網絡通訊引導至默認主機,這樣可確保您不希望進行負載平衡的應用程序行爲正常。 解決方案:若要對羣集上的應用程序進行負載平衡,請在每個羣集主機上爲該應用程序處理的 TCP/IP 端口創建端口規則。 原因:向單個主機羣集中添加了第二個主機,但第二個主機配置不正確。羣集從不聚合並且初始主機繼續處理所有通訊。 解決方案:仔細查看(如果需要,請進行更正)第二個主機上的每個設置,例如羣集 IP 地址、專用 IP 地址和端口規則。 原因:如果羣集配置爲單播模式,則某個交換機可能已經知道了 NLB 網絡適配器的 MAC 地址。 解決方案:清除該交換機的端口到 MAC 地址的映射。 原因:代理服務器正在向處於“單一”相關性模式的羣集中發送使用單個 IP 地址的所有連接。 解決方案:將代理服務器配置爲使用多個 IP 地址。
在羣集主機之間意外交換通訊,並且斷開了 TCP 連接。 沒有在羣集主機之間對網絡通訊均勻地進行負載平衡。 對 Microsoft Internet Security and Acceleration (ISA) Server 使用網絡負載平衡時,一個羣集主機記錄被引導至另一個主機的專用 Internet 協議 (IP) 地址的被阻止的數據包。 無法在 64 位版本的環境中創建網絡負載平衡羣集。 |