本節提供 High Availability Extension 結構的簡要綜覽。它識別並提供有關結構元件的資訊,並說明這些元件如何相互操作。
High Availability Extension 採用分層結構。圖 1-6 說明不同的層及其相關的元件。
圖 1-6 結構
主要層或第一層為訊息傳送/基礎架構層,也稱為 OpenAIS 層。此層包含送出含有「I'm alive」(我存在) 訊號及其他資訊之訊息的元件。High Availability Extension 的程式存放在訊息傳送/基礎架構層。
下一層為資源配置層。此層最為複雜,由下列元件組成:
在資源配置層中執行的每個動作均透過叢集資源管理員進行傳遞。如果資源配置層的其他元件 (或更高一層中的元件) 需要進行通訊,通訊將透過本地 CRM 完成。
在每個節點上,CRM 維護,它包含所有叢集選項、節點、資源、它們的關係和目前狀態的定義。將會選出叢集中的一個 CRM 做為指定協調者 (DC),這意味著它擁有主要 CIB。叢集中的所有其他 CIB 則擁有主要 CIB 的複製本。CIB 上的一般讀寫作業透過主要 CIB 序列化。DC 是叢集中可以決定是否需要執行全叢集變更 (例如圍籬區隔節點或移動資源) 的唯一實體。
叢集資訊庫是整個叢集組態和目前狀態的記憶體內部 XML 表示。它包含所有叢集選項、節點、資源、限制及相互關係的定義。CIB 還可同步更新至所有叢集節點。叢集中有一個主要 CIB,由 DC 負責維護。其他所有節點均包含一個 CIB 複製本。
指定協調者需要進行全叢集變更 (對新的 CIB 做出反應) 時,規則引擎會根據目前狀態和組態計算出叢集的下一個狀態。PE 還可產生轉換圖表,該圖表包含 (資源) 動作和相依性清單,用以取得下一個叢集狀態。PE 將在每個節點上執行,以提高 DC 容錯移轉速度。
LRM 代表 CRM 呼叫本地資源代辦 (請參閱資源層)。因此,它可以執行啟動/停止/監控作業,並將結果報告給 CRM。它還可以隱藏資源代辦的受支援程序檔標準 (OCF、LSB、Heartbeat 版本 1) 之間的差異。LRM 是其本地節點上之所有資源相關資訊的管理來源。
最高層為資源層。資源層包含一或多個資源代辦 (RA)。資源代辦是一些程式,通常是外圍程序檔,撰寫這些程式是為了啟動、停止和監控特定種類的服務 (資源)。資源代辦僅可由 LRM 呼叫。協力廠商可以將他們自己的代辦包含在檔案系統中的已定義位置,從而為他們自己的軟體提供即裝即用的叢集整合功能。
使用 Pacemaker 做為 CRM。CRM 被當做精靈 (crmd) 來實作,即在每個叢集節點上都有一個例項。Pacemaker 集中了所有透過選出一個 crmd 例項做為主要例項做出的叢集決策。如果所選的 crmd 程序 (或它所在的節點) 失敗,則會建立一個新的 crmd 程序。
可反映出叢集組態及叢集中所有資源的目前狀態的 CIB 會保留在每個節點上。CIB 的內容將在整個叢集中自動保持同步。
在叢集中執行的許多動作都會導致全叢集發生變更。這些動作包括新增或移除叢集資源,或變更資源限制等。執行此類動作時,必須瞭解叢集中會發生什麼狀況。
例如,假設您要新增叢集 IP 位址資源。為此,您可以使用指令行工具或 GUI 其中之一來修改 CIB。不必在 DC 上執行動作,您可以使用叢集中的任何節點上的其中一種工具,動作即會轉送至 DC。然後,DC 會將 CIB 變更複製到所有叢集節點。
接著,PE 將根據 CIB 中的資訊計算出叢集的理想狀態,以及達到該狀態的方式,並會將一系列指示饋送至 DC。DC 透過訊息傳送/基礎架構層送出指令,而這些指令將由其他節點上的 crmd 對等接收。每個 crmd 皆使用其 LRM (當做 lrmd 實作) 執行資源修改。lrmd 為非支援叢集,它可直接與資源代辦 (程序檔) 互動。
對等節點都會將其作業結果回報給 DC。一旦 DC 確定已在叢集中成功執行了所有必要的作業,叢集就會轉回閒置狀態,等待接下來的事件。如果有任何作業未按計畫執行,則會用 CIB 中記錄的新資訊再次呼叫 PE。
在某些情況下,可能需要關閉節點以保護共享資料或完成資源復原。為執行此操作,Pacemaker 提供了圍籬區隔子系統 stonithd。STONITH 是「Shoot The Other Node In The Head」的縮寫,通常使用遠端電源交換器實作。在 Pacemaker 中,將 STONITH 設備模式化為資源 (並在 CIB 中進行設定),以便可以輕鬆地對它們進行故障監控。不過,stonithd 負責瞭解 STONITH 拓樸,因此,其用戶端只需要圍籬區隔一個節點,stonithd 將完成剩餘的操作。