若要提供 BizTalk Server 資料庫的高可用性,請設定在 Windows 叢集中執行 SQL Server 的兩部電腦。 這些計算機可以在主動/主動、主動/被動或主動/主動/被動(需要三部計算機)的配置下運行,以提供備援,並且可以將數據儲存在共享磁碟驅動器上(例如RAID 1+0 SCSI磁碟陣列)或儲存區域網路(SAN)。
如果 SQL Server 服務因故無法使用,資料庫叢集會將資源從主動計算機傳輸到被動計算機。 在此故障轉移過程中,BizTalk Server 服務實例會遇到資料庫連線失敗,並自動重新啟動以重新連線到資料庫。 運作中的資料庫電腦(先前是被動計算機)會在故障轉移期間假設資源之後開始處理資料庫連線。
BizTalk Server 資料庫的叢集在 Clustering the BizTalk Server Databases 中討論。 本節著重於向外擴展 BizTalk Server 資料庫,以提供高可用性。
提供 BizTalk MessageBox 資料庫的高可用性
本節提供設定 BizTalk MessageBox 資料庫以取得高可用性的相關信息。
執行多個 MessageBox 資料庫
若要增強 BizTalk Server 資料庫的延展性,以及解決 MessageBox 資料庫 SQL Server 電腦上的高 CPU 使用率,您可以將 BizTalk Server 設定為跨多個 MessageBox 資料庫儲存數據。 當您執行設定精靈時,會建立第一個 MessageBox 資料庫。 此 MessageBox 資料庫是主要 MessageBox 資料庫。 BizTalk Server 部署中有單一主要 MessageBox 資料庫。 主要 MessageBox 資料庫包含主要訂閱資訊,並將訊息路由傳送至適當的 MessageBox 資料庫。 一般而言,您想要將主要 MessageBox 資料庫指定為只執行路由,並讓其他 MessageBox 資料庫執行處理。 若要讓 MessageBox 資料庫只執行路由,請從 BizTalk 管理控制台中的 MessageBox 屬性選取 [停用新的訊息發行集 ]。
MessageBox 資料庫處理流程的范例如下:
當主要 MessageBox 資料庫收到新的啟用訊息—商務程式或訂閱訊息的全新實例時,master MessageBox 資料庫會將啟用訊息散發至下一個可用的 MessageBox 資料庫。 例如,如果您有一個主 MessageBox 資料庫和兩個 MessageBox 資料庫,則主 MessageBox 資料庫會將第一個啟用訊息傳送至 MessageBox 資料庫 1、第二個啟用訊息傳送至 MessageBox 資料庫 2、第三個啟用訊息再傳送至 MessageBox 資料庫 1,如此以輪巡方式分配。 主要 MessageBox 資料庫會使用內建邏輯進行負載平衡,而且不需要額外的負載平衡機制。
在 master MessageBox 資料庫將啟用訊息路由傳送至特定 MessageBox 資料庫(例如 MessageBox 資料庫 1)之後,商務程式就會進入記憶體並執行。
如果商務程式必須等候訊息,而等候時間超過幾秒鐘,則商務程式會保存回 MessageBox 資料庫 1。 商務程式正在等候相互關聯訊息。
當相互關聯訊息到達主要 MessageBox 資料庫時,訊息引擎會在包含相互關聯訊息狀態的 MessageBox 資料庫中執行查閱作業(在此範例中為 MessageBox 1)。 主要 MessageBox 資料庫會將訊息傳遞至包含商務程式的 MessageBox 資料庫。
業務流程被帶回記憶體以繼續處理,直到完成或必須等候另一個關聯訊息為止。
BizTalk Server 會將所有狀態儲存在 MessageBox 資料庫中,而每個 MessageBox 資料庫都包含不同商務程式的狀態資訊。 為了可靠性,您必須將所有 MessageBox 資料庫叢集,包括 master 和 secondary MessageBox 資料庫。
若要設定多個 MessageBox 資料庫,您可以使用 BizTalk Server 管理控制台來新增執行 SQL Server 的電腦。 從系統管理的觀點來看,您只需要新增 MessageBox 資料庫。 BizTalk Server 會自動處理激活訊息的循環分配,並將關聯訊息傳送至正確的 MessageBox 資料庫。
如果您在環境中設定多個 MessageBox 資料庫,您應該為 BizTalk Server 群組建立至少三個 MessageBox 資料庫,而且您應該停用主要 MessageBox 資料庫上的訊息發行。 之所以提出這項建議,是因為新增其他 MessageBox 資料庫會產生主要 MessageBox 資料庫在 MessageBox 資料庫之間路由訊息的額外負荷。 如果您只設定兩個 MessageBox 資料庫,則其他 MessageBox 資料庫取得的大部分好處都會因主要 MessageBox 資料庫用於訊息路由而耗用的額外負荷所抵消。
這很重要
BizTalk Server 會將所有狀態儲存在 MessageBox 資料庫中,而每個 MessageBox 資料庫都包含不同商務程式的狀態資訊。 為了可靠性,您必須將所有 MessageBox 資料庫叢集,包括 master 和 secondary MessageBox 資料庫。
為多個 MessageBox 資料庫提供高可用性
將 MessageBox 資料庫新增至 BizTalk Server 部署可改善延展性,但不會提供高可用性,因為每個 MessageBox 資料庫都是唯一且獨立的,而且可能是 BizTalk Server 環境的單一失敗點。 若要新增備援,需要為每個 MessageBox 資料庫設定伺服器叢集。 BizTalk Server 會將數據分散到多個 MessageBox 資料庫,因此資料庫不會共享數據,或在沒有伺服器叢集的情況下提供備援。
提供 BizTalk 追蹤資料庫的高可用性
視特定部署的需求而定,您可能會想要將 BizTalk 追蹤資料庫隔離至個別的 SQL Server 計算機,以及建立專用於主機追蹤的個別 BizTalk 主機,來增強追蹤的效能。 下圖顯示一個專用追蹤伺服器,具有兩個主機實例和叢集資料庫。
如果您的部署具有高輸送量,且牽涉到追蹤這些訊息的大量數據,追蹤額外負荷可能會耗用執行 SQL Server 之電腦上的大量資源。 如果發生這種情況,且傳入訊息的速率很高,BizTalk Server 就會到達無法處理新訊息的位置,因為追蹤訊息所需的資源大於執行其他 BizTalk Server 元件所需的資源(例如接收訊息,並將其保存至 MessageBox 資料庫)。
為了改善效能和安全性,我們建議您專門配置主機以進行追蹤,確保該主機不包含任何其他項目(例如接收位置、協調流程或管線),並且在接收、處理和傳送主機上停用追蹤功能。 若要為追蹤主機提供高可用性,請建立追蹤主機的多個主機實例。 請參閱 建立新的主機。
對於每個 MessageBox 資料庫,BizTalk Server 只會使用一個追蹤主機實例,將訊息從 MessageBox 資料庫移至 BizTalk 追蹤資料庫(BizTalkDTADb)。 如果其他電腦執行追蹤主機的實作,BizTalk Server 會自動將每個 MessageBox 資料庫的處理負載分配到不同的追蹤主機實作。 如果 MessageBox 資料庫的數目大於追蹤主機實例的數目,一或多個追蹤主機實例將服務多個 MessageBox 資料庫。
若要提供 BizTalk 追蹤資料庫的高可用性,請使用 Windows 叢集來設定在主動/被動組態中執行 SQL Server 的兩部資料庫計算機。
提供 BAM 資料庫的高可用性
商務活動監視 (BAM) 提供與IT實作無關或跨異質IT實作的商務程序可見度。 BAM SQL Server 資料庫(BAM 星型架構資料庫、BAM 主要匯入資料庫和 BAM 封存資料庫)和 BAM 分析資料庫會儲存與作業監視數據不同的商務活動數據。 下圖顯示 BAM 資料庫基礎結構。
若要確定 BAM 基礎結構具有高可用性,請執行下列動作:
將 BAM 主要匯入資料庫和 BAM 分析資料庫叢集。 BAM 主要匯入資料庫是商務活動監視系統的中心。 因此,請務必使用 Windows 叢集讓此資料庫具有高可用性,並遵循接下來的兩項建議,以防止此資料庫填滿。 BAM Analysis 資料庫是 Analysis Services 資料庫,可儲存商務分析師用來建置活動匯總和 OLAP Cube 的數據,因此,此資料庫的停機時間會影響其生產力。 雖然您不需要叢集 BAM 封存資料庫,但建議您監視 SQL Server Integration Services (SSIS) 套件執行時發生的錯誤事件記錄檔,以確定數據已成功傳輸,以及監視資料庫的大小,以便您可以在資料庫填滿之前加以取代。
定義在線視窗。 為了提供更好的效能並避免停機,BAM 會根據活動完成時的時間戳,將數據分割成 BAM 主要匯入資料庫中的資料表。 BAM 會定期將已完成的數據表交換為相同格式的另一個空白數據表,藉此達成此目的。 BAM 執行此動作之後,其他已完成的活動會進入新的分割區(數據表),而 BAM 會在在線視窗中保留舊分割區定義的時間。 您必須定義在線視窗,以確保 BAM 主要匯入資料庫中的數據分割數目不會成長太大。 如需排程在線視窗的詳細資訊,請參閱 封存主要匯入資料庫數據。
定期排程執行 SSIS 套件。 定義在線視窗可確保 BAM 主要匯入資料庫不會填滿舊的活動分割區。 您也必須排程 SSIS 套件定期執行,以建立活動數據的新分割區,以及將數據從 BAM 主要匯入資料庫中的舊分割區移至 BAM 封存資料庫。 如需排程 SSIS 套件的詳細資訊,請參閱 排程 SQL Server Integration Services 套件。
仔細選擇一組小型數據項(檢查點),並避免在定義活動時包含不必要的數據項。
當您設計匯總時,瞭解排程和即時匯總之間的取捨。 SQL Server 觸發程式會自動維護即時匯總,且延遲為零。 它們很適合某些任務關鍵性低延遲案例,但每當事件寫入 BAM 主要匯入資料庫時,都會產生效能成本。 預定的聚合依賴於排程的立方 SSIS 套件來更新其聚合數據。 其延遲等於或大於 SSIS 排程間隔,但整體而言,它們對 BAM 主要匯入資料庫有較小的效能影響。
如果您選擇排程的匯總,請務必安排資料立方 SSIS 比封存 SSIS 執行得更頻繁。 這是因為用於封存的 SSIS 程序不會將已排定聚合處理的活動數據移至 BAM 封存資料庫。
在多部計算機中啟用 BAM 事件總線服務,以取得故障轉移功能。
為其他 BizTalk Server 資料庫提供高可用性
若要為其他 BizTalk Server 資料庫提供高可用性,請設定在 Windows 叢集中執行 SQL Server 的兩部電腦。 這些計算機可以在主動/主動或主動/被動設定中執行以備援,並將數據儲存在共用磁碟驅動器上(例如RAID 1+0 SCSI 磁碟陣列)或儲存局域網路(SAN)。