Exchange Server Active Manager

Microsoft Exchange Server包含稱為Active Manager的元件,可管理高可用性平臺,其中包含資料庫可用性群組 (DAG) 和信箱資料庫複本。 Active Manager 會在所有信箱伺服器上的 Microsoft Exchange 複寫服務 (MSExchangeRepl.exe) 內執行。 在不是 DAG 成員的信箱伺服器上,有一個 Active Manager 角色: 獨立 Active Manager

在屬於 DAG 成員的伺服器上,有兩個 Active Manager 角色: 主要 Active Manager (PAM) 和 待命 Active Manager (SAM) 。 PAM 是 DAG 中的主動管理員角色,可決定哪些複本為主動和被動。 PAM 負責取得拓撲變更通知,並回應伺服器失敗。 持有 PAM 角色的 DAG 成員一律是目前擁有叢集仲裁資源的成員, (預設叢集群組) 。 如果擁有叢集仲裁資源的伺服器失敗,PAM 角色會自動移至存取叢集仲裁資源擁有權的存活伺服器。 此外,如果您需要讓裝載叢集仲裁資源的伺服器離線進行維護或升級,您必須先將 PAM 移至 DAG 中的另一部伺服器。 PAM 可控制資料庫複本之間作用中指定的所有移動。 (任何指定的時間都只能有一個複本處於作用中狀態,而且該複本可以掛接或卸載。) PAM 也會在本機系統上執行 SAM 角色的功能, (偵測本機資料庫和本機資訊存放區失敗) 。

SAM 所提供的資訊,是關於哪一台伺服器會將信箱資料庫的主動副本裝載至執行 Active Manager 用戶端元件的其他 Exchange 元件 (例如,用戶端存取或傳輸服務)。 SAM 會偵測到本機資料庫與本機資訊儲存庫的失敗。 它會要求 PAM 初始化容錯移轉 (如果資料庫已複寫的話) 來回應失敗。 SAM 無法決定容錯移轉目標,也無法更新 PAM 中資料庫的位置狀態。 它會存取主動資料庫副本位置狀態,以回答所收到的主動資料庫副本查詢。

注意事項

Exchange Server不是叢集應用程式。 它會使用 clusapi.dll 中實作的叢集程式庫功能,來執行叢集、群組、叢集網路 (活動訊號)、節點管理、叢集登錄與一些控制碼功能。 此外,Active Manager 會將目前的信箱資料庫資訊 (例如,主動與被動資料以及裝載的資料) 儲存在叢集資料庫 (也稱為叢集登錄) 中。 雖然這項資訊是直接儲存在叢集資料庫中,但卻無法由其他任何元件直接存取。

在Exchange Server中,Microsoft Exchange 複寫服務會定期監視所有掛接資料庫的健康情況。 此外,它還會監控可延伸儲存引擎呼 (ESE),查看是否有任何 I/O 錯誤或失敗。 當服務偵測到失敗時,會通知 Active Manager。 這時 Active Manager 會判斷應該裝載那一個資料庫副本,以及裝載該資料庫需要哪些條件。 此外,它會根據資料庫) 的最後一個掛接複本,追蹤信箱資料庫 (的作用中複本,並將追蹤結果資訊提供給用戶端所連接之信箱伺服器上的用戶端存取服務。

最佳副本選擇

當發生無法存取複寫信箱資料庫之主動複本的失敗時,Active Manager 會選取受影響資料庫的最佳被動複本來啟用。 此程式在舊版 Exchange 中稱為最佳複製選取 (BCS) ,而在 Exchange 2016 和 Exchange 2019 中,它稱為 BCSS) 的最佳複製和伺服器選取 (。 一般程序進行的順序如下:

  1. 受管理的可用性或 Active Manager 偵測到失敗狀況,或由系統管理員啟動較不具目標的切換。

  2. PAM 執行 BCSS 內部演算法。

  3. 發生稱為 嘗試複製最後一個記錄 (ACLL) 的程式,它會嘗試在失敗或切換之前,從裝載使用中資料庫複本的伺服器複製任何遺失的記錄檔。

  4. ACLL 程式完成之後,裝載資料庫複本之信箱伺服器的 AutoDatabaseMountDial 值會與所啟用資料庫的複製佇列長度進行比較。 此時:

    • 遺失的記錄檔數目等於或小於 AutoDatabaseMountDial的值,在此情況下會發生步驟 5。

    • 遺失的記錄檔數目大於 AutoDatabaseMountDial的值,在此情況下,如果有的話,Active Manager 會嘗試啟用下一個最佳可用的複本。

  5. PAM 透過遠端程序呼叫 (RPC),向 Microsoft Exchange Information Store 發出裝載要求。 此時:

    • 資料庫會裝載並供用戶端使用。

    • 資料庫不會裝載,而由 PAM 對下一個最佳副本 (若有) 執行步驟 3 和 4。

在舊版 Exchange 中,BCS 程式會評估每個資料庫複本的幾個層面,以判斷要啟用的最佳複本。 其中包含:

  • 複製佇列長度

  • 重新顯示佇列長度

  • 資料庫的狀態

  • 內容索引狀態

在Exchange Server中,Active Manager 會執行所有相同的 BCS 檢查和階段,但現在也包含使用健康狀態遞減順序的條件約束。 具體而言,BCSS 包含數個新的健康情況檢查,這些檢查是 Exchange Server 中內建受控可用性監視元件的一部分。 Active Manager (執行的其他四項檢查會依執行順序列出) :

  1. 全部狀況良好:檢查裝載受影響資料庫複本的伺服器,該資料庫的所有監視元件都處於狀況良好狀態。

  2. 最高標準狀況良好:檢查裝載受影響資料庫複本的伺服器,該資料庫的所有監視元件都具有狀況良好的正常優先順序。

  3. 全部優於來源:檢查裝載受影響資料庫複本的伺服器,其監視元件的狀態優於裝載受影響複本的目前伺服器。

  4. 與來源相同:檢查裝載受影響資料庫複本的伺服器,該資料庫的監視元件狀態與裝載受影響複本的目前伺服器相同。

如果 BCSS 是因監控元件觸發了容錯移轉而被叫用 (例如,透過容錯移轉回應程式),則會實施另一個強制條件約束,也就是目標伺服器的元件健全狀態必須優於發生容錯移轉的伺服器。 例如,如果失敗Outlook 網頁版透過容錯移轉回應程式觸發容錯移轉,BCSS 必須選取裝載受影響資料庫複本的伺服器,Outlook 網頁版狀況良好。

最佳副本選擇程序

就資料庫失敗 (不是通訊協定失敗) 而言,Active Manager 會建立可能要啟用的資料庫複本清單,以開始最佳的複製選取程式。 任何無法存取或被系統管理人員封鎖而無法啟動的資料庫副本都將被忽略,也不會用於選擇程序中。 清單的順序取決於 AutoDatabaseMountDial的值:

  • 如果 AutoDatabaseMountDial 設定為裝載資料庫複本的所有伺服器上以外的 Lossless 任何值,Active Manager 會使用複製佇列長度做為主鍵來排序產生的清單。 計算是根據 LastLogInspected (從副本的角度),所以可能副本的清單是依 LastLogInspected 的最高值 (這將是複製佇列長度最低的副本) 來排序。 如有必要,Active Manager 會使用「啟動喜好設定」的值做為次要索引鍵,再次排序清單,打破有兩個以上被動副本具有相同複製佇列長度的平手狀況。 「啟動喜好設定」值最低的副本,在清單上具有較高優先順序。

  • 如果在裝載資料庫複本的任何伺服器上設定 AutoDatabaseMountDial 的值 Lossless ,Active Manager 會使用啟用喜好設定的值作為主鍵,以遞增順序排序產生的清單。 此外,如果系統管理員執行不失真伺服器或資料庫切換但未指定目標,Active Manager 也會使用「啟動喜好設定」的值做為主要索引鍵,依遞增順序排序產生的清單。

接下來,Active Manager 會嘗試在清單中尋找具有 Healthy、DisconnectedAndHealthy、DisconnectedAndResynchronizing 或 SeedingSource 狀態的信箱資料庫副本,然後再使用依序排列的十組準則來評估清單中每個副本啟動的可能性。 Active Manager 會判斷是有任何可能啟動的副本符合第一組準則:

  • 它具有 Healthy 狀態的內容索引。

  • 它的副本佇列長度少於 10 個記錄檔。

  • 它的重新顯示佇列長度少於 50 個記錄檔。

如果沒有任何資料庫複本符合第一組準則,Active Manager 會嘗試找出符合第二組準則的資料庫複本:

  • 它具有 Crawling 狀態的內容索引。

  • 它的副本佇列長度少於 10 個記錄檔。

  • 它的重新顯示佇列長度少於 50 個記錄檔。

如果沒有任何資料庫複本符合第二組準則,Active Manager 會嘗試找出符合第三組準則的資料庫複本:

  • 它具有 Healthy 狀態的內容索引。

  • 它的重新顯示佇列長度少於 50 個記錄檔。

如果沒有任何資料庫複本符合第三組準則,Active Manager 會嘗試找出符合第四組準則的資料庫複本:

  • 它具有 Crawling 狀態的內容索引。

  • 它的重新顯示佇列長度少於 50 個記錄檔。

如果沒有任何資料庫複本符合第四組準則,Active Manager 會嘗試找出符合第五組準則的資料庫複本:

  • 它的重新顯示佇列長度少於 50 個記錄檔。

如果沒有任何資料庫複本符合第五組準則,Active Manager 會嘗試找出符合第六組準則的資料庫複本:

  • 它具有 Healthy 狀態的內容索引。

  • 它的副本佇列長度少於 10 個記錄檔。

如果沒有任何資料庫複本符合第六個準則,Active Manager 會嘗試找出符合第七組準則的資料庫複本:

  • 它具有 Crawling 狀態的內容索引。

  • 它的副本佇列長度少於 10 個記錄檔。

如果沒有任何資料庫複本符合第七組準則,Active Manager 會嘗試找出符合第八組準則的資料庫複本:

  • 它具有 Healthy 狀態的內容索引。

如果沒有任何資料庫複本符合第八組準則,Active Manager 會嘗試找出符合第九組準則的資料庫複本:

  • 它具有 Crawling 狀態的內容索引。

如果沒有任何資料庫複本符合第九組準則,Active Manager 會嘗試啟用狀態為 Healthy、DisconnectedAndHealthy、DisconnectedAndResynchronizing 或 SeedingSource 的任何資料庫複本, (第十組準則) 。 如果找不到任何符合第十組準則的資料庫副本,它就無法自動啟動資料庫副本。

在找到一或多個符合一或多組準則的複本之後,ACLL 進程會將任何記錄檔從原始來源複製到可能的新使用中複本。 ACLL 程式完成之後,PAM 會發出掛接要求,而且資料庫會掛接並提供給用戶端使用,或者資料庫不會掛接,且 PAM 會搜尋下一個最佳的複本 (如果有可用) 。