英文原文已於 2012 年 10 月 27 日星期六發佈

OAB 歷史

簡稱為 OAB 的離線通訊錄,長期以來都是 Exchange 基礎結構的重要元件。Microsoft Outlook 用戶端會在處於 Exchange 快取模式 (離線) 時使用 OAB,以在離線時查閱通訊錄。OAB 也是減輕 Exchange 伺服器上工作負載的關鍵,處於快取模式的 Outlook 用戶端總是會先查詢本機 OAB。

OAB 已隨著 Exchange 版本不斷進化。上次革新 OAB 架構在是 Exchange Server 2007,我們當時引進 Web 發佈 OAB 功能,而發佈 OAB 是 CAS 伺服器角色的主要責任。但產生 OAB 的程序本身並無太大改變。

直到現在!

隨著 Exchange Server 2013 中引進的伺服器角色架構改變,我們也變更產生 OAB 和將其發佈到用戶端的方式。讓我們將其與之前比較,一起來探索 Exchange 2013 中的新 OAB。

OAB 產生方法中的變更

哪個伺服器將會產生 OAB 呢?

在所有的舊版 Exchange 中,都是透過 Server 屬性將 OAB 產生繫結到特定 Exchange 伺服器。當您安裝第一個 Exchange 信箱伺服器,安裝程式會將其指定為 OAB 產生伺服器。您可以視需要建立新的 OAB。在建立新的 OAB 時,必須已經指定 OAB 產生伺服器。

Exchange Server 2010 的 OAB:

Get-OfflineAddressBook "Default Offline Address Book" | fl name,server
 
Name : Default Offline Address Book
Server : MBX1

此種方法的缺點是只設定一部伺服器提供 OAB 產生功能,而且是單一失敗點。如果此伺服器長時間無法使用,OAB 產生就會受到影響。

在 Exchange 2013 中,主控特定仲裁信箱類型 (稱為「組織信箱」) 的每部信箱伺服器,都可以產生 OAB。OAB 產生不再透過 Server 參數來繫結。

Exchange Server 2013 的 OAB:

Get-OfflineAddressBook "Default Offline Address Book (Ex2012)" | fl name,server
 
Name : Default Offline Address Book (Ex2012)
Server :

未繫結來自特定伺服器的 OAB 允許由多部信箱伺服器產生相同的 OAB。這種新架構可在 OAB 產生方面提供更佳的復原功能。

哪個元件將會產生 OAB 呢?

Microsoft Exchange 系統助理員服務主要負責舊版 Exchange 的 OAB 產生。OAB 產生是一項排程程序,也就是說 OAB 產生會根據 OAB 屬性設定的排程時間開始進行,不考慮伺服器上的工作負載。

在 Exchange 2013 中,OABGeneratorAssistant 信箱助理員是在 Microsoft Exchange 信箱助理員服務下執行,產生 OAB。和大部分其他信箱助理員一樣,OABGEnerationAssistant 是一項節流程序 – 其會根據伺服器上的工作負載來執行或暫停。

OAB 檔案的儲存位置為何?

在舊版 Exchange 中,信箱伺服器產生的 OAB 位在 %ExchangeInstallPath%\ExchangeOAB 資料夾中。其是共用資料夾,以便 CAS 能夠擷取 OAB 檔案以發佈到 Outlook 用戶端。

在 Exchange 2013 中,產生的 OAB 檔案會先儲存在組織信箱,之後再複製到 %ExchangeInstallPath%\ClientAccess\OAB\ 資料夾。

OAB 發佈方法中的變更

Exchange 2007 與 2010 支援兩種 OAB 發佈方法:Web 發佈與公用資料夾發佈。Exchange 2013 只支援 Web 發佈方法,讓我們一同探索 Web 發佈方法中的變更。

Exchange 2007/2010 CAS 會提取在個別信箱伺服器產生的 OAB 檔案並儲存在本機。CAS 角色上的「Microsoft Exchange 檔案發佈服務」負責提取 OAB 檔案的工作。

以下是從用戶端下載 OAB 的流程:

  1. Outlook 從自動探索擷取 OAB URL,然後到達 CAS 伺服器。
  2. CAS 從本機磁碟來驗證使用者和處理 OAB 檔案。

這種方法的數個缺點如下:

  1. 如果 CAS 本機上沒有 OAB 檔案,OAB下載就會失敗。
  2. 如果 CAS 上的檔案發佈服務無法運作,用戶端將收到過時的 OAB 檔案,或換句話說將不會收到更新。

在 Exchange 2013 中,OAB 檔案未儲存在 CAS 本機。CAS 2013 會將所有 OAB 下載要求 Proxy 到適當的 Exchange 2013 信箱伺服器。這個架構變更使 Microsoft Exchange 檔案發佈服務從 CAS 角色中移除。

在 Exchange 2013 中,以下是 OAB 下載流程:

    1. Outlook 從自動探索擷取 OAB URL,然後透過 OAB URL 到達指定的 CAS 2013。

CAS 伺服器會執行下列動作:

  1. 執行 OAB 的初始驗證。
  2. 查詢 Active Directory 並判斷距離要求使用者最近的組織信箱。
  3. 再次查詢 Active Directory 以判斷主控該組織信箱的信箱資料庫。
  4. 查詢 Active Manager 以判斷該信箱資料庫所在的信箱伺服器是否作用中 (已裝載)。
  5. 將要求 Proxy 到在步驟 4 中識別出的信箱伺服器。
  6. 擷取 OAB 檔案並傳送到用戶端。

這個新的工作流程可克服舊版 OAB 下載工作流程的缺點。

組織信箱

組織信箱是 Exchange 2013 引進的新仲裁信箱類型。具備 OrganizationCapabilityOABGen 保存功能的仲裁信箱就稱為組織信箱。其在產生、儲存及發佈 OAB 扮演至關重要的角色。

主控組織信箱的每個 Exchange Server 2013 信箱角色將產生環境中定義的所有 Exchange 2013 OAB。OAB 會先儲存在組織信箱,之後再複製到磁碟。

使用下列命令以識別組織信箱:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"}

範例:

Get-Mailbox -Arbitration | where {$_.PersistedCapabilities -like "*oab*"}
 
Name Alias ServerName ProhibitSendQuota
---- ----- ---------- -----------------
SystemMailbox{bb558c35... SystemMailbox{bb5... mbx1 Unlimited

在組織信箱中儲存 OAB 檔案可讓 OAB 檔案更容易復原。

串連在一起:實際案例:

下列案例將我們目前學到的重點串連起來:

  1. MBX1 與 MBX2 是 Exchange 2013 信箱伺服器,亦是 DAG的成員。CAS1 是一部 Exchange 2013 CAS。
  2. 組織信箱目前位在信箱資料庫 DB1。DB1 的副本分別位在 MBX1 與 MBX2。
  3. MBX1 上的 DB1 目前處於作用中。
  4. MBX1 上的 Microsoft Exchange 信箱助理員服務將會產生 OAB。
  5. OAB 將先在組織信箱中產生,之後再複製到 MBX1 的磁碟。此時,MBX2 尚未參與任何 OAB 產生流程。
  6. Outlook 用戶端嘗試下載 OAB,並透過 OAB URL 到達 CAS1。
  7. CAS1 查詢 Active Manager 並發現 MBX1 上主控組織信箱 (DB1) 的資料庫處於作用中。
  8. CAS1 將 OAB 下載要求 Proxy 到 MBX1 並提供要送回用戶端的檔案。
  9. 此時,MBX1 發生電源中斷而關機,因此在伺服器 MBX2 上啟動 DB1。
  10. CAS1 收到另一個 OAB 下載要求,再次查詢 Active Manager,而這次會將要求 Proxy 到 MBX2,因為現在是 MBX2 上的 DB1 處於作用中。
  11. MBX2 將存於組織信箱中的 OAB 檔案擷取到磁碟,確保會將最新的檔案提供給用戶端。
  12. MBX1 恢復連線,但 MBX2 上的 DB1 仍會處於作用中。
  13. 下次的 OAB 產生工作週期將是 MBX2 上的 Microsoft Exchange 信箱助理員服務產生 OAB。

本系列的下一篇文章將討論如何在 Exchange 2013 管理 OAB

Bhalchandra Atre

這是翻譯後的部落格文章。英文原文請參閱 OAB in Exchange Server 2013