如要確定叢集軟體已經正確地設定好了,請使用位於 /usr/sbin 目錄中的以下工具來做檢查:
測試共用分割區與確定它們是可被存取的。
以 -v 選項執行 /usr/sbin/shutil 工具程式來測試共用分割區的可存取性, 請參考 第 2.11.1 節 以取得更多資訊。
測試電源開關的操作。
假如電源開關被使用在叢集硬體配置中,請在每一部成員執行 clufence 指令以確保 它可以遠端地 power-cycle 其他的成員。 當叢集軟體執行中,請勿執行這個指令,請參考 第 2.11.2 節 以取得更多資訊。
請確定所有的成員都執行相同版本的軟體。
請在每一部成員上執行 rpm -q clumanager 與 rpm -q redhat-config-cluster 指令來顯示出已安裝之叢集軟體 RPMs 的版本資訊。
下列的部份以更詳盡的方式解釋叢集的工具程式。
共用分割區必須參照所有成員的相同實體裝置,請以 -v 選項來執行 /usr/sbin/shutil 工具程式以測試共用分割區,以及檢驗它們是否能被存取。
假如指令成功的話,請在所有成員上執行 /usr/sbin/shutil -p /cluster/header 指令以顯示出共用分割區之表頭資料結構的一個摘要。 假如成員的輸出不同的話,表示共用分割區並沒有 指向所有成員的相同裝置,請檢查以確定 raw 裝置確實存在,而且在 /etc/sysconfig/rawdevices 檔案中已經正確地指定。 請參考 第 1.4.4.3 節 以取得更多資訊。
以下的範例顯示出在叢集成員 clu1.example.com 與 clu2.example.com 上使用 /usr/sbin/shutil -p /cluster/header 指令所輸出參考相同實體裝置的共用分割區。
/cluster/header is 140 bytes long SharedStateHeader { ss_magic = 0x39119fcd ss_timestamp = 0x000000003ecbc215 (14:14:45 May 21 2003) ss_updateHost = clu1.example.com |
在所有叢集成員上執行 /usr/sbin/shutil -p /cluster/header 指令的輸出,所有的欄位應該都是相同的。 假如所有成員的輸出並不是都相同,請執行下列指令:
請檢查每一成員上的 /etc/sysconfig/rawdevices 檔案以確定用於主要與備援 共用分割區的 raw 字元裝置與區塊裝置已經正確地指定了。 假如它們是不同的話,請編輯這個檔案並 且修正任何的錯誤。 然後再重新執行 叢集設定工具,請參考 第 2.5 節 以取得更多資訊。
請確定您已經在每一成員上為共用分割區建立 raw 裝置,請參考 第 1.4.4.3 節 以取得更多資訊。
如要找出每一成員的匯流排設定,請執行 dmesg |less 以檢查系統的啟動訊息, 仔細查看當系統偵測 SCSI 子系統的地方,請檢驗所有成員都可以辨識相同的共用儲存裝置,並且指定 它們相同的名稱。
請確定成員並沒有試著掛載共用分割區上的一個檔案系統,舉例來說,請確定實際的裝置(如 /dev/sdb1) 並未含括在 /etc/fstab 檔案中。
在執行完這些工作後,請以 -p 選項重新執行 /usr/sbin/shutil 工具程式。
假如叢集硬體配置中使用了網路連線或序列連線的電源開關,請安裝叢集軟體並且執行 clufence 指令來測試電源開關。 在每一部成員上執行這個指令以確定它可以遠端的 power-cycle 其他成員。 假如測試成功的話,就表示可以啟動叢集了。
clufence 指令只能在叢集軟體不運行的狀態才能正確地測試一部電源開關,這是由於 序列連線之電源開關的一個事實,同一時間只能有一個程式存取連接電源開關到成員的序列埠。 當執行 clufence 指令時,將會檢查叢集的狀態。 假如叢集軟體正在執行中,這個指令將會離開, 並將發出一個訊息警告停止叢集軟體。
clufence 的命令列選項如下:
-d — 開啟除錯模式
-f — 保護(關機)成員
-u — 解除保護(開機)成員
-r — 重新啟動(power cycle)成員
-s — 檢查控制成員之所有開關的狀態
當測試電源開關時,第一步驟便是確定每一部叢集成員都可以成功地與所連接的電源開關進行通訊,以下 clufence 指令的輸出顯示叢集成員可以與它的電源開關進行通訊:
[27734] info: STONITH: rps10 at /dev/ttyS0, port 0 controls clumember1.example.com [27734] info: STONITH: rps10 at /dev/ttyS0, port 1 controls clumember2.example.com |
如果在 clufence 的輸出發生錯誤的狀況,請檢查下列的事項:
對於序列連線的電源開關:
請檢查遠端電源開關連線序列埠(如 /dev/ttyS0)的裝置特殊檔案已經正確地指定在 叢集設定檔案中;在 叢集設定工具 顯示 電源控制器 對話窗來檢查序列埠的數值。 假如必要的話,使用例如 minicom 的終端機模擬套件 來測試叢集成員是否可以存取序列埠。
請確定一個非叢集的程式(如 getty 程式)並沒有使用遠端電源開關連線所使用的 序列埠,您可以使用 lsof 指令來執行這項工作。
檢查連接到遠端電源開關的纜線連線是正確的,請檢驗是否使用正確的纜線類型(如一部 RPS-10 的電源開關需要一條 null 的數據機纜線),而且所有的纜線連線都安全地固定了。
檢查電源開關上的任何實體的切換開關或旋轉開關已經設定正確。
對於網路為基礎的電源開關:
檢查連接到網路為基礎之電源開關的網路連線是可運作的,大部分的開關都有一個連線燈號以用來表示連線狀況。
您還可以 ping 網路連線的電源開關,假如不行的話,表示這個電源開關的網路參數設定也許不正確。
請檢查在叢集設定檔案中已經指定了正確的密碼與登入名稱(取決於電源開關的類型),這是藉由執行 叢集設定工具 並且檢視 電源控制器 對話窗中所指定的內容。 一個很好用的診斷方法便是使用如叢集設定檔案中所指定的相同參數來檢驗 Telnet 存取網路連線的電源開關。
在成功地檢驗與開關的通訊後,請試著進行 power cycle 其他成員,在執行這個動作之前,建議您先確定 其他叢集成員沒有主動地執行任何重要的功能(例如伺服叢集服務給現行的用戶端)。 執行 clufence -f clumember2.example.com 指令將會於 成功地進行關機與 fencing 操作時產生以下的輸出(也就是說該系統在 unfence 之前沒有從電源開關接收到任何的電源):
[7397] info: STONITH: rps10 at /dev/ttyS0, port 0 controls clumember1.example.com [7397] info: STONITH: rps10 at /dev/ttyS0, port 1 controls clumember2.example.com [7397] notice: STONITH: clumember2.example.com has been fenced! |