跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / 管理指南 / 安裝、設定和升級 / 使用 YaST 叢集模組
適用範圍 SUSE Linux Enterprise High Availability Extension 15 SP3

4 使用 YaST 叢集模組

YaST 叢集模組可讓您手動從頭開始設定叢集,或修改現有叢集的選項。

不過,如果您希望採用自動方式設定叢集,請參閱安裝與設定快速入門。該指南介紹了如何安裝所需的套件,並會引導您建立基本的雙節點叢集,該叢集是使用 ha-cluster-bootstrap 程序檔設定的。

您還可以將這兩種設定方法結合起來使用,例如,使用 YaST 叢集設定一個節點,然後使用其中一個開機程序檔整合更多節點 (或反之)。

4.1 詞彙定義

下面定義了 YaST 叢集模組和本章中使用的多個關鍵術語。

結合網路位址 (bindnetaddr)

Corosync 執行檔應該結合的網路位址。為方便在整個叢集中共用組態檔案,Corosync 使用了網路介面網路遮罩,以便僅遮罩用於路由網路的位址位元。例如,如果本地介面是 192.168.5.92 且網路遮罩是 255.255.255.0,請將 bindnetaddr 設為 192.168.5.0。如果本地介面是 192.168.5.92 且網路遮罩是 255.255.255.192,請將 bindnetaddr 設為 192.168.5.64

如果在 /etc/corosync/corosync.conf 中明確設定了包含 ringX_addrnodelist,則不一定需要 bindnetaddr

注意
注意:適用於所有節點的網路位址

由於所有節點上將使用相同的 Corosync 組態,因此請務必使用 bindnetaddr 這樣的網路位址,而不要使用特定網路介面的位址。

conntrack 工具

使用這些工具可與內核連接追蹤系統互動,以對 iptables 啟用陳述封包檢查。High Availability Extension 使用它來在叢集節點之間同步連接狀態。如需詳細資訊,請參閱 http://conntrack-tools.netfilter.org/

Csync2

可用於在叢集中的所有節點間,甚至在 Geo 叢集間複製組態檔案的同步工具。Csync2 可以處理任意數量、分屬不同同步群組的主機。每個同步群組都有其自己的主機成員清單,以及定義同步群組中應同步之檔案的包含/排除模式。群組、屬於各個群組的主機名稱以及各個群組的包含/排除規則皆在 Csync2 組態檔案 /etc/csync2/csync2.cfg 中指定。

Csync2 使用 IP 位址和預先共用金鑰在同步群組內進行驗證。您需要為每個同步化群組產生一個金鑰檔案,並將其複製到群組中的所有成員。

如需有關 Csync2 的詳細資訊,請參閱 http://oss.linbit.com/csync2/paper.pdf

現有叢集

現存叢集一詞用於指代至少包含一個節點的任一叢集。現存叢集擁有定義了通訊通道的基本 Corosync 組態,但目前不必擁有資源組態。

多點傳播

網路內進行一對多通訊所採用的一種技術,可用於叢集通訊。Corosync 支援多點傳播與單點傳播。

注意
注意:交換器和多路廣播

若要使用多點傳播進行叢集通訊,請確定您的交換器支援多點傳播。

多路廣播位址 (mcastaddr)

Corosync 可執行檔用於多點傳播的 IP 位址。IP 位址可以是 IPv4 或 IPv6。如果使用的是 IPv6 網路,則必須指定節點 ID。您可以使用您私人網路中的任何多點傳播位址。

多路廣播連接埠 (mcastport)

用於叢集通訊的連接埠。Corosync 使用兩個連接埠:用於接收多點傳播的指定 mcastport,以及用於傳送多點傳播的 mcastport -1

備援環狀通訊協定 (RRP)

允許使用多重備援區域網路,以針對部分或全部網路錯誤提供恢復功能。如此一來,只要有一個網路正常運作,便仍可進行叢集通訊。Corosync 支援 Totem 備援環狀通訊協定。系統會對所有參與節點施加一個邏輯記號傳遞環,以安全穩妥地傳遞訊息。只有持有記號的節點才允許廣播訊息。

如果 Corosync 中已定義備援通訊通道,請使用 RRP 告知叢集如何使用這些介面。RRP 有三種模式 (rrp_mode):

  • 如果設為 active,Corosync 將會主動使用這兩個介面。但是,此模式已廢棄。

  • 如果設為 passive,Corosync 會選擇性地透過可用網路傳送訊息。

  • 如果設為 none,將會停用 RRP。

單點傳播

一種將訊息傳送至單一網路目的地的技術。Corosync 支援多點傳播與單點傳播。在 Corosync 中,單點傳播是以 UDP 單點傳播 (UDPU) 的形式執行。

4.2 YaST 叢集模組

啟動 YaST 並選取高可用性 › 叢集。也可以從指令行啟動模組:

sudo yast2 cluster

下面的清單顯示了 YaST 叢集模組中可用螢幕的綜覽。它還指出了螢幕是否包含成功設定叢集所需的參數,或其參數是否為選擇性

通訊通道 (必需)

允許您定義用於在叢集節點間進行通訊的一或兩個通訊通道。對於傳輸通訊協定,請使用多點傳播 (UDP) 或單點傳播 (UDPU)。如需詳細資料,請參閱第 4.3 節 「定義通訊通道」

重要
重要:備援通訊路徑

對於受支援的叢集設定,需要兩個或以上的備援通訊路徑。最好使用網路裝置結合,如第 14 章 「網路裝置結合所述。

如果不可行,您需要在 Corosync 中定義另一個通訊通道。

安全性 (選擇性但建議使用)

可讓您定義叢集的驗證設定。HMAC/SHA1 驗證需要使用共用密碼來保護和驗證訊息。如需詳細資料,請參閱第 4.4 節 「定義驗證設定」

設定 Csync2 (選擇性但建議使用)

Csync2 會幫助您追蹤組態變更,並在叢集節點之間保持檔案同步。如需詳細資料,請參閱第 4.5 節 「將組態傳輸至所有節點」

設定 conntrackd (選擇性)

可讓您設定使用者空間 conntrackd。使用 conntrack 工具為 iptables 進行狀態封包檢測。如需詳細資料,請參閱第 4.6 節 「同步叢集節點間的連接狀態」

服務 (必需)

可讓您設定服務以使叢集節點變為線上狀態。定義是否在開機時啟動 Pacemaker 服務,以及是否在防火牆中開啟節點間通訊所需的連接埠。如需詳細資料,請參閱第 4.7 節 「設定服務」

如果您是首次啟動叢集模組,它會顯示為精靈並引導您完成進行基本設定所需的所有步驟。如果並非第一次啟動,可以按一下左側面板上的類別,以存取每個步驟的組態選項。

注意
注意:YaST 叢集模組中的設定

YaST 叢集模組中的一些設定僅適用於目前節點。其他設定可以透過 Csync2 自動傳輸到所有節點。如需詳細資訊,請參閱以下各節。

4.3 定義通訊通道

若要讓叢集節點之間順利進行通訊,至少需定義一個通訊通道。對於傳輸通訊協定,請分別依程序 4.1程序 4.2 所述使用多點傳播 (UDP) 或單點傳播 (UDPU)。如果要定義另一個備援通道 (程序 4.3),則這兩個通訊通道必須使用相同的通訊協定。

注意
注意:公用雲端:使用單點傳播

若要在公用雲端平台中部署 SUSE Linux Enterprise High Availability Extension,請使用單點傳播做為傳輸通訊協定。雲端平台本身在一般情況下並不支援多路廣播。

YaST 通訊通道螢幕中定義的所有設定都會寫入到 /etc/corosync/corosync.conf 中。可在 /usr/share/doc/packages/corosync/ 中找到多點傳播和單路廣播設定的範例檔案。

如果您使用的是 IPv4 位址,則節點 ID 可以選填。如果使用的是 IPv6 位址,則必須填寫節點 ID。YaST 叢集模組提供了一個自動為每個叢集節點產生唯一 ID 的選項,使用者無需手動為每個節點指定 ID。

程序 4.1︰ 定義第一個通訊通道 (多路廣播)

使用多點傳播時,將對所有叢集節點使用相同的 bindnetaddrmcastaddrmcastport。叢集中的所有節點透過使用相同的多點傳播位址瞭解彼此的存在。對於不同的叢集,請使用不同的多點傳播位址。

  1. 啟動 YaST 叢集模組,然後切換到通訊通道類別。

  2. 傳輸通訊協定設定為多點傳播

  3. 定義「結合網路位址」。將此值設定為要用於叢集多點傳播的子網路。

  4. 定義「多點傳播位址」。

  5. 定義連接埠

  6. 若要為每個叢集節點自動產生唯一的 ID,請將自動產生節點 ID 保留為啟用狀態。

  7. 定義叢集名稱

  8. 輸入預期投票數。此值對 Corosync 非常重要,它要使用該值來為分割叢集計算最低節點數。依預設,每個節點的投票數為 1預期投票數必須與叢集中的節點數相符。

  9. 確認您的變更。

  10. 如果需要,請依程序 4.3 「定義備援通訊通道」所述在 Corosync 中定義備援通訊通道。

YaST 叢集 - 多路廣播組態
圖 4.1︰ YaST 叢集 - 多路廣播組態

如果要使用單點傳播而非多點傳播進行叢集通訊,請依如下所述繼續操作。

程序 4.2︰ 定義第一個通訊通道 (單點傳播)
  1. 啟動 YaST 叢集模組,然後切換到通訊通道類別。

  2. 傳輸通訊協定設定為單點傳播

  3. 定義連接埠

  4. 若要進行單點傳播通訊,Corosync 需要知道叢集中所有節點的 IP 位址。請對將成為叢集成員的每個節點按一下新增,然後輸入以下詳細資料:

    • IP 位址

    • 備援 IP 位址 (僅當在 Corosync 中使用了第二個通訊通道時,才需要指定)

    • 節點 ID (僅當停用了自動產生節點 ID 選項時,才需要指定)

    若要修改或移除叢集成員的任何位址,請使用「編輯」或「刪除」按鈕。

  5. 若要為每個叢集節點自動產生唯一的 ID,請將自動產生節點 ID 保留為啟用狀態。

  6. 定義叢集名稱

  7. 輸入預期投票數。此值對 Corosync 非常重要,它要使用該值來為分割叢集計算最低節點數。依預設,每個節點的投票數為 1預期投票數必須與叢集中的節點數相符。

  8. 確認您的變更。

  9. 如果需要,請依程序 4.3 「定義備援通訊通道」所述在 Corosync 中定義備援通訊通道。

YaST 叢集 - 單點傳播組態
圖 4.2︰ YaST 叢集 - 單點傳播組態

如果網路裝置結合因某種原因而無法使用,次佳選擇就是在 Corosync 中定義備援通訊通道 (另一個環)。如此便可使用實體位置相互分隔的兩個網路進行通訊。如果一個網路發生故障,叢集節點仍可透過另一個網路進行通訊。

Corosync 中的另一個通訊通道將會形成另一個記號傳遞環狀網路。在 /etc/corosync/corosync.conf 中,您設定的第一個通道就是主環,其環編號為 0。第二個環 (備援通道) 的環編號為 1

如果 Corosync 中已定義備援通訊通道,請使用 RRP 告知叢集如何使用這些介面。借助 RRP,可以使用實體位置相互分隔的兩個網路進行通訊。如果一個網路發生故障,叢集節點仍可透過另一個網路進行通訊。

RRP 可以有三種模式:

  • 如果設為 active,Corosync 將會主動使用這兩個介面。但是,此模式已廢棄。

  • 如果設為 passive,Corosync 會選擇性地透過可用網路傳送訊息。

  • 如果設為 none,將會停用 RRP。

程序 4.3︰ 定義備援通訊通道
重要
重要:備援環狀網路和 /etc/hosts

如果 Corosync 中設定了多個環狀網路,則每個節點都可具有多個 IP 位址。這需要反映在所有節點的 /etc/hosts 檔案中。

  1. 啟動 YaST 叢集模組,然後切換到通訊通道類別。

  2. 啟用「備援通道」。備援通道必須使用您定義的第一個通訊通道所使用的相同通訊協定。

  3. 如果使用多路廣播,請輸入以下參數:要使用的結合網路位址,以及備援通道的多路廣播位址連接埠

    如果使用單點傳播,請定義以下參數:要使用的結合網路位址連接埠。輸入將加入叢集的所有節點的 IP 位址。

  4. 若要指示 Corosync 如何以及何時使用其他通道,請選取要使用的 rrp_mode

    • 如果只定義了一個通訊通道,則會自動停用「rrp_mode」(設為 none 值)。

    • 如果設為 active,Corosync 將會主動使用這兩個介面。但是,此模式已廢棄。

    • 如果設為 passive,Corosync 會選擇性地透過可用網路傳送訊息。

    使用 RRP 時,High Availability Extension 會監控目前環的狀態,並在發生故障後自動重新啟用備援環。

    或者,使用 corosync-cfgtool 手動檢查環狀網路狀態。請使用 -h 檢視可用選項。

  5. 確認您的變更。

4.4 定義驗證設定

若要定義叢集的驗證設定,您可以使用 HMAC/SHA1 驗證。此方式需要使用共用密碼來保護和驗證訊息。您指定的驗證金鑰 (密碼) 將用於叢集中的所有節點。

程序 4.4︰ 啟用安全驗證
  1. 啟動 YaST 叢集模組,然後切換到安全性類別。

  2. 啟動「啟用安全性驗證」。

  3. 針對新建立的叢集按一下「產生驗證金鑰檔案」。系統即會建立一個驗證金鑰並將其寫入 /etc/corosync/authkey

    如果要讓目前機器加入現存叢集,請不要產生新的金鑰檔案,而是將現存叢集某個節點中的 /etc/corosync/authkey 複製到目前機器 (以手動方式或使用 Csync2)。

  4. 確認您的變更。YaST 會將此組態寫入 /etc/corosync/corosync.conf

YaST 叢集 - 安全性
圖 4.3︰ YaST 叢集 - 安全性

4.5 將組態傳輸至所有節點

您應當使用 csync2 工具在叢集中的所有節點間複製產生的組態檔案,而不是手動將其複製到所有節點。

若要如此,您需要執行下列基本步驟:

Csync2 會幫助您追蹤組態變更,並在叢集節點之間保持檔案同步。

  • 您可以定義對操作而言非常重要的檔案清單。

  • 您可以顯示這些檔案的變更 (針對其餘叢集節點)。

  • 您可以使用單一指令同步化設定的檔案。

  • 透過 ~/.bash_logout 中的一個簡單外圍程序程序檔,您在從系統登出之前可以收到變更未同步的提醒。

http://oss.linbit.com/csync2/http://oss.linbit.com/csync2/paper.pdf 上提供了關於 Csync2 的詳細資訊。

4.5.1 使用 YaST 設定 Csync2

  1. 啟動 YaST 叢集模組,然後切換到 Csync2 類別。

  2. 若要指定同步群組,請在同步主機群組中按一下新增,然後輸入叢集中所有節點的本地主機名稱。對於每個節點,都必須使用 hostname 指令傳回的字串。

    提示
    提示:主機名稱解析

    如果您的網路中無法正常進行主機名稱解析,您也可以為每個叢集節點指定主機名稱與 IP 位址的組合。要這樣做,請使用字串主機名稱@IP,例如 alice@192.168.2.100。然後,Csync2 將在連接時使用 IP 位址。

  3. 按一下「產生預先共用金鑰」建立同步化群組的金鑰檔案。建立的金鑰檔案會寫入 /etc/csync2/key_hagroup。建立之後,必須手動將其複製到叢集的所有成員。

  4. 若要在「同步化檔案」清單中填入所有節點間執行同步化通常所需的檔案,請按一下「新增建議的檔案」。

  5. 若要在待同步檔案的清單中編輯新增刪除檔案,請使用相應的按鈕。您必須輸入各個檔案的絕對路徑名稱。

  6. 按一下開啟 Csync2以啟動 Csync2。如此會執行以下指令,以在開機時自動啟動 Csync2:

    root # systemctl enable csync2.socket
  7. 確認您的變更。YaST 會將 Csync2 組態寫入 /etc/csync2/csync2.cfg

  8. 若現在要啟動同步程序,請繼續第 4.5.2 節 「使用 Csync2 同步變更」

YaST 叢集 - Csync2
圖 4.4︰ YaST 叢集 - Csync2

4.5.2 使用 Csync2 同步變更

若要成功使用 Csync2 來同步檔案,必須符合以下要求:

  • 同一 Csync2 組態在所有叢集節點上均可用。

  • 同一 Csync2 驗證金鑰在所有叢集節點上均可用。

  • 所有叢集節點上都必須正在執行 Csync2。

因此,在首次執行 Csync2 之前,需要做好以下準備:

程序 4.5︰ 使用 Csync2 準備初始同步
  1. 在依照 所述設定檔案 /etc/csync2/csync2.cfg第 4.5.1 節 「使用 YaST 設定 Csync2」 後,手動將其複製到所有節點。

  2. 將您執行第 4.5.1 節步驟 3 時在一個節點上產生的 /etc/csync2/key_hagroup 檔案複製到叢集中的所有節點。Csync2 在進行驗證時需要使用該檔案。但請在其於節點上重新產生此檔案,因為在所有節點上,該檔案都必須相同。

  3. 在所有節點上執行以下指令,以便立即啟動服務:

    root # systemctl start csync2.socket
程序 4.6︰ 使用 Csync2 同步組態檔案
  1. 若要對所有檔案執行一次初始同步,請在要從中複製組態的機器上執行以下指令:

    root # csync2 -xv

    此操作會將所有檔案推送到其餘節點,從而一次即同步所有檔案。如果成功同步了所有檔案,Csync2 完成時不會顯示任何錯誤。

    如果在其他節點 (不僅在目前節點) 上對要同步的一或多個檔案進行了修改,則 Csync2 會報告有衝突。輸出內容與以下類似:

    While syncing file /etc/corosync/corosync.conf:
    ERROR from peer hex-14: File is also marked dirty here!
    Finished with 1 errors.
  2. 如果您確定目前節點上的是檔案的最佳版本,可以透過強制使用此檔案並重新同步來解決衝突:

    root # csync2 -f /etc/corosync/corosync.conf
    root # csync2 -x

如需 Csync2 選項的詳細資訊,請執行

csync2 -help
注意
注意:發生任何變更後推送同步

Csync2 僅會推送變更,而不會持續在機器間同步檔案。

每次對需要同步的檔案進行更新時,都需要將變更推入至其餘機器:在您進行了變更的機器上執行 csync2  -xv。如果在未變更檔案的任何其他機器上執行該指令,系統不會執行任何操作。

4.6 同步叢集節點間的連接狀態

若要對 iptables 啟用可設定狀態的封包檢查,請設定並使用 conntrack 工具。若要如此,您需要執行下列基本步驟:

程序 4.7︰ 使用 YaST 設定 conntrackd

使用 YaST 叢集模組設定使用者空間 conntrackd (請參閱圖形 4.5 「YaST 叢集 - conntrackd)。該工具需要一個不會用於其他通訊通道的專屬網路介面。之後,可透過資源代辦啟動該精靈。

  1. 啟動 YaST 叢集模組,然後切換到設定 conntrackd 類別。

  2. 定義用於同步連接狀態的「多點傳播位址」。

  3. 群組編號中,定義要與之同步連接狀態的群組的數字 ID。

  4. 按一下「產生 /etc/conntrackd/conntrackd.conf」以建立 conntrackd 的組態檔案。

  5. 如果修改了現存叢集的任何選項,請確認您的變更並關閉叢集模組。

  6. 若要進一步設定叢集組態,請按「下一步」並繼續第 4.7 節 「設定服務」

  7. 選取一個用於同步連接狀態的「專屬介面」。系統會自動偵測到所選介面的 IPv4 位址並在 YaST 中顯示。該介面必須已設定並支援多點傳播。

YaST 叢集 - conntrackd
圖 4.5︰ YaST 叢集 - conntrackd

設定 conntrack 工具後,可對 Linux 虛擬伺服器使用這些工具 (請參閱負載平衡)。

4.7 設定服務

在 YaST 叢集模組中定義是否要在節點開機時啟動某些服務。您還可以使用該模組手動啟動和停止服務。若要使叢集節點上線並啟動叢集資源管理員,必須以服務形式執行 Pacemaker。

程序 4.8︰ 啟用 Pacemaker
  1. 在 YaST 叢集模組中,切換至服務類別。

  2. 若要在此叢集節點每次開機時都啟動 Pacemaker,請在開機群組中選取相應的選項。如果在開機群組中選取關閉,則每次此節點開機後,您都必須手動啟動 Pacemaker。若要手動啟動 Pacemaker,請使用以下指令:

    root # crm cluster start
  3. 若要立即啟動或停止 Pacemaker,請按一下相應的按鈕。

  4. 若要在防火牆中開啟所需的連接埠,以便叢集能夠在目前機器上通訊,請啟用在防火牆中開啟埠

  5. 確認您的變更。請注意,該組態僅適用於目前機器,而非所有叢集節點。

YaST 叢集 - 服務
圖 4.6︰ YaST 叢集 - 服務

4.8 依次啟動每個節點上的服務以使叢集上線

完成初始叢集組態後,在每個叢集節點上啟動叢集服務,以使堆疊上線:

程序 4.9︰ 啟動叢集服務並檢查狀態
  1. 登入現存節點。

  2. 檢查該服務是否已在執行:

    root # crm cluster status

    如果未在執行,立即啟動叢集服務:

    root # crm cluster start
  3. 對每個叢集節點重複上述步驟。

  4. 在其中一個節點上,使用 crm status 指令檢查叢集狀態。如果所有節點都已上線,則輸出應如下所示:

    root # crm status
    Cluster Summary:
      * Stack: corosync
      * Current DC: alice (version ...) - partition with quorum
      * Last updated: ...
      * Last change:  ... by hacluster via crmd on bob
      * 2 nodes configured
      * 1 resource instance configured
    
    Node List:
      * Online: [ alice bob ]
    ...

    此輸出表示叢集資源管理員已啟動,並可以管理資源。

完成基本組態設定並使節點上線之後,便可開始設定叢集資源。使用其中一種叢集管理工具,例如 crm 外圍程序 (crmsh) 或 Hawk2。如需更多資訊,請參閱第 8 章 「設定和管理叢集資源 (指令行)第 7 章 「使用 Hawk2 設定和管理叢集資源