SUSE Linux Enterprise High Availability Extension 12 SP5

Geo 叢集快速入門

SUSE Linux Enterprise High Availability Extension 12 SP5

摘要

借助 Geo 叢集,您可以擁有多個地理位置分散的站點並在每個站點部署一個本地叢集。這些叢集之間的容錯移轉由一個更高階的實體來調節控制,即投票間叢集票證管理員。本文件會引導您使用 ha-cluster-bootstrap 套件提供的 Geo 開機程序檔完成 Geo 叢集的基本設定。

原著: Tanja RothThomas Schraitle
出版日期:December 11, 2023

1 概念綜覽

基於 SUSE® Linux Enterprise High Availability Extension 的 Geo 叢集可視為覆蓋叢集,其中每個叢集站點相當於傳統叢集中的一個叢集節點。覆蓋叢集由投票間叢集票證管理員 (以下簡稱「投票間」) 管理。Geo 叢集中的各方都會執行一個服務,即 boothd。它會與其餘站點上執行的投票間精靈連接,並交換连接性詳細資料。投票間依賴稱為「票證」的叢集物件來保持叢集資源在各站點之間的高度可用性。票證可授予在特定叢集站台上執行特定資源的權限。投票間可保證每個票證一次只會授予給一個站點。

如果兩個投票間例項之間的通訊中斷,則可能是因為叢集站點之間的網路發生故障,其中一個叢集站點中斷運作。在此情況下,您需要使用一個額外的例項 (第三個叢集站點或仲裁方) 來就各決策 (例如在站點間進行資源的容錯移轉) 達成一致意見。仲裁方是一部以特殊模式執行投票間例項的機器 (不屬於叢集)。每個 Geo 叢集都可以有一或多個仲裁方。

雙站點叢集 (2x2 個節點 + 仲裁方)
圖形 1︰ 雙站點叢集 (2x2 個節點 + 仲裁方)

如需用於 Geo 叢集的概念、元件和票證管理的更多詳細資料,請參閱Chapter 2, Conceptual Overview

2 使用案例

下面,我們將會設定一個包含兩個叢集站點和一個仲裁方的基本 Geo 叢集︰

  • 我們假設叢集站點名為 amsterdamberlin

  • 我們假設每個站點分別包含兩個節點。節點 alicebob 屬於叢集 amsterdam。節點 charliedoro 屬於叢集 berlin

  • 站點 amsterdam 將分配到以下虛擬 IP 位址︰192.168.201.100

  • 站點 berlin 將分配到以下虛擬 IP 位址︰192.168.202.100

  • 我們假設仲裁方的 IP 位址為 192.168.203.100

繼續操作前,請確認已符合以下要求︰

要求
兩個現有的叢集

您至少擁有兩個要合併到 Geo 叢集中的現有叢集 (如果需要先設定兩個叢集,請依照安裝與設定快速入門中的說明操作。)

有意義的叢集名稱

每個叢集都有一個有意義的名稱,該名稱可反映其位置,定義於 /etc/corosync/corosync.conf 中。

仲裁方

您已安裝不屬於任何現有叢集且將當成仲裁方使用的第三部機器。

有關各項的詳細要求,另請參閱第 3 節 「要求」

3 要求

軟體要求
  • 將要加入 Geo 叢集的所有機器 (叢集節點和仲裁方) 上都已安裝以下軟體︰

    • SUSE® Linux Enterprise Server 12 SP5

    • SUSE Linux Enterprise High Availability Extension 12 SP5

    • Geo Clustering for SUSE Linux Enterprise High Availability Extension 12 SP5

網路要求
  • 要用於每個叢集站點的虛擬 IP 在 Geo 叢集中必須可存取。

  • 必須可以透過每個投票間例項上的一個 UDP 和 TCP 埠連接網站。這意味著,必須相應地設定通訊雙方之間的所有防火牆與 IPsec 通道。

  • 可能需要做出其他有關開啟更多連接埠的設定決策 (例如,為 DRBD 或資料庫複製開啟連接埠)。

其他要求與建議
  • 所有網站上的所有叢集節點都應該同步到叢集外部的 NTP 伺服器。如需詳細資訊,請參閱 https://documentation.suse.com/sles-12/html/SLES-all/cha-netz-xntp.html

    如果節點未同步化,將很難分析記錄檔案和叢集報告。

  • 在 Geo 叢集中使用奇數數量的成員。這樣可確保在網路連接中斷時仍存有大部分站點 (從而避免出現電腦分裂情況)。如果叢集站點的數量為偶數,請使用仲裁方。

  • 每個站點上的叢集都有一個有意義的名稱,例如 amsterdamberlin

    已在相應 /etc/corosync/corosync.conf 檔案中定義每個網站的叢集名稱。

    totem {
        [...]
        cluster_name: amsterdam
        }

    您可以手動完成此操作 (即編輯 /etc/corosync/corosync.conf),也可以透過 YaST 叢集模組進行 (即切換到通訊通道類別,然後定義叢集名稱)。隨後,請停止 pacemaker 服務然後再將其啟動,以使變更生效︰

    root # systemctl stop pacemaker
    root # systemctl start pacemaker

4 Geo 開機程序檔綜覽

  • 使用 ha-cluster-geo-init 可將一個叢集變為 Geo 叢集的第一個站點。該程序檔會獲取某些參數 (例如叢集的名稱、仲裁方,以及一或多個票證) 並依據它們建立 /etc/booth/booth.conf。它會將投票間組態複製到目前叢集站點上的所有節點。它還會為目前叢集站點上的投票間設定所需的叢集資源。

    如需詳細資料,請參閱第 6 節 「設定 Geo 叢集的第一個站點」

  • 使用 ha-cluster-geo-join 可新增目前的叢集至現有的 Geo 叢集中。該程序檔會從現有的叢集站點複製投票間組態,並將其寫入到目前叢集站點上所有節點的 /etc/booth/booth.conf 中。它還會為目前叢集站點上的投票間設定所需的叢集資源。

    如需詳細資料,請參閱第 7 節 「新增另一個站點至 Geo 叢集」

  • 使用 ha-cluster-geo-init-arbitrator 可將目前的機器變為 Geo 叢集的仲裁方。該程序檔會從現有的叢集站點複製投票間組態,並將其寫入 /etc/booth/booth.conf

    如需詳細資料,請參閱第 8 節 「新增仲裁方」

所有開機程序檔都會記錄至 /var/log/ha-cluster-bootstrap.log。如需開機程序的任何詳細資料,請檢查記錄檔案。在開機程序中設定的任何選項都可在稍後加以修改 (透過修改投票間設定、修改資源等)。如需詳細資料,請參閱Geo Clustering Guide

5 以延伸形式安裝

安裝單獨的延伸 Geo Clustering for SUSE Linux Enterprise High Availability Extension,即可不受距離限制使用高可用性叢集。

若要設定 Geo 叢集,您需要擁有以下安裝模式中包含的套件︰

  • High Availability

  • Geo Clustering for High Availability

僅當您已在 SUSE Customer Center (或本地註冊伺服器) 中註冊了系統,並且已新增相應的產品通道或安裝媒體做為延伸時,這兩個模式才可用。如需如何安裝延伸的相關資訊,請參閱《SUSE Linux Enterprise 12 SP5 部署指南》︰https://documentation.suse.com/sles-12/html/SLES-all/cha-add-ons.html

程序 1︰ 安裝套件
  1. 若要透過指令行從這兩個模式安裝套件,請使用 Zypper:

    root # zypper install -t pattern ha_sles ha_geo
  2. 或者,使用 YaST 在圖形介面中安裝:

    1. root 使用者身分啟動 YaST,然後選取軟體 › 軟體管理

    2. 按一下檢視 › 模式 ,然後啟用以下模式:

      • High Availability

      • Geo Clustering for High Availability

    3. 按一下接受開始安裝套件。

重要
重要:在所有參與方上安裝軟體套件

高可用性和 Geo 叢集所需的軟體套件不會自動複製到叢集節點。

  • 請在要加入 Geo 叢集的所有機器上安裝 SUSE Linux Enterprise Server 12 SP5 以及 High AvailabilityGeo Clustering for High Availability 模式。

  • 您不必在將要加入叢集的所有機器上手動安裝這些套件,而應使用 AutoYaST 複製現有節點。若需詳細資訊,請至 第 3.2 節 「使用 AutoYaST 進行批量安裝和部署」

    不過,必須手動在將要加入 Geo 叢集的所有機器上安裝 Geo 叢集延伸。目前尚不支援使用 AutoYaST 安裝 Geo Clustering for SUSE Linux Enterprise High Availability。

6 設定 Geo 叢集的第一個站點

使用 ha-cluster-geo-init 程序檔可將現有叢集變為 Geo 叢集的第一個站點。

程序 2︰ 使用 ha-cluster-geo-init 設定第一個站點 (amsterdam)
  1. 為每個叢集站點定義一個虛擬 IP,以便存取該站點。在此,我們假設使用 192.168.201.100192.168.202.100。您並不需要將虛擬 IP 設定為叢集資源。此工作將由開機程序檔完成。

  2. 至少定義一個票證的名稱,該票證將用於授予在叢集站點上執行特定資源的權限。使用一個有意義的名稱來反映將依賴於該票證的資源,例如 ticket-nfs。開機程序檔只需要票證名稱,您可以稍後再依第 10 節 「後續步驟」所述定義其餘的詳細資料 (資源的票證相依項)。

  3. 登入現有叢集的節點 (例如,叢集 amsterdam 的節點 alice)。

  4. 執行 ha-cluster-geo-init。例如,使用以下選項︰

    root # ha-cluster-geo-init \
      --clusters1 "amsterdam=192.168.201.100 berlin=192.168.202.100" \
      --tickets2 ticket-nfs \
      --arbitrator3 192.168.203.100

    1

    叢集站點的名稱 (定義於 /etc/corosync/corosync.conf 中) 和您想要為每個叢集站點使用的虛擬 IP 位址。在本例中,我們有兩個叢集站點 (amsterdamberlin),每個站點各有一個虛擬 IP 位址。

    2

    一或多個票證的名稱。

    3

    不屬於叢集的機器的主機名稱或 IP 位址。

該開機程序檔會建立投票間組態檔案,並在叢集站點間同步該檔案。它還會建立投票間所需的的基本叢集資源。執行程序 2步驟 4 將建立以下投票間組態和叢集資源︰

範例 1︰ ha-cluster-geo-init 建立的投票間組態
# The booth configuration file is "/etc/booth/booth.conf". You need to
# prepare the same booth configuration file on each arbitrator and
# each node in the cluster sites where the booth daemon can be launched.

# "transport" means which transport layer booth daemon will use.
# Currently only "UDP" is supported.
transport="UDP"
port="9929"

arbitrator="192.168.203.100"
site="192.168.201.100"
site="192.168.202.100"
authfile="/etc/booth/authkey"
ticket="ticket-nfs"
expire="600"
範例 2︰ ha-cluster-geo-init 建立的叢集資源
primitive1 booth-ip IPaddr2 \
  params rule #cluster-name eq amsterdam ip=192.168.201.100 \
  params rule #cluster-name eq berlin ip=192.168.202.100 \
primitive2 booth-site ocf:pacemaker:booth-site \
  meta resource-stickiness=INFINITY \
  params config=booth \
  op monitor interval=10s
group3 g-booth booth-ip booth-site \
meta target-role=Stopped4

1

每個叢集站點的虛擬 IP 位址。必須為投票間精靈提供該虛擬 IP 位址,因為其需要每個叢集站點上都有永久的 IP 位址。

2

投票間精靈的基本資源。它會與其餘叢集站點上的投票間精靈通訊。在站點的任何節點上均可啟動該精靈,但若要使資源位於同一個節點上 (如果可行),則需將資源粘性設定為 INFINITY

3

兩個基本資源的叢集資源群組。如此設定後,便可透過每個投票間精靈的 IP 位址來使用該精靈,而無需考慮執行精靈的節點為何。

4

該叢集資源群組預設不會啟動。驗證叢集資源的組態 (並新增完成設定所需的資源) 後,您需要啟動該資源群組。如需詳細資料,請參閱完成 Geo 叢集設定所需的步驟

7 新增另一個站點至 Geo 叢集

啟始化 Geo 叢集的第一個站點後,請依程序 3 所述使用 ha-cluster-geo-join 新增第二個叢集。該程序檔需要透過 SSH 存取已設定的叢集站點,並且會將目前的叢集新增至 Geo 叢集。

程序 3︰ 使用 ha-cluster-geo-join 新增第二個站點 (berlin)
  1. 登入要新增的叢集站點的某個節點 (例如,叢集 berlin 的節點 charlie)。

  2. 執行 ha-cluster-geo-join 指令。例如︰

    root # ha-cluster-geo-join \
      --cluster-node1 192.168.201.100\
      --clusters2 "amsterdam=192.168.201.100 berlin=192.168.202.100"

    1

    指定要從何處複製投票間組態。請使用已設定的 Geo 叢集站點中某節點的 IP 位址或主機名稱。也可以使用現有叢集站點的虛擬 IP 位址 (如本範例中所示)。或者,使用已為 Geo 叢集設定的仲裁方的 IP 位址或主機名稱。

    2

    叢集站點的名稱 (定義於 /etc/corosync/corosync.conf 中) 和您想要為每個叢集站點使用的虛擬 IP 位址。在本例中,我們有兩個叢集站點 (amsterdamberlin),每個站點各有一個虛擬 IP 位址。

ha-cluster-geo-join 程序檔會從 1 複製投票間組態,請參閱範例 1。此外,它還會建立投票間所需的叢集資源 (請參閱範例 2)。

8 新增仲裁方

使用 ha-cluster-geo-initha-cluster-geo-join 設定 Geo 叢集的所有站點後,請使用 ha-cluster-geo-init-arbitrator 設定仲裁方。

程序 4︰ 使用 ha-cluster-geo-init-arbitrator 設定仲裁方
  1. 登入要當成仲裁方使用的機器。

  2. 執行以下指令。例如︰

    root # ha-cluster-geo-init-arbitrator --cluster-node1 192.168.201.100

    1

    指定要從何處複製投票間組態。請使用已設定的 Geo 叢集站點中某節點的 IP 位址或主機名稱。或者,使用現有叢集站點的虛擬 IP 位址 (如本範例中所示)。

ha-cluster-geo-init-arbitrator 程序檔會從 1 複製投票間組態,如範例 1 所示。它還會在仲裁方上啟用並啟動投票間服務。因此,一旦叢集站點上也在執行投票間服務,仲裁方便會立即與這些叢集站點上的投票間例項通訊。

9 監控叢集站點

若要檢視您已在開機程序中建立的叢集站點及資源與票證,請使用 Hawk2。透過 Hawk2 Web 介面,您可以監控和管理多個 (不相關的) 叢集和 Geo 叢集。

先決條件
  • 要透過 Hawk5 儀表板監控的所有叢集都必須執行 SUSE Linux Enterprise High Availability Extension 12 SP2

  • 如果您之前未在每個叢集節點上以自己的證書 (或官方證書管理中心簽署的證書) 取代 Hawk2 的自行簽署證書,請執行以下操作︰在每個叢集的每個節點上至少登入 Hawk2 一次。驗證證書 (或在瀏覽器中新增一個例外以使警告不再顯示)。否則,Hawk2 將無法連接到叢集。

程序 5︰ 使用 Hawk2 儀表板
  1. 啟動網頁瀏覽器,並輸入第一個叢集站點 amsterdam 的虛擬 IP。

    https://192.168.201.100:7630/

    或者,使用 alicebob 的 IP 位址或主機名稱。如果您已使用開機程序檔設定兩個節點,則 hawk 服務在這兩個節點上應當都會執行。

  2. 登入 Hawk2 Web 介面。

  3. 在左側導覽列中選取儀表板

    Hawk2 會顯示目前叢集站點的資源和節點綜覽。此外,它還會顯示已為 Geo 叢集設定的所有票證。如需有關此檢視中所用圖示的資訊,請按一下圖例

    包含一個叢集站點 (amsterdam) 的 Hawk2 儀表板
    圖形 2︰ 包含一個叢集站點 (amsterdam) 的 Hawk2 儀表板
  4. 若要新增第二個叢集站點的儀表板,請按一下新增叢集

    1. 輸入用於在儀表板中識別該叢集的叢集名稱。在本例中為 berlin

    2. 輸入其中一個叢集節點 (在本例中為 charliedoro) 的完全合格的主機名稱。

    3. 按一下新增。Hawk2 會為新增的叢集站點顯示另一個索引標籤,其中會列出該叢集站點的節點和資源綜覽。

      包含兩個叢集站點的 Hawk2 儀表板
      圖形 3︰ 包含兩個叢集站點的 Hawk2 儀表板
  5. 若要檢視叢集站點的更多詳細資料或管理叢集站點,請切換到站點的索引標籤並按一下鎖鏈圖示。

    Hawk2 會在新的瀏覽器視窗或索引標籤中開啟此站點的狀態檢視。在此檢視中,您可以管理 Geo 叢集的這部分內容。

10 後續步驟

使用 Geo 叢集開機程序檔,您可以快速地設定可用於測試用途的基本 Geo 叢集。不過,若要將建立的 Geo 叢集移轉到正常運作的可用於生產環境的 Geo 叢集,則需執行更多步驟 (請參閱完成 Geo 叢集設定所需的步驟)。

完成 Geo 叢集設定所需的步驟
在叢集網站上啟動投票間服務

開機程序完成後,仲裁方投票間服務還不能與叢集站點上的投票間服務通訊,因為這些服務預設不會啟動。

每個叢集站點的投票間服務都由投票間資源群組 g-booth 管理 (請參閱範例 2 「ha-cluster-geo-init 建立的叢集資源」)。若要為每個網站啟動一個投票間服務例項,請在每個叢集網站上啟動相應的投票間資源群組。這樣可讓所有投票間例項互相通訊。

設定票證相依項和順序條件約束

若要使資源依賴於您已在 Geo 叢集開機程序中建立的票證,請設定條件約束。請為每個條件約束設定 loss-policy,它用於定義當從叢集站點撤銷票證時相應資源應發生的情況。

如需詳細資料,請參閱Chapter 6, Configuring Cluster Resources and Constraints

在開始時將票證授予給站點

在投票間可以管理 Geo 叢集中的特定票證前,您首先需要手動將該票證授予給站點。您可以使用投票間用戶端指令行工具或 Hawk2 授予票證。

如需詳細資料,請參閱Chapter 8, Managing Geo Clusters

開機程序檔會在兩個叢集站點上建立相同的投票間資源,並在所有站點 (包括仲裁方) 上建立相同的投票間組態檔案。如果您延伸 Geo 叢集設定 (以便移轉到生產環境),可能需要調整投票間組態並變更與投票間有關的叢集資源的組態。之後,您需要將變更同步到 Geo 叢集的其餘站點才能使其生效。

注意
注意:跨叢集站點同步變更

11 更多資訊

12 法律聲明

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

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

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

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

列印此頁面