37.5 磁簇組態

您必須設定叢集軟體才能將每個叢集節點註冊為叢集的成員。做為此組態的一部份,您也可以設定圍籬區隔以及關閉其他節點 (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 安裝程式

  1. 連接至 storage03 並啟動主控台工作階段。執行下列指示以建立任何所需大小的空白檔案:

    dd if=/dev/zero of=/sbd count=<檔案大小> bs=<位元大小>

    例如,執行下列指令可建立充滿從 /dev/zero 虛擬裝置複製之 0 的 1 MB 檔案:

    dd if=/dev/zero of=/sbd count=1024 bs=1024
  2. 從指令行或圖形使用者介面執行 YaST:/sbin/yast

  3. 選取「網路服務」>「iSCSI 目標」。

  4. 按一下「目標」,然後選取現有的目標。

  5. 選取「編輯」。UI 將顯示可用 LUN (磁碟機) 的清單。

  6. 選取「新增」以加入新的 LUN。

  7. 將 LUN 數目設為 2。瀏覽「路徑」對話方塊並選取您建立的 /sbd 檔案。

  8. 保留其他選項的預設值,然後依序選取「確定」、「下一步」,再按一下「下一步」以選取預設驗證選項。

  9. 按一下「完成」以結束組態。視需要重新啟動服務。結束 YaST。

附註:以下步驟要求每個叢集節點都能解析所有其他叢集節點的主機名稱 (若無法解析,檔案同步服務 csync2 將失敗)。如果尚未設定或無法使用 DNS,請將每個主機的項目新增到列出每個 IP 位址和其主機名稱的 /etc/hosts 檔案 (如主機名稱指令所回報)。此外,請確保您並未將主機名稱指派至回送 IP 位址。

執行以下步驟以公開在 IP 位址 10.0.0.3 的伺服器上 SBD 服務的 iSCSI 目標 (storage03)。

節點組態

連接到叢集節點 (node01) 並開啟主控台視窗:

  1. 執行 YaST。

  2. 開啟「網路服務」>「iSCSI 啟動器」。

  3. 選取「連接的目標」,然後選取您在以上設定的 iSCSI 目標。

  4. 選取「登出」選項並登出該目標。

  5. 切換到「已探查目標」索引標籤,選取「目標」,並再次登入,以重新整理裝置的清單 (保留「自動」啟動選項並取消選取「無驗證」)。

  6. 選取「確定」以結束 iSCSI 啟動器 工具。

  7. 開啟「系統」>「分割器」,並將 SBD 裝置辨識別為 1MB IET-VIRTUAL-DISK。它將列示為 /dev/sdd 或類似名稱,請記下是哪個。

  8. 結束 YaST。

  9. 執行指令 ls -l /dev/disk/by-id/ 並記下連接到您在以上找到的裝置名稱的裝置 ID。

  10. (條件式) 執行下列其中一個指令:

    • 如果您正在使用 SLES 11 SP4:

      sleha-init

    • 如果您正在使用 SLES 12 SP1 或更新版本:

      ha-cluster-init

  11. 當系統提示要繫結的網路位址時,請指定外部 NIC IP 位址 (172.16.0.1)。

  12. 接受預設多點廣播位址和連接埠。我們會在稍後置換。

  13. 輸入 y 以啟用 SBD,然後指定 /dev/disk/by-id/<裝置 id>,其中 <裝置 id> 是您在上述步驟中找到的 ID (您可以使用定位鍵自動完成路徑)。

  14. (條件式) 在出現下列提示時,輸入 N:

    Do you wish to configure an administration IP? [y/N]

    若要設定管理 IP 位址,請在資源組態期間提供虛擬 IP 位址。

  15. 完成精靈並確定未回報任何錯誤。

  16. 啟動 YaST。

  17. 選取「高可用性」>「叢集」(或在某些系統上只要「叢集」)。

  18. 在左側方塊中,確定已選取「通訊通道」。

  19. 使用定位鍵移至組態的第一行,然後將「udp」選項變更成「udpu」(這會停用多點傳播並選取單點傳播)。

  20. 選取以「新增成員位址」,指定此節點 (172.16.0.1),然後重複並新增其他叢集節點:172.16.0.2。

  21. 選取「完成」以完成組態。

  22. 結束 YaST。

  23. 執行指令 /etc/rc.d/openais 重新啟動,以使用新的同步協定重新啟動叢集服務。

連接到每個額外的叢集節點 (node02) 並開啟主控台視窗:

  1. 執行 YaST。

  2. 開啟「網路服務」>「iSCSI 啟動器」。

  3. 選取「連接的目標」,然後選取您在以上設定的 iSCSI 目標。

  4. 選取「登出」選項並登出該目標。

  5. 切換到「已探查目標」索引標籤,選取「目標」,並再次登入,以重新整理裝置的清單 (保留「自動」啟動選項並取消選取「無驗證」)。

  6. 選取「確定」以結束 iSCSI 啟動器 工具。

  7. (條件式) 執行下列其中一個指令:

    • 如果您正在使用 SLES 11 SP4:

      sleha-join

    • 如果您正在使用 SLES 12 SP1 或更新版本:

      ha-cluster-join

  8. 輸入第一個叢集節點的 IP 位址。

(條件式) 若叢集未正確啟動,請執行下列步驟:

  1. 執行指令 crm status,以確認節點是否已聯結。如果節點未聯結,請重新啟動叢集中的所有節點。

  2. 將 /etc/corosync/corosync.conf 檔案從 node01 手動複製到 node02,或針對 node01 執行 csync2 -x -v,或透過 YaST 針對 node02 手動設定叢集。

  3. (條件式) 如果您在步驟 1 中執行的 csync2 -x -v 指令無法同步化所有檔案,請執行下列程序:

    1. 清除所有節點上 /var/lib/csync2 目錄中的 csync2 資料庫。

    2. 更新所有節點上的 csync2 資料庫以符合檔案系統,但不將任何項目標示為需要同步化至其他伺服器:

      csync2 -cIr /

    3. 在主動節點上,執行下列作業:

      1. 找出主動節點與被動節點之間的所有差異,並將這些差異標示為要同步化:

        csync2 -TUXI

      2. 重設資料庫,以強制主動節點覆寫任何衝突:

        csync2 -fr /

      3. 啟動對所有其他節點的同步化:

        csync2 -xr /

    4. 在所有節點上,確認所有檔案均已同步化:

      csync2 -T

      此指令只會列出未同步化的檔案。

  4. 針對 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 程序檔。

  5. 在每個叢集節點上執行 crm_mon 以驗證叢集正常執行。您也可以使用「hawk」這個 Web 主控台來驗證叢集。預設登入名稱為 hacluster,密碼則為 linux。

(條件式) 根據您的環境而定,請執行下列任務來修改額外參數:

  1. 為確保您雙節點叢集中的單一節點故障時不會意外停止整個叢集,請將全域叢集選項 no-quorum-policy 設定為 ignore:

    crm configure property no-quorum-policy=ignore

    附註:若您的叢集包含兩個以上的節點,請勿設定此選項。

  2. 為確保資源管理員允許資源原地執行並移動,請將全域叢集選項 default-resource-stickiness 設定為 1:

    crm configure property default-resource-stickiness=1。