確保 Microsoft Exchange Server 2010 中的高可用性
郵箱數(shù)據(jù)庫和它們包含的數(shù)據(jù)對于任何 Exchange 組織都十分重要。為了確保郵箱數(shù)據(jù)庫的高可用性,Exchange 2007 提供了各種復制和群集選項,包括本地連續(xù)復制、單一副本群集和群集郵箱服務器。雖然這些功能相對早期功能有所改進,但它們?nèi)悦媾R許多實現(xiàn)難題。對于初學者,實現(xiàn)高可用性的每種方法都是以不同方式管理的。通過單一復制群集,群集中的所有郵箱服務器都使用共享存儲。實現(xiàn)群集意味著 Exchange 管理員必須配置 Windows 故障轉移群集,而這種群集相當復雜,管理員可能需要用大量時間才能取得較長的正常運行時間。在連續(xù)復制中,Exchange 2007 使用內(nèi)置異步復制來創(chuàng)建數(shù)據(jù)的副本,然后使用事務日志傳送和重播來維護這些副本。雖然您在非群集環(huán)境中使用本地連續(xù)復制來創(chuàng)建本地副本,但在群集環(huán)境中要使用群集連續(xù)復制或備用連續(xù)復制,并且管理每種連續(xù)復制的方式有所不同。
Exchange Server 2010 擁有全然不同的實現(xiàn)高可用性的方法,它將高可用性集成到其核心體系結構中,從而產(chǎn)生一種提供服務可用性、數(shù)據(jù)可用性和自動恢復的端到端解決方案。其結果是,單一的關鍵高可用性解決方案取代了以前所使用的很多不同解決方案。此解決方案就是數(shù)據(jù)庫可用性分組 (DAG)。
DAG 在數(shù)據(jù)庫級(而不是在服務器級)提供自動故障轉移和恢復,在您部署包含多個郵箱數(shù)據(jù)庫副本的多個郵箱服務器時無需使用群集。由于這些變化,構建高可用性郵箱服務器解決方案不再需要群集硬件或高級群集配置。DAG 自身提供了用于實現(xiàn)高可用性的基礎組件,屬于同一 DAG 的郵箱數(shù)據(jù)庫的故障轉移自動實現(xiàn)。可以將 DAG 擴展到多個 Active Directory 站點,并通過對郵箱服務器進行相關體系結構更改而使單一郵箱數(shù)據(jù)庫能夠在 Active Directory 站點之間移動。如此一來,一個 Active Directory 站點中的單一郵箱數(shù)據(jù)庫便可以故障轉移到其他 Active Directory 站點。
您需要記住的是,數(shù)據(jù)庫副本僅適用于郵箱數(shù)據(jù)庫。為了獲得公用文件夾數(shù)據(jù)庫的冗余性和高可用性,您將使用公用文件夾復制。與群集連續(xù)復制(同一群集中不能存在一個公用文件夾數(shù)據(jù)庫的多個副本)不同的是,您可以在一個 DAG 中的服務器之間復制公用文件夾數(shù)據(jù)庫。
在深入探討 DAG 的細節(jié)之前,我們來看一下 Exchange 2010 中的高可用性選項在其他方面的變化。
Exchange Server 2010 中高可用性功能的簡要介紹
在以前的版本中,Exchange 作為一個使用群集資源管理模型的群集應用程序運行。在此方法中,您通過先創(chuàng)建一個 Windows 故障轉移群集、然后在群集模式中運行 Exchange 安裝程序來實現(xiàn)郵箱服務器的高可用性。作為安裝過程的一部分,將會注冊 Exchange 群集資源 DLL (exres.dll),從而允許創(chuàng)建群集郵箱服務器。相比之下,Exchange 2010 不作為群集應用程序運行,群集資源管理模型也不再用于獲得高可用性。Exchange 群集資源 DLL 和它提供的所有群集資源都不再存在。Exchange 2010 使用其內(nèi)部自有的高可用性模型。雖然 Windows 故障轉移群集的某些組件仍在此模型中使用,但它們現(xiàn)在只由 Exchange 2010 進行管理。
非常有趣的是,很多基礎復制技術都保留下來,只是經(jīng)過改進現(xiàn)在以明顯不同的方式工作。由于已從 Exchange 2010 移除存儲組,因此將在數(shù)據(jù)庫級別運行連續(xù)復制。Exchange 2010 將管理員定義的單一 TCP 端口用于數(shù)據(jù)傳輸,而不是將服務器消息塊 (SMB) 用于日志傳送和種子設定。它不是讓被動副本從主動副本拉出一個已關閉的日志文件,而是讓主動副本將日志文件推入被動副本,并使用加密來保證數(shù)據(jù)流的安全性,或將數(shù)據(jù)流壓縮以減小復制數(shù)據(jù)的大小。雖然早期版本 Exchange 中數(shù)據(jù)庫的主動副本僅可用于設定種子和重新設定種子,但在 Exchange Server 2010 中,郵箱數(shù)據(jù)庫的主動和被動副本都可指定為用于設定種子和重新設定種子的源,從而允許您更輕松地將數(shù)據(jù)庫副本添加到其他郵箱服務器。
另一個重大變化與復制數(shù)據(jù)的方式有關。在 Exchange 2007 中,Microsoft Exchange 復制服務會將日志重播到被動數(shù)據(jù)庫副本中,并構建一個用于減少 I/O 讀取操作的讀/寫操作緩存。但是,在數(shù)據(jù)庫的被動副本激活之后,該數(shù)據(jù)庫緩存會丟失,因為用于裝載數(shù)據(jù)庫的 Microsoft Exchange 信息存儲服務并沒有提供該緩存。這意味著該被動副本已激活并在沒有就緒緩存的一個冷狀態(tài)下提供。冷狀態(tài)與數(shù)據(jù)庫緩存在服務器重新啟動或執(zhí)行緩存的服務重新啟動之后的狀態(tài)相同。處于冷狀態(tài)意味著服務器不具有緩存的讀/寫操作,這種情況通常會增加所需 I/O 讀取操作的數(shù)量,直到緩存大小增加到足以減少服務器上的磁盤 I/O。在 Exchange 2010 中,Microsoft Exchange 信息存儲服務將重播日志并處理裝載操作,以確保在激活并提供被動副本時有可用的緩存。因此,在發(fā)生切換或故障轉移之后,服務器更有可能使用緩存來減少 I/O 讀取操作。
對于高可用性郵箱服務器,電子郵件一旦到達郵箱中就將變得安全;但是,對傳輸中的電子郵件加以保護又是另外一回事。如果在處理郵件時集線器傳輸服務器出現(xiàn)故障且無法恢復,郵件就可能丟失。作為防范數(shù)據(jù)丟失的安全措施,Exchange 2007 引入了傳輸轉儲程序功能,該功能可確保集線器傳輸服務器保持最近傳送到收件人的一個郵件隊列,這些收件人的郵箱通過本地連續(xù)復制或群集連續(xù)復制加以保護。郵件保留在傳輸轉儲程序中,直到達到管理員定義的時間限制或大小限制。發(fā)生故障轉移時,群集郵箱服務器自動請求 Active Directory 站點中的每臺集線器傳輸服務器從傳輸轉儲程序隊列重新提交郵件。這種方法可防止郵件在群集進行故障轉移所需的時間內(nèi)丟失。雖然這種方法很有效,但它僅可用于連續(xù)復制環(huán)境中的郵件傳送,無法解決郵件在集線器傳輸服務器和邊緣傳輸服務器之間傳輸時可能發(fā)生的郵件丟失問題。
Exchange 2010 通過幾種方式彌補了這些不足。傳輸轉儲程序現(xiàn)在可接收反饋,以確定已經(jīng)傳送和復制了哪些郵件。集線器傳輸服務器將保留發(fā)送到 DAG 中已復制郵箱數(shù)據(jù)庫的郵件的副本。該副本保留在傳輸隊列 (mail.que) 中,直到集線器傳輸服務器得到通知,獲知表示郵件的事務日志已成功復制到郵箱數(shù)據(jù)庫的所有副本并已由這些副本進行檢查。然后,將從傳輸轉儲程序將這些日志截斷,以確保傳輸轉儲程序隊列僅用于保持尚未復制相應事務日志的那些郵件副本。另外,當一個 Active Directory 站點中的郵箱數(shù)據(jù)庫故障轉移到另一個 Active Directory 站點時,就會將傳輸轉儲程序重新傳送請求發(fā)送到原始站點和新站點。
為了在傳輸郵件的整個過程中提供郵件冗余性,Exchange 2010 新增了卷影冗余功能。卷影冗余采用了與傳輸轉儲程序相似的方法,不同之處是它將推遲從傳輸數(shù)據(jù)庫刪除郵件的操作,直到傳輸服務器驗證該郵件所有后續(xù)躍點均已完成傳送時才執(zhí)行。如果傳輸服務器無法驗證下一躍點傳送,則重新提交該郵件以傳送到下一躍點。與在多臺服務器上創(chuàng)建郵件的同一副本相比,這種方法占用的網(wǎng)絡帶寬更少。此時,所生成的唯一附加網(wǎng)絡流量是在傳輸服務器之間交換丟棄狀態(tài)消息所生成的流量。丟棄狀態(tài)消息是由 Shadow Redundancy Manager 生成的,用于指示準備好從傳輸數(shù)據(jù)庫丟棄電子郵件的時機。
卷影冗余是簡單郵件傳輸協(xié)議 (SMTP) 服務的擴展,只要 SMTP 連接中的兩臺服務器都支持該功能,就可以使用該功能。當您的路由拓撲中有冗余消息路徑時,卷影冗余可以消除對任何特定集線器狀態(tài)或邊緣傳輸服務器狀態(tài)的依賴,從而使任何傳輸服務器都可處置。在這種情況下,如果傳輸服務器出現(xiàn)故障,或者您想將其脫機以進行維護,則您可隨時這樣做,方法是將其移除、替換或升級,而不必清空其隊列或擔心丟失郵件。
Shadow Redundancy Manager 使用一種檢測信號方法來確定擁有卷影郵件隊列的服務器的可用性。啟動服務器時會發(fā)出一個 XQUERYDISCARD 消息,目標服務器返回丟棄通知作為響應。此通知交換就是檢測信號。
如果一臺服務器在檢測信號超時間隔(默認為 300 秒)內(nèi)無法與主服務器建立連接,則該服務器將計時器重置并重試最多三次(檢測信號重試次數(shù)的默認值)。如果在達到最多重試次數(shù)之前,主服務器未響應,則該服務器確定主服務器已出現(xiàn)故障,承擔起卷影郵件的所有權,并重新將它們提交。隨后,郵件將傳送到它們的相應目標位置。在某些情況下,例如在原始服務器重新與其原始數(shù)據(jù)庫聯(lián)機時,可能會發(fā)生重復的郵件傳送。由于 Exchange 中具有重復郵件檢測功能,因此 Exchange 郵箱用戶不會看到重復的郵件。但是,非 Exchange 郵箱服務器上的收件人可能會收到重復的副本。
深入探討 DAG
雖然到目前為止我所介紹的許多高可用性增強功能十分重要,但沒有一個功能對 Exchange 2010 管理方式的影響超過數(shù)據(jù)庫可用性分組。DAG 是 Exchange 2010 中的基礎高可用性組件,它的規(guī)則十分簡單。每個 DAG 都可具有最多 16 個郵箱服務器作為其成員。每個郵箱服務器只能作為一個 DAG 的成員,并且只能承載一個數(shù)據(jù)庫副本。所承載的副本可以是主動副本或被動副本。主動副本與被動副本的不同之處在于:主動副本是用戶一直使用和訪問的副本而不是脫機副本。不能在同一臺服務器上創(chuàng)建同一個數(shù)據(jù)庫的兩個副本。這樣,DAG 中的任何服務器都可以承載 DAG 中任何其他服務器上的任何郵箱數(shù)據(jù)庫的一個副本。雖然多個數(shù)據(jù)庫可同時處于主動狀態(tài),但在任意時刻,任何特定數(shù)據(jù)庫的僅一個副本可處于主動狀態(tài),該數(shù)據(jù)庫的最多 15 個被動副本可位于 DAG 中的其他服務器上。
在 Exchange 組織中創(chuàng)建第一個 DAG 時,Exchange 將創(chuàng)建一個 Windows 故障轉移群集,但是沒有 Exchange 群集組,群集中也沒有存儲資源。DAG 僅使用 Windows 故障轉移群集的群集檢測信號、群集網(wǎng)絡和群集數(shù)據(jù)庫功能。群集檢測信號用于檢測故障。每個 DAG 需要至少一個網(wǎng)絡用于復制通信,需要至少一個網(wǎng)絡用于 MAPI 和其他通信。群集數(shù)據(jù)庫將存儲數(shù)據(jù)庫狀態(tài)更改和其他重要信息。當您將其他服務器添加到 DAG 中時,這些服務器將加入到基礎群集中,該群集的仲裁模型將基于成員服務器的數(shù)目根據(jù)需要自動得到修改。
Active Manager 是 Exchange 2010 的一個組件,它提供了資源模型和故障轉移管理功能。Active Manager 可在作為 DAG 成員的所有郵箱服務器上運行,充當特定數(shù)據(jù)庫的主角色擁有者 (Primary Active Manager) 或備用輔助角色擁有者 (Standby Active Manager)。主角色擁有者將確定哪些數(shù)據(jù)庫副本是主動副本以及要激活哪些副本。主角色擁有者接收拓撲更改通知并對服務器故障做出反應。主角色擁有者還擁有群集仲裁資源。如果充當主角色擁有者的服務器發(fā)生故障,則主角色會自動移動到 DAG 中的另一臺服務器,該服務器將取得對群集仲裁資源的所有權。
輔助角色擁有者將檢測復制的本地數(shù)據(jù)庫以及本地信息存儲庫的故障,并將故障通知發(fā)送給主角色擁有者,要求主角色擁有者啟動故障轉移。輔助角色擁有者不會確定哪臺服務器進行接管,也不會更新數(shù)據(jù)庫的位置狀態(tài)。主角色擁有者執(zhí)行這些任務。當一個主動數(shù)據(jù)庫出現(xiàn)故障時,Active Manager 使用一種最佳副本選擇算法來選擇要激活的數(shù)據(jù)庫副本。此算法將根據(jù)數(shù)據(jù)庫副本的數(shù)據(jù)庫狀態(tài)、內(nèi)容索引狀態(tài)、副本隊列長度以及重播隊列長度來確定要激活的最佳數(shù)據(jù)庫副本。如果一個以上數(shù)據(jù)庫副本滿足選擇條件,則將使用激活首選值,并激活和裝載具有最低首選值的數(shù)據(jù)庫。
在將服務器添加到 DAG 之后,可以將每臺服務器上的主動數(shù)據(jù)庫復制到 DAG 中的其他服務器,并且您可以配置其他 DAG 屬性,如用于數(shù)據(jù)庫復制的網(wǎng)絡加密或網(wǎng)絡壓縮。在 DAG 內(nèi),事務日志將復制到擁有郵箱數(shù)據(jù)庫副本的每臺成員服務器上,并重播到該郵箱數(shù)據(jù)庫的副本中。創(chuàng)建了多個數(shù)據(jù)庫副本以后,您可以使用 Exchange 管理控制臺和 Exchange 命令行管理程序來監(jiān)視 DAG 的復制和運行狀態(tài)。數(shù)據(jù)庫故障轉移可在發(fā)生中斷故障時自動執(zhí)行,或者您也可以手動啟動切換。在切換過程中將卸除主動副本,然后裝載 DAG 中另一臺服務器上的被動副本并使該副本成為主動副本。
真正的簡化
如前文所述,Exchange 2010 有很多可提高可用性的重要增強功能,包括將高可用性功能集成到核心中以及用于提高可用性的體系結構更改等。在所有新增功能和更改功能當中,我最喜歡的功能是 DAG。DAG 真正簡化了群集的實現(xiàn),可使您專注于最重要的事情(即數(shù)據(jù))。希望本文對您有所幫助,同時推薦您查閱我的新書:《Exchange Server 2010 Administrator’s Pocket Consultant》、《Windows 7 Administrator’s Pocket Consultant》和《Windows Server 2008 Administrator’s Pocket Consultant, 2nd Edition》。
William R. Stanek (williamstanek.com) 是一位杰出的技術專家、非凡的培訓講師和屢獲殊榮的作家,所著書籍已有 100 多本。目前已出版或即將出版的書籍包括:《Active Directory Administrator’s Pocket Consultant》、《Group Policy Administrator’s Pocket Consultant》、《Windows 7 Administrator’s Pocket Consultant》、《Exchange Server 2010 Administrator’s Pocket Consultant》和《Windows Server 2008 Inside Out》。在 Twitter 上可以了解 Stanek 的最新情況,網(wǎng)址為 twitter.com/WilliamStanek。
文章來源:TechNet中文網(wǎng)
【編輯推薦】





















