2013年9月23日 星期一

建立高可用性與負載平衡的Windows DHCP 服務 (Setup High Availability Windows DHCP Service)

DHCP協定服務是企業網路普遍採用的基礎網路結構服務,其主要功能為自動指派IP位址和相關的TCP/IP組態訊息給網路上的主機設備,由於此種動態配置IP組態的方式可以有效的降低TCP/IP組態管理的負荷並且降低人為輸入組態錯誤的可能,所以幾乎成為企業網路上最常見的服務之一 ,因此市場上不僅為數眾多的有線或無線路由設備均有支援DHCP服務、網路亦可以下載到不少免費的DHCP服務軟體、而Windows Server和UNIX/Linux等主流的作業系統本身也都支援DHCP服務。

Windows Server 2012推出之後,其內建的DHCP角色服務唯一令作者感興趣的加強功能就是DHCP容錯移轉(DHCP Failover)功能,本文將探討Windows DHCP伺服器所支援的各種高度可用性和容錯機制,然後再說明Windows Server 2012新增的DHCP 容錯移轉轉功能的使用實務。 

Windows Server DHCP 高度可用性設計方法

為了避免DHCP伺服器因各種軟硬體的失效或錯誤而導致企業用戶無法取得有效的IP位址而無法連接網路,設計容錯和高度可用性的DHCP伺服服務就有其必要性,另一方面,若基於用戶端過多而希望降低伺服器負荷的效能上考量,支援負載平衡的DHCP服務就成為另一項重要的考量,Windows Server DHCP服務提供容錯能力的設計從早期建議的劃分領域(Split scope )方法(直至windows Server 2008 R2 才提供簡易實作的精靈程式),到後來的容錯移轉叢集亦支援DHCP服務,而最新的Windows Server 2012 推出了DHCP 容錯移轉功能,因此目前Windows DHCP角色服務總共支援了三種不同的高可用性或負載平衡的做法:

1. 分割領域方法(split scope approach) 使用二部獨立伺服器共同負責同一領域的IP組態配置工作,通常主要伺服器負責指派領域中大部份比率的IP位址(80%),而備援伺服器則指定少數比率的IP位址(20%),並回應用戶端請求有一段時間延遲,一旦用戶端無法順利用主要伺服器取得有效IP時,即可以使用較慢回應的備援伺服器的IP位址。
2. 容錯移轉叢集內的DHCP角色 此種方法需要建立微軟的容錯移轉叢集(Failover Cluster)功能並在叢集內新增DHCP角色,部署容錯移轉叢集通常需使用共用儲存區(如iSCSI、SAN)將DHCP資料庫存放在網路共用,一旦資源擁有者發生故障或失效,則另一部伺服器將接管共用資源繼續提供服務,此種部署方式安裝與維護上均較為複雜。
3. DHCP容錯移轉 Windows Server 2012新增一項DHCP高可用性功能,支援負載平衡和熱待命二種模式,二部伺服器會自動複寫 彼此租用資訊,因此當一部伺服器發生故障時,另一部伺服器可以毫無疑問的繼續整個網段的服務,這可謂是一項相當彈性、有效率的DHCP高可用性功能。

若進一步分析這三種不同的方法,可列表指出其差異點:

  劃分領域 容錯移轉叢集 DHCP容錯移轉
(唯有 WinS2012)
需Active Directory支援
容錯能力 (避免單點失誤)
負載平衡能力
兼具容錯和負載平衡能力
需共用儲存區
支援兩部以上伺服器 可設計 是 (最多64部)
複製彼此租用資料 不需要
(因使用共用儲存區)

劃分領域方法(split scope approach)

從 Windows NT的 DHCP服務時代,微軟最早建議的容錯設計方式就是領域分割方法,典型的做法是將領域所可以配置的IP位址分割成明顯差別大小的二部份,分別由二部伺服器上建立相同的子網路領域並排除對方可配置的IP位址群,再讓負責配置較小部份的DHCP伺服器可以較慢回覆用戶端租用的請求,如此一來,平日正常運作下,主要是由分配較大IP比率的DHCP伺服器負責網路上的IP組態指派工作,一旦出了問題而無法提供服務後,網路用戶端仍可以由第二部擁有較低可配置IP位址比率的伺服器上租得有效的IP位址與組態資訊。

如下圖所示,安裝二部DHCP伺服器,並且按照80/20的百分比率劃分子網路的領域允許二部伺服器配分的IP位址,將子網路領域前面80%的IP位址指定給第一部伺服器配發,並排除後面20%的IP位址,另一部伺服器則建立相同子網路領域並排除了前面80%的IP位址,然後設定延遲一段短時間後才會回應用戶端租用請求。

萬一某部伺服器當掉了,剩下的伺服器雖可提供子網段IP配置工作,但只能提供少數比率的IP位址來加以配置。

 

dhcp0

 

上圖80/20比率的領域劃分比率並非固定,管理員可隨著不同的環境與目的而自行變更,假若您的DHCP服務建置的最主要目的在於提供負載平衡能的能力, 那麼領域的分割方式或許可採50/50比率劃分,並且無需設定任何延遲效果,因此網段內的用戶端就可以機率均分的方式來向二部伺服器租用IP組態,進而達成負載平衡的DHCP服務架構。

d11

劃分領域的設計方法亦可應用於多個網段的領域上,如下圖範例,二個不同子網路方別建立了DHCP伺服器,為了彼此做為其備援機器,因此每部DHCP伺服器上均新增二個領域,第一個領域負責發配自身網段上大部份百分比的IP位址,第二個領域則負責配發另一個網域少部份比率的IP位址,如此一來,一旦任何一部伺服器故障而中斷服務後,網段的用戶端仍可以透過轉接代理機器向另一個網段的DHCP伺服器內的第二個領域租用正確子網路的IP組態。

dhcp01

使用DHCP管理工具所提供的精靈程式來建立二部伺服器的劃分領域方法之高可用性DHCP服務相當直覺而簡單,步驟如下:

  1. 首先,在二部服器上利用【伺服器管理員】新增DHCP角色並完成後續安裝設定。
  2. 啟動【DHCP】管理工具,為了方便集中管理和檢視內容,因此在介面上新增安裝好的二部DHCP伺服器。
    dhcp1
  3. 接下來,請在第一部伺服器上建立適當的領域與選項,如下圖範例建立了一個子網路192.168.1.0/24的領域。
    dhcp2
  4. 由第一部伺服器的『IPv4↘領域』項目的右鍵功能表上選取『進階↘領域劃分』這個選項以啟動『DHCP 領域劃分設定精靈』程式。
    dhcp3
  5. 請在『DHCP 領域劃分設定精靈』程式出現的第一個畫面上直接按『 下一步』繼續。
  6. 輸入或選取要劃分領域的額外伺服器。
    dhcp5
  7. 『劃分百分比』設定頁中,決定二部伺服器的劃分百分比率,下方就會依照比率顯示二部伺服器在領域內所各自要排除的IP範圍。
    dhcp6
  8. 接下來將設定第二部DHCP伺服器收到用戶端租用的DHCPDISCOVER封包後,等待延遲1000毫秒(等於一秒)後才提供IP配置,如此一來,由於第一部伺服器並沒有延遲提供IP位圵的配置封包,因此只要第一部 DHCP伺服器正常於線上提供服務,則大部份的用戶端應該會較快而成功的向第一伺服器租用到有效的IP組態,而不會耗費擁有較少可配置IP位址的第二部伺服器領域內的IP,不過如果第一部伺服器故障,則網段內的用戶端也可以成功的向第二伺服器租用到有效的IP組態。
    dhcp71
  9. 最後,檢視領域劃分設定摘要是否有錯誤或不適當,如果一切正確無誤,則按『完成』以完成精靈程式並建立劃分領域的二部伺服器組態。
    dhcp81

完成後,請確認已啟動兩部伺服器的領域並重新整理之後,檢視是否如下圖的二部伺服器均已如上述設定的新增了一個排除正確百分比IP範圍的領域。

dhcp9

領域劃分方法的限制與缺點

劃分領域的方法可說是最早被微軟建議採用的DHCP容錯和負載平衡能力的建構方式,但此種傳統的方法卻存在某些限制:

  • 二部DHCP伺服器並無對方的租用資料,因此一旦對方當掉後,另一部伺服器並無法取代對方來提供繼續租用的能力,亦即無法支援用戶端相同IP位址的持續租用能力。
  • 若子網路的DHCP用戶端較多,多到與整個領域可用的IP位址數量差不多,則分割領域方法下,主要伺服器一旦無法提供服務超過一段較長的時間(導致原先許多租用用戶皆已過了租用期限),則另一部伺服器所剩下的20%可用IP位址恐怕不夠租用。

容錯移轉叢集內的DHCP角色

建立容錯移轉叢集內的DHCP角色服務為Windows Server另一種容錯能力DHCP伺服服務的部署方式,但部署容錯移轉叢集需要共用儲存區,而共用儲存區若無妥善規劃,恐有單點失誤的可能,建立容錯移轉叢是較複雜的工作,因為這牽涉到建立共用儲存區、設定節點多張網卡介面,加入網域,連接共用儲存區,安裝容錯移轉叢集功能,安裝與設定DHCP角色等工作。

總之,建立容錯移轉叢集的複雜度與成本均較高,還需要有Active Directory目錄服務的支援,因此這是一個代價較昂貴的方案,除非公司網域內已存在容錯移轉叢集,額外新增DHCP角色並不需要花費太多工夫,否則這個方法比不上其它二種方法來得簡單而容易部署。

2013-09-13_082859

Windows Server 2012 DHCP容錯移轉功能

由於先前Windows DHCP的高可用性設計,管理員若採用劃分領域方法,因為伺服器之間並無對方的租用訊息,故無法支援用戶端持續租用相同IP的能力,而另一種容錯移轉叢集的方法卻又太過麻煩,因此Windows Server 2012新增了一項DHCP容錯移轉功能,讓二部DHCP伺服器可自動複製租用訊息,又無叢集建置上的繁瑣與複雜,再加上可支援負載平衡和熱待機模式以符合不同環境下的需求,因此成為了Windows Server 2012系統中建置高可用性的DHCP 服務的首選方案。

DHCP 容錯移轉部署的條件

部署Windows Server 2012的DHCP 容錯移轉功能需要符合下列條件:

  • 二部Windows Server 2012 的DHCP伺服器
  • Active Directory 目錄服務為建議環境,但並非絕對必要
  • 二部DHCP伺服器需要同步時間,其延遲時間不能超過一分鐘以上

DHCP 容錯移轉的限制

DHCP 容錯移轉功能並非完美,其部署使用上有一些限制或不便:

  • 只支援二部伺服器的容錯和負載平衡能力
  • 只限於IPv4領域,無法應用於IPv6
  • 只會自動複寫DHCP資料庫租用資料,設定組態需手動複寫

容錯移轉模式

Windows Server 2012 的DHCP 容錯移轉功能支援二種不同目標的模式:

負載平衡 (Load balance)
  • 預設模式,為主動/主動(Active/Active)運作模式
  • 此模式下二部伺服器將同時提供配置IP組態的服務,至於如何回應用戶端的DHCP請求,則是根據管理員所設定的負載平衡比率,預設比率為相同的50:50.
  • DHCP負載平衡模式的做法是計算請求的用戶端MAC位址的雜湊值,值介於1~256間,如為50:50配置比率,則計算結果若介於1-128,則由第一部伺服務回應用戶端請求,否則由第二部伺服器負責回應請求。
    dhcploadbalance
熱待命 (Hot Standby)
  • 熱待命模式,為主動/被動(Active/Passive)運作模式
  • 熱待命模式下,一部主要伺服器(primary Server)為使用中(Active)角色,負責目前於線上回應用戶請求,配置IP組態於用戶端,另一部次要伺服器(Secondary Server)則扮演為待命中(Standby)角色,一旦發生主要伺服器不在線上提供服務時才會接手領域或子網路的IP配置工作,不過管理員需要預先保留一定比率範圍IP位址予待命伺服器,這些位址將在主要伺服器無法提供服務時於用戶端重置重疊時間上限(MCLT)這段時間使用。
  • 次要伺服器會在過了MCLT期間後才會接管整個IP範圍。 當使用中的伺服器出了問題無法提供服務時,待命伺服器由正常狀態(Normal state)轉換為通訊中斷狀態(Communication Interrupted state )後才會開始回應用戶端請求,而一旦原使用中伺服器恢復正常再度回到線上後,待命中伺服器又會回至待命的正常狀態。
  • 熱待命模式適合部署在不同區域的災難復原場所。
  • 典型的熱待命部署模式為企業網路包括了總公司和多個不同地理區域的分公司,而且均各自提供自己的主要DHCP伺服器,管理員為了提供分公司網路的DHCP服務之容錯能力,因此可規劃在總公司的DHCP伺服器建立待命的領域以備不時之需。
    standby2

DHCP 容錯移轉狀態和間隔參數

容錯移轉伺服器有三種主要的狀態:正常標準(Normal)、連絡中斷(Communication Interrupted)和夥伴停機(Partner Down)。

  • 正常狀態 (NORMAL):這是二部伺服器正常運作且可相互連絡的狀態,亦是管理人員在大部份時間所希望看到的狀態。
  • 遺失與夥伴的連絡 (COMMUNICATIONS INTERRUPTED):一旦無法與另一部伺服器連絡就會進入這個模式下,而此模式下,每部伺服器獨立運作,每部伺服器依據負載平衡的設計來回應所有DHCP用戶端訊息,但無法確定夥伴伺服器是否當機,亦即夥伴伺服器這時可能只是單純的無法連線,或也有可能已經無法正常作。
  • 夥伴停機 (PARTNER DOWN):在此模式下,伺服器判斷夥伴伺服器已經無法正常作,因此伺服器將會回應所有DHCP用戶端請求。

管理人員可以利用二個DHCP容錯移轉的二個可設定的間隔時間來控制完全容錯移轉的速度和狀態變換速度:

  • 自動狀態轉換間隔(Auto State Switchover Interval)
    當伺服器偵測到無法連線至夥伴後會切換至通訊中斷狀態,直到管理員手動變更狀態至夥伴當機狀態,不過管理員也可以設定隔多久後自動將狀態通訊中斷狀態轉換至當機狀態,如果沒有啟用自動狀態轉換間隔,那麼就需要手動方式才能夠變換至夥伴停機狀態。
  • 用戶端前置重疊時間上限(Maximum Client Lead Time ;MCLT)
    MCLT用來決定一旦夥伴伺服器不在線上,伺服器需等待多久時間後才能完全接管整個領域的IP址配置工作,此值不能設為0,預設值為1小時。 在熱待命模式下,待命伺服器會在『夥伴停機』狀態後再經過MCLT間隔時間之後才會接管啟動伺服器所有可用的IP位址集區。

下圖說明了三種DHCP容錯移轉的狀態和和轉換的間隔時間設置方式。

dhcpstate1

 

此外,基於安全性理由,DHCP容錯移轉伺服器還需要驗證訊息來源的正確性,因此提供了訊息驗證功能:

  • 訊息驗證(Message Authentication)
    透過共用密碼(shared secret)的設定讓二部伺服器可以在容錯關係溝通中進行訊息驗證,確保傳遞來源的安全性。

DHCP 容錯移轉的防火牆考量

Windows Server 2012 DHCP伺服器需使用TCP 647連接埠來傾聽容錯移轉的通訊流量,所以預設上將會放行下列二個輸入與輸出規則:

  1. Microsoft-Windows-DHCP-Failover-TCP-In
  2. Microsoft-Windows-DHCP-Failover-TCP-Out

建立DHCP 容錯移轉伺服器

建立Windows Server 2012 容錯移轉伺服服務很簡單:

  1. 首先,利用【伺服器管理員】於二部Windows Server 2012 伺服器上新增DHCP角色並完成後續安裝設定。
  2. 為了方便集中管理和檢視設定內容,建議在第一部伺服器的DHCP管理工具介面上新增已安裝好的二部DHCP伺服器。
  3. 接下來請在第一部伺服器上啟用『新增領域精靈』程式以建立領域與適當的選項。
  4. 在第一部伺服器的『IPv4』或領域節點的右鍵功能表選取『 設定DHCP 容錯移轉』以啟用精靈程式。
    dhcp10
  5. 精靈程式第一個設定頁上請勾選『全選』或希望設定為容錯移轉的領域。
    dhcp11
  6. 接下來請輸入指定容錯移轉的夥伴伺服器。
    dhcp12
  7. 於『建立新的容錯移轉關係』設定頁設定DHCP容錯移轉伺服器關系的各項參數,包括了:用戶端前置重疊時間上限(Maximum Client Lead Time ;MCLT)、採用的模式(負載平衡或熱待機)、狀態轉換間隔、訊息驗證等。
    dhcp14
  8. 最後,完成精靈程式,執行建立DHCP容錯移轉。
    dhcp16

檢視 DHCP容錯移轉狀態

一旦負載平衡模式成功建立後,您必需要能夠隨時掌控DHCP容錯移轉的二部伺服器的狀態是否正常,若有錯誤發生就需要診斷問題原因並將問題加以排除使其恢復正常,底下說明如何檢查和診斷DHCP容錯移轉功能。

首先,您可以利用 "get-dhcpserverv4failover" 這個 cmdlet來檢查並確認目前的DHCP Failover伺服器的關係和組態設定內容。

dhcp20

另一方面,從DHCP管理工具上亦可看出二部伺服器目前擁有相同的領域和IP位址配置範圍,因此目前子網路的IP位址配置工作將由這二部伺服器分擔並且彼此備援。

dhcp18

一旦DHCP容錯移轉服務開始配置IP組態後,由於二部伺服器需要自動複製其租用資訊,因此不論是由那一部伺服器成功的提供IP位址給用戶端後,即會複製到另一部伺服器,因此二部伺服器的『位址租用』內將擁有相同的租用資料。

dhcp19

如果二部伺服器間的網路連線有問題,或任何一部服器出了問題,這時候另一部機器就會進入『遺失與夥伴的連絡』狀態,這可由領域的內容對話方塊的『容錯移轉』設定頁和get-dhcpserverv4failover執行結果看出端倪。

dhcpstate2

若經過一段時間均無法連絡,則是否會進入下一個階段的『夥伴停機』,端看管理員是否設定『自動狀態轉換間隔』(預設為1小時)或是手動進入,下圖示範了手動轉換至『夥伴停機』狀態並利用get-dhcpserverv4failover看出的最後顯示的結果。

dhcpstate3

同步DHCP容錯移轉

為了確保用戶端不論向那一部伺服器租用IP組態,其取得的網路組態均是相同的,一旦管理員變更某一部伺服器的領域內容之後就得執行手動的複寫工作,而手動的複寫工作將會複寫領域的NAP設定、IP領域範圍與選項、保留資訊與原則設定等資訊至夥伴伺服器。DHCP管理工具上提供了不同等級的手動複寫做法:

  • IPv4 節點:複寫所有的容錯領域
  • 領域節點:複寫DHCP關係內的所有領域或所選取的單一領域

dhcprepl

診斷DHCP容錯移轉問題

診斷DHCP容錯移轉問題大多需要依賴記錄事件,一旦DHCP容錯移轉功能遭遇錯誤和異常,管理人員就必需利用Windows Server 2012 新增的DHCP容錯移轉設定稽核和容錯移轉的事件記錄,

有關於設定稽核事件記錄在『事件檢視器』工具內的『應用程式及服務記錄檔』,其路徑為 /Microsoft\Windows\DHCP Server\Operational,這個事件記錄主要記錄組態設定的變動,包括建立、移除容錯移轉與領域、變更設定等。因此管理人員可由此檢視DHCP容錯移轉的組態設定變動情形。

2013-09-12_201347

此外,另一個事件路徑:『應用程式及服務記錄檔』下的 /Microsoft\Windows\DHCP Server\Admin事件主要是記錄狀態變更情形,因此可由此觀察狀態轉換情況是否異常。

2013-09-12_202446

移除DHCP容錯移轉領域

若基於特定的管理理由,某個DHCP容錯移轉領域不再需要,則管理員可於DHCP管理工具中,利用右鍵按一下領域並選取功能表上的『移除容錯移轉設定』選項,待畫面出現一警告對話方塊時,按下『確定』按鈕即可移除領域的容錯移轉關係,因此夥伴伺服器上的領域會被刪除,但本伺服器上的領域會存在(只不過不再支援容錯和負載平衡能力),若此領域日後已不再為網路上所需,則由右鍵功能中選取『刪除』即可完成整個領域的移除工作。

dhcpremove1

結語

建置具有容錯或負載平衡架構能力的Windows Server 2012 DHCP服務可採用劃分領域、容錯移轉叢集和DHCP容錯移轉三種方法,劃分領域方法無法支援用戶端以相同IP位址持續租用之能力,亦不適用於高比率耗用子網路IP位址的環境下使用,容錯移轉叢集則有建置複雜且無法支援負載平衡能力,需ActiveDirectory環境和共用儲存區等諸多不便問題,因此可以讓二部DHCP伺服器自動複製租用訊息的DHCP容錯移轉功能就成為首選方案,DHCP容錯移轉擁有建置簡單、一般正常執行情況下可具有負載平衡的效能優點,一旦任何一部伺服器當掉,另一部伺服器在一段預先設計的時間後亦可接管整個領域的IP配置與租用能力,因此可避免先前二種方法的缺失,不過DHCP容錯移轉方法目前僅能應用於二部Windows Server 2012的DHCP角色伺服器共且無法支援IPv6。