章 3. RGManager

RGManager 可管理並為服務、資源群組或是資源樹之類的叢集資源提供容錯移轉功能。這些資源群組乃樹狀結構,並且在各個子目錄樹中皆有父子相依性和繼承關係。
RGManager 的運作方式允許管理員定義、配置和監控叢集服務。當節點失效時,RGManager 會在盡可能不影響服務的情況下,將叢集服務重定位至其它節點上。您亦可將服務限制僅在特定節點上執行,比方說將 httpd 限制僅能在單一群組的節點上執行,而 mysql 則能被限制僅能在不同的個別節點上執行。
RGManager 若要正常運作,需要各種程序和代理程式共同協作。以下清單概述了這些項目。
  • 容錯移轉區域 - RGManager 容錯移轉區域系統的運作方式
  • 服務政策 - Rgmanager 的服務啟用和復原政策
  • 資源樹 - RGManager 的資源樹運作方式,包括啟用/停用的順序和繼承
  • 服務作業特性 - RGManager 的作業運作方式以及其狀態意義
  • 虛擬機器特性 - 在 rgmanager 叢集中執行 VM 時所需記得的特殊事項
  • 資源動作 - RGManager 所使用的代理程式動作,以及如何透過 cluster.conf 檔案自訂其特性。
  • 事件指令碼處理 - 若 rgmanager 的容錯移轉和復原政策不適用於您的環境,您可藉由使用此指令碼處理子系統來自訂您自己的政策。

3.1. 容錯移轉區域

容錯移轉區域是個服務可綁定至、按照順序的成員子集。儘管容錯移轉區域對於叢集自訂來說相當有幫助,不過若要進行作業,容錯移轉功能並非是必要的。
以下是一列用來管理不同配置選項會如何影響容錯移轉區域特性的語法。
  • 偏好使用的節點或是偏好使用的成員:偏好使用的節點乃被指定來執行特定服務的成員。我們可藉由為正好一個成員指定無順序、不受限的容錯移轉區域來模擬此特性。
  • 受限區域:綁定至特定區域的服務,只能在也屬於該容錯移轉區域成員的叢集上執行。若容錯移轉區域中沒有可用的成員叢集,服務將會進入停止狀態中。在一個擁有數個成員的叢集中,使用受限容錯移轉區域能簡化叢集服務(例如 httpd)的配置,因為此類型服務的配置,需要您在執行該服務的所有成員上,進行相同的配置。與其將整個叢集設定執行該叢集服務,您僅必須設定與叢集服務相聯的受限容錯移轉區域中的成員。
  • 不受限的區域:此乃預設特性,綁定至此區域的服務可在所有叢集成員上執行,並且會在區域成員可使用時,在該成員上執行。這代表若一項服務執行於區域外部,而有個區域成員上線時,服務將會遷移至該成員上,除非設定了 nofailback
  • 照順序的區域:指定於配置中的順序可支配區域中之成員的偏好順序。階級最高的區域成員將會在上線時,執行服務。這代表若成員 A 的階級比成員 B 高,服務原本在成員 B 上執行而成員 A 上線時,該服務便會遷移至成員 A 上執行。
  • 不按照順序的區域:此乃預設的特性,區域的成員沒有偏好的順序;任何成員皆可執行服務。服務會盡可能遷移至其容錯移轉區域的成員上。然而,這會是個不按照順序的區域。
  • 容錯回復:在一個按照順序的容錯移轉區域成員上的服務,應容錯回復至其原本執行於(在失效之前)的節點上,這對於時常失效的節點來說相當有幫助,它有助於避免服務經常在失效的節點,以及容錯移轉節點之間進行遷移。
Ordering、restriction 以及 nofailback 屬於旗標,並且能以幾乎任何的方式(例如 ordered+restricted、unordered+unrestricted 等等)組合使用。這些組合會影響服務在初始仲裁形成後,會在哪裡啟用,以及當服務失效的情況下,哪個叢集成員會接管該服務。

3.1.1. 特性範例

一個含有這組成員的叢集:{A, B, C, D, E, F, G}。
按照順序、受限的容錯移轉區域 {A, B, C}
取消 nofailback 設定:一項服務 'S' 總是會在成員 'A' 上線並擁有仲裁時,在 'A' 上執行。若 {A, B, C} 所有的成員皆離線的話,服務便不會執行。若服務原本在 'C' 上執行,而 'A' 上線時,服務便會遷移至 'A' 上。
當設置了 nofailback 時:當仲裁形成後,服務 'S' 將會在優先權最高的叢集成員上執行。若 {A, B, C} 的所有成員皆處於離線狀態,服務將不會執行。若服務原本在 'C' 上執行而 'A' 上線時,服務將會保持在 'C' 上執行,除非 'C' 失效。在此情況下它將會容錯移轉至 'A' 上。
不按照順序、受限的容錯移轉區域 {A, B, C}
一項服務 'S' 僅會在有仲裁並且 {A, B, C} 中至少一個成員上線時才會執行。當區域的另一成員上線時,服務將不會重新定位。
按照順序、不受限的容錯移轉區域 {A, B, C}
取消 nofailback 設置:每當擁有仲裁時,服務 'S' 便會執行。當容錯移轉區域的成員上線時,服務便會在優先權最高的成員上執行,否則將會有個叢集成員被隨機選擇來執行該服務。這代表每當 'A' 上線時,服務便會在 'A' 上執行,其次為 'B'。
設置 nofailback:每當擁有仲裁時,服務 'S' 便會執行。每當仲裁形成時,若容錯移轉區域的成員之一上線的話,服務便會在擁有最高優先權的容錯移轉區域成員上執行。也就是說,當 'B' 在線上(而 'A' 未上線)時,服務將會在 'B' 上執行。之後當 'A' 加入叢集時,服務也不會重新定位至 'A'。
不按照順序、不受限的容錯移轉區域 {A, B, C}
這亦稱為「偏好使用的成員」。當一或多個容錯移轉區域的成員在線上時,服務將會在非特定的線上容錯移轉成員中執行。當另一容錯移轉成員上線時,服務將不會重新定位。