透過本文件中介紹的程序,可完成對具有以下內容的雙節點叢集的最基本設定︰
兩個節點︰alice
(IP︰192.168.1.1
) 和 bob
(IP︰192.168.1.2
);兩者之間透過網路彼此連接。
一個浮動的虛擬 IP 位址 (192.168.2.1
)。用戶端可透過此位址連接到服務,而不管此服務在哪個實體節點上執行。
一個共享儲存裝置,用做 SBD 圍籬區隔機制。這樣可以避免電腦分裂的情況。
若主動主機發生故障 (主動/被動設定),資源會從一個節點容錯移轉到另一個節點。
在使用開機程序檔設定叢集後,我們會使用圖形 HA Web Konsole (Hawk) 來監控叢集。Hawk 是 SUSE® Linux Enterprise High Availability Extension 中隨附的叢集管理工具之一。為了對資源容錯移轉是否有效進行基本的測試,我們會將其中一個節點置於待命模式,然後檢查虛擬 IP 位址是否已移轉到另一個節點。
該雙節點叢集可用於測試的目的,也可以用做基本叢集組態,稍後再進行擴充。將叢集用於線上環境之前,請先根據自身要求對其進行修改。
本章介紹第 1 節 「使用案例」中所述案例的關鍵系統要求。如果您要將叢集調整為用於生產環境,請閱讀第 2 章 「系統要求與建議」中「系統要求和建議」的完整清單。
兩部已安裝軟體要求中指定的軟體的伺服器。
伺服器可以是裸機,也可以是虛擬機器。它們不需要使用相同的硬體 (記憶體、磁碟空間等等),但必須具有相同的架構。系統不支援跨平台叢集。
每個叢集節點至少有兩個 TCP/IP 通訊媒體。網路設備必須支援您希望用於叢集通訊的通信方式︰多點傳播或單路廣播。通訊媒體應支援 100 Mbit/s 或更高的資料速率。對於受支援的叢集設定,需要兩個或以上的備援通訊路徑。可以透過以下方式來實現︰
網路裝置結合 (優先)。
Corosync 中的另一個通訊通道。
基礎架構層 (例如監管程式) 中的網路容錯。
若要避免「電腦分裂」的情況,叢集需要有節點圍籬區隔機制。在出現電腦分裂的情況下,叢集節點會因硬體或軟體故障或者網路連接斷開而分成兩個或更多互不相識的群組。圍籬區隔機制會隔離存在問題的節點 (通常是透過重設節點或關閉節點的電源)。這也稱為 STONITH (「將其他節點爆頭」)。節點圍籬區隔機制可以是實體裝置 (電源開關),也可以是 SBD (依磁碟 STONITH) 等機制與監視程式相結合。使用 SBD 需要共享儲存。
在屬於叢集的所有節點上,都必須安裝以下軟體︰
SUSE® Linux Enterprise Server 12 SP5 (包括所有可用的線上更新)
SUSE Linux Enterprise High Availability Extension 12 SP5 (包括所有可用的線上更新)
叢集節點必須與叢集外的 NTP 伺服器同步。如需詳細資訊,請參閱 https://documentation.suse.com/sles-12/html/SLES-all/cha-netz-xntp.html。
若節點未同步,叢集可能無法正常運作。此外,記錄檔案和叢集報告在未同步的情況下很難進行分析。使用開機程序檔時,若尚未設定 NTP,系統會向您發出警告。
使用靜態 IP 位址。
在 /etc/hosts
檔案中列出了所有叢集節點,包括完全合格的主機名稱和簡短主機名稱。叢集的成員必須能夠籍由名稱找到彼此,這是一項基本要求。如果名稱不可用,內部叢集通訊將會失敗。
所有叢集節點必須能透過 SSH 互相存取。諸如 crm report
(用於疑難排解) 等工具以及 Hawk2 的 ,要求節點之間透過無密碼的 SSH 方式來存取,否則它們只能從目前節點收集資料。
若使用開機程序檔設定叢集,系統會自動建立並複製 SSH 金鑰。
來自 ha-cluster-bootstrap 套件的所有指令都會執行開機程序檔,而且所需的時間和手動介入極少。
使用 ha-cluster-init
可定義叢集通訊所需的基本參數。如此可讓您擁有一個正常運作的單節點叢集。
使用 ha-cluster-join
可將更多節點新增到叢集中。
使用 ha-cluster-remove
可從叢集中移除節點。
所有開機程序檔都會記錄至 /var/log/ha-cluster-bootstrap.log
。查看此檔案即可瞭解開機程序的詳細資料。開機過程中設定的任何選項都可在之後使用 YaST 叢集模組加以修改。如需詳細資料,請參閱第 3.1 節 「手動安裝」。
每個程序檔都有相應的 man 頁面,其中涵蓋功能範圍、程序檔選項,以及程序檔可建立和修改的檔案的綜覽。
開機程序檔 ha-cluster-init
會檢查並設定以下元件︰
如果 NTP 未設定為在開機時啟動,則會出現一則訊息。
它會建立用於在叢集節點之間進行無密碼登入的 SSH 金鑰。
它會設定 Csync2 在叢集中的所有節點之間複製組態檔案。
它會設定叢集通訊系統。
它會檢查是否存在監視程式,並詢問您是否將 SBD 設定為節點圍籬區隔系統。
它會詢問您是否設定虛擬 IP 位址以使用 Hawk2 進行叢集管理。
它會開啟叢集通訊所需的防火牆連接埠。
它會為叢集定義名稱,預設為 cluster編號
。叢集名稱是選擇性元件,對 Geo 叢集最有用。叢集名稱通常會反映位置,以便您更容易區分 Geo 叢集內部的站點。
High Availability
安裝模式中包含了使用 High Availability Extension 設定與管理叢集所需的套件。此模式只在 SUSE Linux Enterprise High Availability Extension 已做為 SUSE® Linux Enterprise Server 的延伸安裝後才能使用。
如需如何安裝延伸的相關資訊,請參閱《SUSE Linux Enterprise 12 SP5 部署指南》︰https://documentation.suse.com/sles-12/html/SLES-all/cha-add-ons.html。
如果尚未安裝該模式,請使用 zypper install -t pattern ha_sles
指令安裝。或者,也可以使用 YaST 安裝該模式。請執行下列步驟︰
啟動 YaST,然後選取
› 。按一下
索引標籤並啟用模式清單中的 模式。按一下
開始安裝套件。在所有將成為叢集成員的機器上安裝 High Availability 模式。
若想自動安裝 SUSE Linux Enterprise Server 12 SP5 與 SUSE Linux Enterprise High Availability Extension 12 SP5,請使用 AutoYaST 複製現有節點。如需詳細資訊,請參閱第 3.2 節 「使用 AutoYaST 進行批量安裝和部署」。
在 SUSE Customer Center 上註冊機器。若需詳細資訊,請至 https://documentation.suse.com/sles-12/html/SLES-all/cha-update-offline.html#sec-update-registersystem。
若您擁有 SAN (儲存區域網路) 等共享儲存,可以將 SBD 設定為節點圍籬區隔機制,從而避免電腦分裂的情況。SBD 使用監視程式支援與外部/sbd
STONITH 資源代辦。
使用 ha-cluster-init
設定第一個節點時,可以決定是否使用 SBD。如果要使用,則需輸入共享儲存裝置的路徑。依預設,ha-cluster-init
會在要用於 SBD 的裝置上自動建立一個小分割區。
若要使用 SBD,必須符合以下要求︰
針對叢集中的所有節點,共享儲存裝置的路徑必須永久且一致。請使用穩定的裝置名稱,例如 /dev/disk/by-id/dm-uuid-part1-mpath-abcedf12345
。
SBD 裝置不得使用基於主機的 RAID、cLVM2,也不能位於 DRBD* 例項中。
有關如何設定共享儲存的詳細資料,請參閱《SUSE Linux Enterprise Server 12 SP5 儲存管理指南》︰https://documentation.suse.com/sles-12/html/SLES-all/stor-admin.html。
依預設,SUSE Linux Enterprise 伺服器的核心中會啟用監視程式支援︰本產品隨附了多個核心模組,可提供特定於硬體的監視程式驅動程式。High Availability Extension 使用 SBD 精靈做為「饋送」監視程式的軟體元件。
以下程序使用 softdog
監視程式。
Softdog 驅動程式假設至少有一個 CPU 仍然在執行。如果所有 CPU 均已堵塞,則 softdog 驅動程式中應該將系統重新開機的代碼永遠都不會執行。相反地,即使所有 CPU 均已堵塞,硬體監視程式也仍然會繼續運作。
在生產環境中使用叢集之前,強烈建議您以最適合您硬體的相應硬體模組來取代 softdog
模組。
不過,如果沒有與您的硬體相符的監視程式,則可以將 softdog
當成核心監視程式模組使用。
如第 5.1 節 「SBD 的要求」中所述建立永久的共享儲存。
啟用 softdog 監視程式︰
root #
echo
softdog > /etc/modules-load.d/watchdog.confroot #
systemctl
restart systemd-modules-load
測試 softdog 模組是否已正確載入︰
root #
lsmod
| egrep "(wd|dog)" softdog 16384 1
在 bob
上啟始化 SBD 分割區︰
root #
sbd
-d /dev/SBDDEVICE create
啟動 SBD 以在 SBD 裝置上進行監聽︰
root #
sbd
-d /dev/SBDDEVICE watch
在 alice
上,傳送測試訊息︰
root #
sbd
-d /dev/SBDDEVICE message bob test
在 bob
上,使用 systemctl
檢查狀態,您應該會看見收到的訊息︰
root #
systemctl
status sbd [...] info: Received command test from alice on disk SBDDEVICE
在 bob
上,使用以下指令停止監視 SBD 裝置︰
root #
systemctl
stop sbd
強烈建議您測試 SBD 圍籬區隔機制在出現電腦分裂情況時是否正常運作。此類測試可透過阻擋 Corosync 叢集通訊來完成。
使用 ha-cluster-init
程序檔設定第一個節點。此操作所需的時間和手動介入都極少。
ha-cluster-init
設定第一個節點 (alice
) #
以 root
身分登入要做為叢集節點的實體或虛擬機器。
執行如下指令啟動開機程序檔︰
root #
ha-cluster-init
--name CLUSTERNAME
以一個有意義的名稱 (例如叢集的地理位置 amsterdam
) 取代 CLUSTERNAME 預留位置。如果您要在稍後建立 Geo 叢集,這樣做特別有用,因為它使站點的識別變得簡單。如果執行該指令時未使用 --name
選項,則預設名稱為 hacluster
。
如果您需要使用單點傳播而不是多路廣播 (預設方式) 來進行叢集通訊,請使用選項 -u
。安裝後,在檔案 /etc/corosync/corosync.conf
中找到值 udpu
。如果 ha-cluster-init
偵測到節點正在 Amazon Web Services (AWS) 上執行,該程序檔將自動使用單點傳播做為叢集的預設通訊方式。
這些程序檔會檢查是否存在 NTP 組態與硬體監視程式服務。這會產生 SSH 存取與 Csync2 同步所需的公用和私密 SSH 金鑰,並啟動相應的服務。
設定叢集通訊層 (Corosync)︰
輸入要繫結到的網路位址。程序檔預設將建議 eth0
網路位址。您也可以輸入不同的網路位址,如 bond0
位址。
輸入多路廣播位址。程序檔會建議一個隨機位址,您可將其做為預設值。當然,您特定的網路需要支援此多路廣播位址。
輸入多路廣播連接埠。程序檔會建議預設值 5405
。
最後,程序檔將啟動 Pacemaker 服務使單節點叢集上線,並啟用 Hawk2。Hawk2 要使用的 URL 會顯示在螢幕上。
將 SBD 設定為節點圍籬區隔機制︰
輸入 y
確認您要使用 SBD。
輸入要用於 SBD 的區塊裝置分割區的永久路徑 (請參閱第 5 節 「將 SBD 用做圍籬區隔機制」)。該路徑必須在叢集的所有節點間保持一致。
設定使用 Hawk2 進行叢集管理所需的虛擬 IP 位址。(稍後,我們將使用此虛擬 IP 資源測試容錯移轉是否成功)。
輸入 y
確認您要設定虛擬 IP 位址。
為 Hawk2 的管理 IP 輸入想要的且未使用的 IP 位址︰192.168.2.1
您可以連接到此虛擬 IP 位址,而無需使用 Hawk2 登入個別叢集節點。
您現在便擁有了一個正常運作的單節點叢集。若要檢視其狀態,請執行以下步驟︰
在任一機器上,啟動網頁瀏覽器並確定已啟用 JavaScript 和 Cookie。
輸入任一執行 Hawk Web 服務之叢集節點的 IP 位址或主機名稱做為 URL。或者,輸入您在程序 2 「使用 ha-cluster-init
設定第一個節點 (alice
)」的步驟 6中設定的虛擬 IP 位址的位址。
https://HAWKSERVER:7630/
當您首次嘗試存取該 URL 時,如果系統顯示證書警告,則表示使用了自行簽署的證書。依預設,自行簽署的證書不被視為可信證書。
請咨詢您的叢集操作人員取得證書詳細資料,以驗證該證書。
若仍要繼續,您可以在瀏覽器中新增一個例外以略過此警告。
在 Hawk2 登入畫面中,輸入在開機程序中建立的使用者的 hacluster
,密碼為 linux
)。
請立即以安全的密碼取代預設密碼︰
root #
passwd
hacluster
按一下
。登入後,Hawk2 Web 介面依預設會顯示「狀態」畫面,其中包括目前叢集狀態的概覽︰
若您已設定並執行單節點叢集,請按程序 4中所述,使用 ha-cluster-join
開機程序檔新增第二個叢集節點。該程序檔只需要存取一個現存叢集節點,然後便會自動在目前機器上完成基本設定。如需詳細資料,請參閱 ha-cluster-init
man 頁面。
開機程序檔負責變更特定於雙節點叢集的組態,例如 SBD 和 Corosync。
ha-cluster-join
新增第二個節點 (bob
) #
以 root
身分登入要加入叢集的實體或虛擬機器。
執行如下指令啟動開機程序檔︰
root #
ha-cluster-join
如果 NTP 未設定為在開機時啟動,則會出現一則訊息。該程序檔還會檢查有無硬體監視程式裝置 (如果您要設定 SBD,這個裝置將非常重要),如果不存在此類裝置,將會向您發出警告。
如果您決定仍要繼續,系統將提示您輸入現存節點的 IP 位址。輸入第一個節點 (alice
) 的 IP 位址 192.168.1.1
)。
如果之前未在這兩台機器之間設定無密碼 SSH 存取,此時系統還會提示您輸入現存節點的 root
密碼。
登入指定節點後,程序檔將會複製 Corosync 組態,設定 SSH 與 Csync2,並使目前機器以新叢集節點的身分上線。除此之外,它還會啟動 Hawk2 所需的服務。
在 Hawk2 中檢查叢集狀態。在圖形 2 「雙節點叢集的狀態」)。
› 下,您應該會看見兩個狀態為綠色的節點 (請參閱
程序 5 「測試資源容錯移轉」是一項簡單的測試,可檢查當目前執行資源的節點被設定為待命
時,叢集是否將虛擬 IP 位址移動到另一個節點。
不過,實際測試會涉及特定的使用案例與情況,包括測試圍籬區隔機制以避免電腦分裂的情況。若尚未正確設定圍籬區隔機制,叢集將無法正常運作。
請先根據您的使用案例對叢集進行全面測試,然後再將其用於線上環境。
開啟終端機並 ping 192.168.2.1
(即您的虛擬 IP 位址)。
root #
ping
192.168.2.1
按程序 3 「登入 Hawk2 Web 介面」中所述登入您的叢集。
在 Hawk2 admin_addr
) 正在哪個節點上執行。假設資源正在 alice
上執行。
將 alice
置於 模式 (請參閱圖形 3 「處於待命模式的節點 alice
」)。
alice
#
按一下admin_addr
已移轉至 bob
。
移轉時,您應該會看見不斷向虛擬 IP 位址進行 ping 的流程。這表示叢集設定與浮動 IP 正常運作。使用 C
可取消 Ctrl–ping 指令。
如需此產品的更多文件,可造訪 https://documentation.suse.com/sle-ha-12。其中包括完整的《SUSE Linux Enterprise High Availability Extension 管理指南》。請參閱該指南,瞭解更多組態與管理任務。
版權所有 © 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 及其附屬公司、作者或譯者都不需對任何錯誤或造成的結果負責。