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_addr
的nodelist
,則不一定需要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 節 「定義通訊通道」。
- 安全性 (選擇性但建議使用)
可讓您定義叢集的驗證設定。HMAC/SHA1 驗證需要使用共用密碼來保護和驗證訊息。如需詳細資料,請參閱第 4.4 節 「定義驗證設定」。
- 設定 Csync2 (選擇性但建議使用)
Csync2 會幫助您追蹤組態變更,並在叢集節點之間保持檔案同步。如需詳細資料,請參閱第 4.5 節 「將組態傳輸至所有節點」。
- 設定 conntrackd (選擇性)
可讓您設定使用者空間
conntrackd
。使用 conntrack 工具為 iptables 進行狀態封包檢測。如需詳細資料,請參閱第 4.6 節 「同步叢集節點間的連接狀態」。- 服務 (必需)
可讓您設定服務以使叢集節點變為線上狀態。定義是否在開機時啟動 Pacemaker 服務,以及是否在防火牆中開啟節點間通訊所需的連接埠。如需詳細資料,請參閱第 4.7 節 「設定服務」。
如果您是首次啟動叢集模組,它會顯示為精靈並引導您完成進行基本設定所需的所有步驟。如果並非第一次啟動,可以按一下左側面板上的類別,以存取每個步驟的組態選項。
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。
使用多點傳播時,將對所有叢集節點使用相同的 bindnetaddr
、mcastaddr
和 mcastport
。叢集中的所有節點透過使用相同的多點傳播位址瞭解彼此的存在。對於不同的叢集,請使用不同的多點傳播位址。
啟動 YaST 叢集模組,然後切換到
類別。將
通訊協定設定為多點傳播
。定義「
」。將此值設定為要用於叢集多點傳播的子網路。定義「
」。定義
。若要為每個叢集節點自動產生唯一的 ID,請將
保留為啟用狀態。定義
。輸入最低節點數。依預設,每個節點的投票數為
。此值對 Corosync 非常重要,它要使用該值來為分割叢集計算1
。 必須與叢集中的節點數相符。確認您的變更。
如果需要,請依程序 4.3 「定義備援通訊通道」所述在 Corosync 中定義備援通訊通道。
如果要使用單點傳播而非多點傳播進行叢集通訊,請依如下所述繼續操作。
啟動 YaST 叢集模組,然後切換到
類別。將
通訊協定設定為單點傳播
。定義
。若要進行單點傳播通訊,Corosync 需要知道叢集中所有節點的 IP 位址。請對將成為叢集成員的每個節點按一下
,然後輸入以下詳細資料:若要修改或移除叢集成員的任何位址,請使用「
」或「 」按鈕。若要為每個叢集節點自動產生唯一的 ID,請將
保留為啟用狀態。定義
。輸入最低節點數。依預設,每個節點的投票數為
。此值對 Corosync 非常重要,它要使用該值來為分割叢集計算1
。 必須與叢集中的節點數相符。確認您的變更。
如果需要,請依程序 4.3 「定義備援通訊通道」所述在 Corosync 中定義備援通訊通道。
如果網路裝置結合因某種原因而無法使用,次佳選擇就是在 Corosync 中定義備援通訊通道 (另一個環)。如此便可使用實體位置相互分隔的兩個網路進行通訊。如果一個網路發生故障,叢集節點仍可透過另一個網路進行通訊。
Corosync 中的另一個通訊通道將會形成另一個記號傳遞環狀網路。在 /etc/corosync/corosync.conf
中,您設定的第一個通道就是主環,其環編號為 0
。第二個環 (備援通道) 的環編號為 1
。
如果 Corosync 中已定義備援通訊通道,請使用 RRP 告知叢集如何使用這些介面。借助 RRP,可以使用實體位置相互分隔的兩個網路進行通訊。如果一個網路發生故障,叢集節點仍可透過另一個網路進行通訊。
RRP 可以有三種模式:
如果設為
active
,Corosync 將會主動使用這兩個介面。但是,此模式已廢棄。如果設為
passive
,Corosync 會選擇性地透過可用網路傳送訊息。如果設為
none
,將會停用 RRP。
/etc/hosts
如果 Corosync 中設定了多個環狀網路,則每個節點都可具有多個 IP 位址。這需要反映在所有節點的 /etc/hosts
檔案中。
啟動 YaST 叢集模組,然後切換到
類別。啟用「
」。備援通道必須使用您定義的第一個通訊通道所使用的相同通訊協定。如果使用多路廣播,請輸入以下參數:要使用的
,以及備援通道的 和 。如果使用單點傳播,請定義以下參數:要使用的
及 。輸入將加入叢集的所有節點的 IP 位址。若要指示 Corosync 如何以及何時使用其他通道,請選取要使用的
:如果只定義了一個通訊通道,則會自動停用「
」(設為none
值)。如果設為
active
,Corosync 將會主動使用這兩個介面。但是,此模式已廢棄。如果設為
passive
,Corosync 會選擇性地透過可用網路傳送訊息。
使用 RRP 時,High Availability Extension 會監控目前環的狀態,並在發生故障後自動重新啟用備援環。
或者,使用
corosync-cfgtool
手動檢查環狀網路狀態。請使用-h
檢視可用選項。確認您的變更。
4.4 定義驗證設定 #
若要定義叢集的驗證設定,您可以使用 HMAC/SHA1 驗證。此方式需要使用共用密碼來保護和驗證訊息。您指定的驗證金鑰 (密碼) 將用於叢集中的所有節點。
啟動 YaST 叢集模組,然後切換到
類別。啟動「
」。針對新建立的叢集按一下「
」。系統即會建立一個驗證金鑰並將其寫入/etc/corosync/authkey
。如果要讓目前機器加入現存叢集,請不要產生新的金鑰檔案,而是將現存叢集某個節點中的
/etc/corosync/authkey
複製到目前機器 (以手動方式或使用 Csync2)。確認您的變更。YaST 會將此組態寫入
/etc/corosync/corosync.conf
。
4.5 將組態傳輸至所有節點 #
您應當使用 csync2
工具在叢集中的所有節點間複製產生的組態檔案,而不是手動將其複製到所有節點。
若要如此,您需要執行下列基本步驟:
Csync2 會幫助您追蹤組態變更,並在叢集節點之間保持檔案同步。
您可以定義對操作而言非常重要的檔案清單。
您可以顯示這些檔案的變更 (針對其餘叢集節點)。
您可以使用單一指令同步化設定的檔案。
透過
~/.bash_logout
中的一個簡單外圍程序程序檔,您在從系統登出之前可以收到變更未同步的提醒。
http://oss.linbit.com/csync2/ 和 http://oss.linbit.com/csync2/paper.pdf 上提供了關於 Csync2 的詳細資訊。
4.5.1 使用 YaST 設定 Csync2 #
啟動 YaST 叢集模組,然後切換到
類別。若要指定同步群組,請在
群組中按一下 ,然後輸入叢集中所有節點的本地主機名稱。對於每個節點,都必須使用hostname
指令傳回的字串。提示:主機名稱解析如果您的網路中無法正常進行主機名稱解析,您也可以為每個叢集節點指定主機名稱與 IP 位址的組合。要這樣做,請使用字串主機名稱@IP,例如
alice@192.168.2.100
。然後,Csync2 將在連接時使用 IP 位址。按一下「
」建立同步化群組的金鑰檔案。建立的金鑰檔案會寫入/etc/csync2/key_hagroup
。建立之後,必須手動將其複製到叢集的所有成員。若要在「
」清單中填入所有節點間執行同步化通常所需的檔案,請按一下「 」。若要在待同步檔案的清單中
、 或 檔案,請使用相應的按鈕。您必須輸入各個檔案的絕對路徑名稱。按一下
以啟動 Csync2。如此會執行以下指令,以在開機時自動啟動 Csync2:root #
systemctl
enable csync2.socket確認您的變更。YaST 會將 Csync2 組態寫入
/etc/csync2/csync2.cfg
。若現在要啟動同步程序,請繼續第 4.5.2 節 「使用 Csync2 同步變更」。
4.5.2 使用 Csync2 同步變更 #
若要成功使用 Csync2 來同步檔案,必須符合以下要求:
同一 Csync2 組態在所有叢集節點上均可用。
同一 Csync2 驗證金鑰在所有叢集節點上均可用。
所有叢集節點上都必須正在執行 Csync2。
因此,在首次執行 Csync2 之前,需要做好以下準備:
在依照
所述設定檔案
/etc/csync2/csync2.cfg第 4.5.1 節 「使用 YaST 設定 Csync2」 後,手動將其複製到所有節點。將您執行第 4.5.1 節 的步驟 3 時在一個節點上產生的
/etc/csync2/key_hagroup
檔案複製到叢集中的所有節點。Csync2 在進行驗證時需要使用該檔案。但請勿在其於節點上重新產生此檔案,因為在所有節點上,該檔案都必須相同。在所有節點上執行以下指令,以便立即啟動服務:
root #
systemctl
start csync2.socket
若要對所有檔案執行一次初始同步,請在要從中複製組態的機器上執行以下指令:
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.
如果您確定目前節點上的是檔案的「最佳」版本,可以透過強制使用此檔案並重新同步來解決衝突:
root #
csync2
-f
/etc/corosync/corosync.confroot #
csync2
-x
如需 Csync2 選項的詳細資訊,請執行
csync2 -help
Csync2 僅會推送變更,而不會持續在機器間同步檔案。
每次對需要同步的檔案進行更新時,都需要將變更推入至其餘機器:在您進行了變更的機器上執行 csync2
-xv
。如果在未變更檔案的任何其他機器上執行該指令,系統不會執行任何操作。
4.6 同步叢集節點間的連接狀態 #
若要對 iptables 啟用可設定狀態的封包檢查,請設定並使用 conntrack 工具。若要如此,您需要執行下列基本步驟:
conntrackd
#
使用 YaST 叢集模組設定使用者空間 conntrackd
(請參閱圖形 4.5 「YaST conntrackd
」)。該工具需要一個不會用於其他通訊通道的專屬網路介面。之後,可透過資源代辦啟動該精靈。
-
啟動 YaST 叢集模組,然後切換到
類別。定義用於同步連接狀態的「
」。在
中,定義要與之同步連接狀態的群組的數字 ID。按一下「
」以建立conntrackd
的組態檔案。如果修改了現存叢集的任何選項,請確認您的變更並關閉叢集模組。
若要進一步設定叢集組態,請按「第 4.7 節 「設定服務」。
」並繼續選取一個用於同步連接狀態的「
」。系統會自動偵測到所選介面的 IPv4 位址並在 YaST 中顯示。該介面必須已設定並支援多點傳播。
conntrackd
- #設定 conntrack 工具後,可對 Linux 虛擬伺服器使用這些工具 (請參閱負載平衡)。
4.7 設定服務 #
在 YaST 叢集模組中定義是否要在節點開機時啟動某些服務。您還可以使用該模組手動啟動和停止服務。若要使叢集節點上線並啟動叢集資源管理員,必須以服務形式執行 Pacemaker。
在 YaST 叢集模組中,切換至
類別。若要在此叢集節點每次開機時都啟動 Pacemaker,請在
群組中選取相應的選項。如果在 群組中選取 ,則每次此節點開機後,您都必須手動啟動 Pacemaker。若要手動啟動 Pacemaker,請使用以下指令:root #
crm
cluster start若要立即啟動或停止 Pacemaker,請按一下相應的按鈕。
若要在防火牆中開啟所需的連接埠,以便叢集能夠在目前機器上通訊,請啟用
。確認您的變更。請注意,該組態僅適用於目前機器,而非所有叢集節點。
4.8 依次啟動每個節點上的服務以使叢集上線 #
完成初始叢集組態後,在每個叢集節點上啟動叢集服務,以使堆疊上線:
登入現存節點。
檢查該服務是否已在執行:
root #
crm
cluster status如果未在執行,立即啟動叢集服務:
root #
crm
cluster start對每個叢集節點重複上述步驟。
在其中一個節點上,使用
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 設定和管理叢集資源」。