您必須設定叢集軟體才能將每個叢集節點註冊為叢集的成員。做為此組態的一部份,您也可以設定圍籬區隔以及關閉其他節點 (STONITH) 資源以確保叢集一致性。
重要:此區段的程序使用 rcopenais 和 openais 指令,配合 SLES 11 SP4 才能使用。若是 SLES 12 SP2 和更新版本,請使用 systemctl pacemaker.service 指令。
例如,針對 /etc/rc.d/openais start 指令,請使用 systemctl start pacemaker.service 指令。
請為叢集組態使用下列程序:
針對此解決方案,您必須使用私人 IP 位址進行內部叢集通訊,並使用單點傳播來降低向網路管理員申請多路廣播位址的要求。您必須使用在代管共享儲存的相同 SLES 虛擬機器上設定的 iSCSI 目標,以做為用於圍籬區隔用途的電腦分裂偵測 (SBD) 裝置。
SBD 安裝程式
連接至 storage03 並啟動主控台工作階段。執行下列指示以建立任何所需大小的空白檔案:
dd if=/dev/zero of=/sbd count=<檔案大小> bs=<位元大小>
例如,執行下列指令可建立充滿從 /dev/zero 虛擬裝置複製之 0 的 1 MB 檔案:
dd if=/dev/zero of=/sbd count=1024 bs=1024
從指令行或圖形使用者介面執行 YaST:/sbin/yast
選取「網路服務」>「iSCSI 目標」。
按一下「目標」,然後選取現有的目標。
選取「編輯」。UI 將顯示可用 LUN (磁碟機) 的清單。
選取「新增」以加入新的 LUN。
將 LUN 數目設為 2。瀏覽「路徑」對話方塊並選取您建立的 /sbd 檔案。
保留其他選項的預設值,然後依序選取「確定」、「下一步」,再按一下「下一步」以選取預設驗證選項。
按一下「完成」以結束組態。視需要重新啟動服務。結束 YaST。
附註:以下步驟要求每個叢集節點都能解析所有其他叢集節點的主機名稱 (若無法解析,檔案同步服務 csync2 將失敗)。如果尚未設定或無法使用 DNS,請將每個主機的項目新增到列出每個 IP 位址和其主機名稱的 /etc/hosts 檔案 (如主機名稱指令所回報)。此外,請確保您並未將主機名稱指派至回送 IP 位址。
執行以下步驟以公開在 IP 位址 10.0.0.3 的伺服器上 SBD 服務的 iSCSI 目標 (storage03)。
節點組態
連接到叢集節點 (node01) 並開啟主控台視窗:
執行 YaST。
開啟「網路服務」>「iSCSI 啟動器」。
選取「連接的目標」,然後選取您在以上設定的 iSCSI 目標。
選取「登出」選項並登出該目標。
切換到「已探查目標」索引標籤,選取「目標」,並再次登入,以重新整理裝置的清單 (保留「自動」啟動選項並取消選取「無驗證」)。
選取「確定」以結束 iSCSI 啟動器 工具。
開啟「系統」>「分割器」,並將 SBD 裝置辨識別為 1MB IET-VIRTUAL-DISK。它將列示為 /dev/sdd 或類似名稱,請記下是哪個。
結束 YaST。
執行指令 ls -l /dev/disk/by-id/ 並記下連接到您在以上找到的裝置名稱的裝置 ID。
(條件式) 執行下列其中一個指令:
如果您正在使用 SLES 11 SP4:
sleha-init
如果您正在使用 SLES 12 SP1 或更新版本:
ha-cluster-init
當系統提示要繫結的網路位址時,請指定外部 NIC IP 位址 (172.16.0.1)。
接受預設多點廣播位址和連接埠。我們會在稍後置換。
輸入 y 以啟用 SBD,然後指定 /dev/disk/by-id/<裝置 id>,其中 <裝置 id> 是您在上述步驟中找到的 ID (您可以使用定位鍵自動完成路徑)。
(條件式) 在出現下列提示時,輸入 N:
Do you wish to configure an administration IP? [y/N]
若要設定管理 IP 位址,請在資源組態期間提供虛擬 IP 位址。
完成精靈並確定未回報任何錯誤。
啟動 YaST。
選取「高可用性」>「叢集」(或在某些系統上只要「叢集」)。
在左側方塊中,確定已選取「通訊通道」。
使用定位鍵移至組態的第一行,然後將「udp」選項變更成「udpu」(這會停用多點傳播並選取單點傳播)。
選取以「新增成員位址」,指定此節點 (172.16.0.1),然後重複並新增其他叢集節點:172.16.0.2。
選取「完成」以完成組態。
結束 YaST。
執行指令 /etc/rc.d/openais 重新啟動,以使用新的同步協定重新啟動叢集服務。
連接到每個額外的叢集節點 (node02) 並開啟主控台視窗:
執行 YaST。
開啟「網路服務」>「iSCSI 啟動器」。
選取「連接的目標」,然後選取您在以上設定的 iSCSI 目標。
選取「登出」選項並登出該目標。
切換到「已探查目標」索引標籤,選取「目標」,並再次登入,以重新整理裝置的清單 (保留「自動」啟動選項並取消選取「無驗證」)。
選取「確定」以結束 iSCSI 啟動器 工具。
(條件式) 執行下列其中一個指令:
如果您正在使用 SLES 11 SP4:
sleha-join
如果您正在使用 SLES 12 SP1 或更新版本:
ha-cluster-join
輸入第一個叢集節點的 IP 位址。
(條件式) 若叢集未正確啟動,請執行下列步驟:
執行指令 crm status,以確認節點是否已聯結。如果節點未聯結,請重新啟動叢集中的所有節點。
將 /etc/corosync/corosync.conf 檔案從 node01 手動複製到 node02,或針對 node01 執行 csync2 -x -v,或透過 YaST 針對 node02 手動設定叢集。
(條件式) 如果您在步驟 1 中執行的 csync2 -x -v 指令無法同步化所有檔案,請執行下列程序:
清除所有節點上 /var/lib/csync2 目錄中的 csync2 資料庫。
更新所有節點上的 csync2 資料庫以符合檔案系統,但不將任何項目標示為需要同步化至其他伺服器:
csync2 -cIr /
在主動節點上,執行下列作業:
找出主動節點與被動節點之間的所有差異,並將這些差異標示為要同步化:
csync2 -TUXI
重設資料庫,以強制主動節點覆寫任何衝突:
csync2 -fr /
啟動對所有其他節點的同步化:
csync2 -xr /
在所有節點上,確認所有檔案均已同步化:
csync2 -T
此指令只會列出未同步化的檔案。
針對 node02 執行下列指令:
SLES 11 SP4:
/etc/rc.d/openais start
SLES 12 SP1 或更新版本:
systemctl start pacemaker.service
(條件式) 若 xinetd 服務未正確新增新的 csync2 服務,則程序檔將不會正確執行。xinetd 為必要服務,以便其他節點往下同步叢集組態檔案到此節點。若您看到 csync2 run failed 等錯誤,就可能發生了此問題。
若要解決此問題,請執行 kill -HUP `cat /var/run/xinetd.init.pid 指令,然後重新執行 sleha-join 程序檔。
在每個叢集節點上執行 crm_mon 以驗證叢集正常執行。您也可以使用「hawk」這個 Web 主控台來驗證叢集。預設登入名稱為 hacluster,密碼則為 linux。
(條件式) 根據您的環境而定,請執行下列任務來修改額外參數:
為確保您雙節點叢集中的單一節點故障時不會意外停止整個叢集,請將全域叢集選項 no-quorum-policy 設定為 ignore:
crm configure property no-quorum-policy=ignore
附註:若您的叢集包含兩個以上的節點,請勿設定此選項。
為確保資源管理員允許資源原地執行並移動,請將全域叢集選項 default-resource-stickiness 設定為 1:
crm configure property default-resource-stickiness=1。