跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / Quick Start Guides / 安裝與設定快速入門
SUSE Linux Enterprise High Availability Extension 15 SP3

安裝與設定快速入門

SUSE Linux Enterprise High Availability Extension 15 SP3

出版日期:December 11, 2023

此文件將引導您使用 ha-cluster-bootstrap 套件所提供的開機程序檔,完成最基本的雙節點叢集設定。其中包括將虛擬 IP 位址設定為叢集資源,以及在共用儲存上使用 SBD 做為節點圍籬區隔機制。

原著者: Tanja RothThomas Schraitle

1 使用情境

透過本文件中介紹的程序,可完成對具有以下內容的雙節點叢集的最基本設定:

  • 兩個節點:alice (IP:192.168.1.1) 和 bob (IP:192.168.1.2);兩者之間透過網路彼此連接。

  • 一個浮動的虛擬 IP 位址 (192.168.2.1)。用戶端可透過此位址連接到服務,而不管此服務在哪個實體節點上執行。

  • 一個共用儲存裝置,用做 SBD 圍籬區隔機制。這樣可以避免電腦分裂的情況。

  • 若主動主機發生故障 (主動/被動設定),資源會從一個節點容錯移轉到另一個節點。

使用開機程序檔設定叢集後,我們將使用圖形 Hawk2 來監控叢集。它是叢集管理工具之一,隨附於 SUSE® Linux Enterprise High Availability Extension 中。為了對資源容錯移轉是否有效進行基本的測試,我們會將其中一個節點置於待命模式,然後檢查虛擬 IP 位址是否已移轉到另一個節點。

該雙節點叢集可用於測試的目的,也可以用做基本叢集組態,稍後再進行擴充。將叢集用於線上環境之前,請先根據自身要求對其進行修改。

2 系統要求

本章介紹第 1 節中所述案例的關鍵系統要求。若要將叢集調整為可用於生產環境,請參閱第 2 章 「系統要求和建議中的完整清單。

2.1 硬體需求

伺服器

兩部已安裝第 2.2 節 「軟體要求」中指定的軟體的伺服器。

伺服器可以是裸機,也可以是虛擬機器。它們不需要使用相同的硬體 (記憶體、磁碟空間等等),但必須具有相同的架構。系統不支援跨平台叢集。

通訊通道

每個叢集節點至少有兩個 TCP/IP 通訊媒體。網路設備必須支援您希望用於叢集通訊的通信方式:多點傳播或單路廣播。通訊媒體應支援 100 Mbit/s 或更高的資料速率。對於受支援的叢集設定,需要兩個或以上的備援通訊路徑。可以透過以下方式來實現:

  • 網路裝置結合 (優先)。

  • Corosync 中的另一個通訊通道。

節點圍籬區隔/STONITH

若要避免電腦分裂的情況,叢集需要有節點圍籬區隔機制。在出現電腦分裂的情況下,叢集節點會因硬體或軟體故障或者網路連接斷開而分成兩個或更多互不相識的群組。圍籬區隔機制會隔離存在問題的節點 (通常是透過重設節點或關閉節點的電源)。這也稱為 STONITH (將其他節點爆頭)。節點圍籬區隔機制可以是實體裝置 (電源開關),也可以是 SBD (依磁碟 STONITH) 等機制與監視程式相結合。使用 SBD 需要共用儲存。

2.2 軟體要求

將加入叢集的所有節點上都至少需安裝以下模組和延伸:

  • Basesystem Module 15 SP3

  • Server Applications Module 15 SP3

  • SUSE Linux Enterprise High Availability Extension 15 SP3

2.3 其他要求與建議

時間同步

叢集節點必須與叢集外的 NTP 伺服器同步。自 SUSE Linux Enterprise High Availability Extension 15 起,採用 chrony 做為 NTP 的預設實作。如需詳細資訊,請參閱 《SUSE Linux Enterprise Server 15 SP3 管理指南》

若節點未同步,叢集可能無法正常運作。此外,記錄檔案和叢集報告在未同步的情況下很難進行分析。使用開機程序檔時,若尚未設定 NTP,系統會向您發出警告。

主機名稱與 IP 位址
  • 使用靜態 IP 位址。

  • /etc/hosts 檔案中列出了所有叢集節點,包括完全合格的主機名稱和簡短主機名稱。叢集的成員必須能夠籍由名稱找到彼此,這是一項基本要求。如果名稱不可用,內部叢集通訊將會失敗。

SSH

所有叢集節點必須能透過 SSH 互相存取。諸如 crm report (用於疑難排解) 等工具以及 Hawk2 的歷程總管,要求節點之間透過無密碼的 SSH 方式來存取,否則它們只能從目前節點收集資料。

若使用開機程序檔設定叢集,系統會自動建立並複製 SSH 金鑰。

3 開機程序檔綜覽

來自 ha-cluster-bootstrap 套件的所有指令都會執行開機程序檔,而且所需的時間和手動介入極少。

  • 使用 ha-cluster-init 可定義叢集通訊所需的基本參數。如此可讓您擁有一個正常運作的單節點叢集。

  • 使用 ha-cluster-join 可將更多節點新增到叢集中。

  • 使用 ha-cluster-remove 可從叢集中移除節點。

所有開機程序檔都會記錄至 /var/log/ha-cluster-bootstrap.log。查看此檔案即可瞭解開機程序的詳細資料。開機過程中設定的任何選項都可在之後使用 YaST 叢集模組加以修改。如需詳細資料,請參閱第 4 章 「使用 YaST 叢集模組

每個程序檔都有相應的 man 頁面,其中涵蓋功能範圍、程序檔選項,以及程序檔可建立和修改的檔案的綜覽。

開機程序檔 ha-cluster-init 會檢查並設定以下元件:

NTP

如果 NTP 未設定為在開機時啟動,則會出現一則訊息。自 SUSE Linux Enterprise High Availability Extension 15 起,採用 chrony 做為 NTP 的預設實作。

SSH

它會建立用於在叢集節點之間進行無密碼登入的 SSH 金鑰。

Csync2

它會設定 Csync2 在叢集中的所有節點之間複製組態檔案。

Corosync

它會設定叢集通訊系統。

SBD/監視程式

它會檢查是否存在監視程式,並詢問您是否將 SBD 設定為節點圍籬區隔系統。

虛擬浮動 IP

它會詢問您是否設定虛擬 IP 位址以使用 Hawk2 進行叢集管理。

防火牆

它會開啟叢集通訊所需的防火牆連接埠。

叢集名稱

它會為叢集定義名稱,預設為 hacluster。叢集名稱是選擇性元件,對 Geo 叢集最有用。叢集名稱通常會反映位置,以便您更容易區分 Geo 叢集內部的站點。

QDevice/QNetd

本指南不介紹此設定。如果您要使用 QNetd 伺服器,可以依第 12 章 「QDevice 和 QNetd所述使用開機程序檔進行設定。

4 安裝 SUSE Linux Enterprise High Availability Extension

High Availability 安裝模式 (在指令行上以 sles_ha 指定) 中包含了使用 High Availability Extension 設定和管理叢集的套件。此模式只在 SUSE Linux Enterprise High Availability Extension 已做為 SUSE® Linux Enterprise Server 的延伸安裝後才能使用。

如需如何安裝延伸的資訊,請參閱 《SUSE Linux Enterprise Server 15 SP2 部署指南》

程序 1︰ 安裝 High Availability 模式

若尚未安裝此模式,請執行以下步驟:

  1. 透過指令行使用 Zypper 來安裝:

    root # zypper install -t pattern ha_sles
  2. 所有將成為叢集成員的機器上安裝 High Availability 模式。

    注意
    注意:在所有參與節點上安裝軟體套件

    如果要自動安裝 SUSE Linux Enterprise Server 15 SP3SUSE Linux Enterprise High Availability Extension 15 SP3,請使用 AutoYaST 複製現有節點。如需詳細資訊,請參閱 第 3.2 節 「使用 AutoYaST 進行大量安裝和部署」

  3. 在 SUSE Customer Center 上註冊機器。如需詳細資訊,請參閱 《SUSE Linux Enterprise Server 15 SP3 升級指南》

5 使用 SBD 做為圍籬區隔機制

若您擁有 SAN (儲存區域網路) 等共用儲存,可以使用它們來避免電腦分裂的情況。若要實現此目的,請設定 SBD 做為節點圍籬區隔機制。SBD 使用監視程式支援與外部/sbd STONITH 資源代辦。

5.1 SBD 的要求

使用 ha-cluster-init 設定第一個節點時,可以決定是否使用 SBD。如果要使用,則需輸入共用儲存裝置的路徑。依預設,ha-cluster-init 會在要用於 SBD 的裝置上自動建立一個小分割區。

若要使用 SBD,必須符合以下要求:

  • 針對叢集中的所有節點,共用儲存裝置的路徑必須永久且一致。請使用穩定的裝置名稱,例如 /dev/disk/by-id/dm-uuid-part1-mpath-abcedf12345

  • SBD 裝置不得使用基於主機的 RAID、LVM2,也不能位於 DRBD* 例項上。

如需如何設定共用儲存的詳細資料,請參閱 《SUSE Linux Enterprise Server 15 SP3 儲存管理指南》

5.2 對 SBD 啟用 Softdog 監視程式

依預設,SUSE Linux Enterprise 伺服器的核心中會啟用監視程式支援:本產品隨附了多個核心模組,可提供特定於硬體的監視程式驅動程式。High Availability Extension 使用 SBD 精靈做為饋送監視程式的軟體元件。

以下程序使用 softdog 監視程式。

重要
重要:Softdog 限制

Softdog 驅動程式假設至少有一個 CPU 仍然在執行。如果所有 CPU 均已堵塞,則 softdog 驅動程式中應該將系統重新開機的代碼永遠都不會執行。相反地,即使所有 CPU 均已堵塞,硬體監視程式也仍然會繼續運作。

強烈建議您於生產環境中使用叢集之前,以最適合您硬體的相應硬體模組取代 softdog 模組。

不過,如果沒有與您的硬體相符的監視程式,則可以將 softdog 當成核心監視程式模組使用。

  1. 第 5.1 節 「SBD 的要求」中所述建立永久的共用儲存。

  2. 啟用 softdog 監視程式:

    root # echo softdog > /etc/modules-load.d/watchdog.conf
    root # systemctl restart systemd-modules-load
  3. 測試 softdog 模組是否已正確載入:

    root # lsmod | grep dog
    softdog                16384  1

強烈建議您測試 SBD 圍籬區隔機制是否能正常阻止電腦分裂情況。此類測試可透過阻擋 Corosync 叢集通訊來完成。

6 設定第一個節點

使用 ha-cluster-init 程序檔設定第一個節點。此操作所需的時間和手動介入都極少。

程序 2︰ 使用 ha-cluster-init 設定第一個節點 (alice)
  1. root 身分登入要當成叢集節點使用的物理機器或虛擬機器。

  2. 執行如下指令啟動開機程序檔:

    root # ha-cluster-init --name CLUSTERNAME

    以一個有意義的名稱 (例如叢集的地理位置 amsterdam) 取代 CLUSTERNAME 預留位置。若要在稍後建立 Geo 叢集,這樣做特別有用,因為它使站點的識別變得簡單。

    如果您需要使用單點傳播而不是多路廣播 (預設方式) 來進行叢集通訊,請使用選項 -u。安裝後,在檔案 /etc/corosync/corosync.conf 中找到值 udpu。如果 ha-cluster-init 偵測到節點正在 Amazon Web Services (AWS) 上執行,該程序檔將自動使用單點傳播做為叢集的預設通訊方式。

    這些程序檔會檢查是否存在 NTP 組態與硬體監視程式服務。這會產生 SSH 存取與 Csync2 同步所需的公用和私密 SSH 金鑰,並啟動相應的服務。

  3. 設定叢集通訊層 (Corosync):

    1. 輸入要繫結到的網路位址。程序檔預設將建議 eth0 網路位址。您也可以輸入不同的網路位址,如 bond0 位址。

    2. 輸入多路廣播位址。程序檔會建議一個隨機位址,您可將其做為預設值。當然,您特定的網路需要支援此多路廣播位址。

    3. 輸入多路廣播連接埠。程序檔會建議預設值 5405

  4. 將 SBD 設定為節點圍籬區隔機制:

    1. 輸入 y 確認您要使用 SBD。

    2. 輸入要用於 SBD 的區塊裝置分割區的永久路徑 (請參閱第 5 節 「使用 SBD 做為圍籬區隔機制」)。該路徑必須在叢集的所有節點間保持一致。

  5. 設定使用 Hawk2 進行叢集管理所需的虛擬 IP 位址。(稍後,我們將使用此虛擬 IP 資源測試容錯移轉是否成功)。

    1. 輸入 y 確認您要設定虛擬 IP 位址。

    2. 為 Hawk2 的管理 IP 輸入想要的且未使用的 IP 位址:192.168.2.1

      您可以連接到此虛擬 IP 位址,而無需使用 Hawk2 登入個別叢集節點。

最後,該程序檔將啟動 Pacemaker 服務以使叢集上線,並啟用 Hawk2。Hawk2 要使用的 URL 會顯示在螢幕上。

您現在便擁有了一個正常運作的單節點叢集。若要檢視其狀態,請執行以下步驟:

程序 3︰ 登入 Hawk2 Web 介面
  1. 在任一機器上,啟動網頁瀏覽器並確定已啟用 JavaScript 和 Cookie。

  2. 輸入任一執行 Hawk Web 服務之叢集節點的 IP 位址或主機名稱做為 URL。或者,輸入您在程序 2 「使用 ha-cluster-init 設定第一個節點 (alice)」步驟 5中設定的虛擬 IP 位址的位址。

    https://HAWKSERVER:7630/
    注意
    注意:證書警告

    當您首次嘗試存取該 URL 時,如果系統顯示證書警告,則表示使用了自行簽署的證書。依預設,自行簽署的證書不被視為可信證書。

    請咨詢您的叢集操作人員取得證書詳細資料,以驗證該證書。

    若仍要繼續,您可以在瀏覽器中新增一個例外以略過此警告。

  3. 在 Hawk2 登入畫面中,輸入在開機程序中建立的使用者的 使用者名稱密碼 (使用者為 hacluster,密碼為 linux)。

    重要
    重要:安全密碼

    請立即以安全的密碼取代預設密碼:

    root # passwd hacluster
  4. 按一下登入。登入後,Hawk2 Web 介面依預設會顯示「狀態」畫面,其中包括目前叢集狀態的概覽:

    Hawk2 中單節點叢集的狀態
    圖 1︰ Hawk2 中單節點叢集的狀態

7 新增第二個節點

若您已設定並執行單節點叢集,請按程序 4 中所述,使用 ha-cluster-join 開機程序檔新增第二個叢集節點。該程序檔只需要存取一個現存叢集節點,然後便會自動在目前機器上完成基本設定。如需詳細資料,請參閱 ha-cluster-init man 頁面。

開機程序檔負責變更特定於雙節點叢集的組態,例如 SBD、Corosync。

程序 4︰ 使用 ha-cluster-join 新增第二個節點 (bob)
  1. root 身分登入要加入叢集的實體或虛擬機器。

  2. 執行如下指令啟動開機程序檔:

    root # ha-cluster-join

    如果 NTP 未設定為在開機時啟動,則會出現一則訊息。該程序檔還會檢查硬體監視程式裝置 (在要設定 SBD 時,此類裝置非常重要)。如果不存在此類裝置,將會向您發出警告。

  3. 如果您決定仍要繼續,系統將提示您輸入現存節點的 IP 位址。輸入第一個節點 (alice) 的 IP 位址 192.168.1.1)。

  4. 如果尚未設定兩部機器之間的無密碼 SSH 存取,系統將提示您輸入現有節點的 root 密碼。

    登入指定節點後,程序檔將會複製 Corosync 組態,設定 SSH、Csync2,並使目前機器以新叢集節點的身分上線。除此之外,它還會啟動 Hawk2 所需的服務。

在 Hawk2 中檢查叢集狀態。在狀態 › 節點下,您應該會看見兩個狀態為綠色的節點 (請參閱圖形 2 「雙節點叢集的狀態」)。

雙節點叢集的狀態
圖 2︰ 雙節點叢集的狀態

8 測試叢集

第 8.1 節 「測試資源容錯移轉」是一項簡單的測試,可檢查當目前執行資源的節點被設定為待命時,叢集是否將虛擬 IP 位址移動到另一個節點。

不過,實際測試會涉及特定的使用案例與情況,包括測試圍籬區隔機制以避免電腦分裂的情況。若尚未正確設定圍籬區隔機制,叢集將無法正常運作。

將該叢集用於生產環境之前,請依據自己的使用案例或者借助 ha-cluster-preflight-check 程序檔對叢集進行全面測試。

8.1 測試資源容錯移轉

請使用以下快速測試程序檢查資源容錯移轉:

程序 5︰ 測試資源容錯移轉
  1. 開啟終端機並 ping 192.168.2.1 (即您的虛擬 IP 位址)。

    root # ping 192.168.2.1
  2. 程序 3 「登入 Hawk2 Web 介面」中所述登入您的叢集。

  3. 在 Hawk2 狀態 ›  資源中,檢查虛擬 IP 位址 (資源 admin_addr) 正在哪個節點上執行。假設資源正在 alice 上執行。

  4. alice 置於待命模式 (請參閱圖形 3 「處於待命模式的節點 alice)。

    處於待命模式的節點 alice
    圖 3︰ 處於待命模式的節點 alice
  5. 按一下 狀態 ›  資源。資源 admin_addr 已移轉至 bob

移轉時,您應該會看見不斷向虛擬 IP 位址進行 ping 的流程。這表示叢集設定與浮動 IP 正常運作。使用 C 可取消 Ctrlping 指令。

8.2 使用 ha-cluster-preflight-check 指令進行測試

指令 ha-cluster-preflight-check 會對叢集執行標準化測試。它會觸發叢集故障,並驗證組態以找出問題。在生產環境中使用叢集之前,建議先使用此指令來確定一切符合預期。

該指令支援以下檢查:

  • 環境檢查 -e/--env-check 此項測試將會檢查:

    • 主機名稱是否可解析?

    • 是否已啟用並啟動時間服務?

    • 是否為目前節點設定了監視程式?

    • 是否已啟用 firewalld 服務,並開啟了叢集相關的連接埠?

  • 叢集狀態檢查 -c/--cluster-check 檢查叢集的不同狀態和服務。此項測試將會檢查:

    • 叢集服務 (Pacemaker/Corosync) 是否已啟用並正在執行?

    • 是否已啟用 STONITH?它還會檢查是否已設定並啟動 STONITH 相關的資源。如果您設定了 SBD,SBD 服務是否已啟動?

    • 叢集是否具有最低節點數?顯示目前 DC 節點,以及處於線上、離線和未清理狀態的節點。

    • 是否存在已啟動、已停止或有故障的資源?

  • 電腦分裂檢查 --split-brain-iptables 透過阻擋 Corosync 連接埠來模擬電腦分裂情境。檢查是否可如預期般圍籬區隔一個節點。

  • 停止 SBD、Corosync 和 Pacemaker 的精靈 -kill-sbd/-kill-corosync/-kill-pacemakerd 執行此類測試後,可在 /var/lib/ha-cluster-preflight-check 中找到報告。該報告包括測試案例說明、動作記錄,以及對可能結果的說明。

  • 圍籬區隔節點檢查 --fence-node圍籬區隔從指令行傳遞的特定節點。

例如,若要測試環境,請執行:

root # crm_mon -1
Stack: corosync
Current DC: alice (version ...) - partition with quorum
Last updated: Fri Mar 03 14:40:21 2020
Last change: Fri Mar 03 14:35:07 2020 by root via cibadmin on alice

2 nodes configured
1 resource configured

Online: [ alice bob ]
Active resources:

 stonith-sbd    (stonith:external/sbd): Started alice

root # ha-cluster-preflight-check -e
[2020/03/20 14:40:45]INFO: Checking hostname resolvable [Pass]
[2020/03/20 14:40:45]INFO: Checking time service [Fail]
 INFO: chronyd.service is available
 WARNING: chronyd.service is disabled
 WARNING: chronyd.service is not active
[2020/03/20 14:40:45]INFO: Checking watchdog [Pass]
[2020/03/20 14:40:45]INFO: Checking firewall [Fail]
 INFO: firewalld.service is available
 WARNING: firewalld.service is not active

可以在 /var/log/ha-cluster-preflight-check.log 中檢查結果。

9 相關資訊

https://documentation.suse.com/sle-ha/ 上提供了更多有關此產品的文件。如需其他組態和管理任務,請參閱全面的 《管理指南》

10 法律聲明

版權所有 © 2006–2023 SUSE LLC 和貢獻者。保留所有權利。

根據 GNU 自由文件授權 (GNU Free Documentation License) 1.2 版或 1.3 版 (自由選擇),使用者可以複製、散佈與/或修改本文件;「恆常章節」為此著作權聲明與授權。GNU Free Documentation License一節中包含 1.2 版授權的一份副本。

如需 SUSE 商標,請參閱 http://www.suse.com/company/legal/。所有其他協力廠商的商標所有權分屬其各自的公司。®、™ 等商標符號表示 SUSE 及其關係企業的商標。星號 (*) 表示協力廠商的商標。

本手冊中所有資訊在編輯時,都已全力注意各項細節。但這不保證百分之百的正確性。因此,SUSE LLC 及其附屬公司、作者或譯者都不需對任何錯誤或造成的結果負責。