8.3 STONITH 組態

若要設定圍籬區隔,您需要設定一或多個 STONITH 資源 — stonithd 精靈不需要任何組態設定。所有組態皆儲存在 CIB 中。STONITH 資源即類別為 stonith 的資源 (請參閱節 17.1, 受支援的資源代辦類別)。STONITH 資源是 STONITH 外掛程式在 CIB 中的表示。除圍籬區隔作業之外,還可對 STONITH 資源執行啟動、停止和監控作業,就如同任何其他資源一樣。在這種情況下,啟動和停止 STONITH 資源就表示啟用和停用 STONITH。因此,啟動和停止只是管理作業,不能轉換為圍籬區隔設備本身的任何作業。不過,監控會轉換為設備狀態。

可以對 STONITH 資源進行設定,就如同任何其他資源一樣。如需有關設定資源的詳細資訊,請參閱節 4.3, 建立 STONITH 資源節 5.4, 建立 STONITH 資源

參數 (屬性) 清單取決於各 STONITH 類型。若要檢視特定設備的參數清單,請使用 stonith 指令︰

stonith -t stonith-device-type -n

例如,若要檢視 ibmhmc 設備類型的參數,請輸入以下指令:

stonith -t ibmhmc -n

若要取得設備的簡短說明文字,請使用 -h 選項:

stonith -t stonith-device-type -h

8.3.1 範例 STONITH 資源組態

下面提供了使用 crm 指令行工具的語法撰寫的一些範例組態。若要套用它們態,請將範例放入文字檔中 (例如,sample.txt),然後執行以下指令:

crm < sample.txt

如需有關使用 crm 指令行工具設定資源的詳細資訊,請參閱節 5.0, 從指令行設定叢集資源

警告: 測試組態

下面提供的一些範例僅用於演示和測試用途。切勿在現實叢集案例中使用任何測試組態範例。

範例 8-1 測試組態

configure
primitive st-null stonith:null \
params hostlist="node1 node2"
clone fencing st-null
commit
   

範例 8-2 測試組態

代用組態:

configure
 primitive st-node1 stonith:null \
 params hostlist="node1"
 primitive st-node2 stonith:null \
 params hostlist="node2"
 location l-st-node1 st-node1 -inf: node1
 location l-st-node2 st-node2 -inf: node2
 commit

如果關注叢集軟體,則此組態範例極其適用。與現實組態的唯一區別在於不發生任何圍籬區隔作業。

範例 8-3 測試組態

下面的 external/ssh 組態是更貼近實際但仍然僅用於測試的範例:

configure
 primitive st-ssh stonith:external/ssh \
 params hostlist="node1 node2"
 clone fencing st-ssh
 commit

此組態也可重設節點。該組態與第一個組態非常相似,它具備空 STONITH 設備的功能。在此範例中,將使用複製。它們是 CRM/Pacemaker 功能。基本上,複製是一種捷徑:不需要定義 n 個名稱不同的相同資源,只需一個複製的資源就已足夠。如果 STONITH 設備可從所有節點存取,顯然最常用的複製為使用 STONITH 資源。

範例 8-4 IBM RSA 無人職守設備組態

實際設備組態並沒有明顯差異,雖然某些設備可能需要更多屬性。可按如下所示設定 IBM RSA 無人職守設備:

configure
primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \
params nodename=node1 ipaddr=192.168.0.101 \
userid=USERID passwd=PASSW0RD
primitive st-ibmrsa-2 stonith:external/ibmrsa-telnet \
params nodename=node2 ipaddr=192.168.0.102 \
userid=USERID passwd=PASSW0RD
location l-st-node1 st-ibmrsa-1 -inf: node1
location l-st-node2 st-ibmrsa-2 -inf: node2
commit

在此範例中,由於下列原因,使用了位置限制:STONITH 作業失敗的可能性始終存在。因此,在做為執行者的節點上的 STONITH 作業也不可靠。如果重設節點,它就不能傳送關於圍籬區隔作業結果的通知。想傳送通知的唯一方法是,假設作業即將成功,然後提前傳送通知。但如果作業失敗,就會陷入麻煩。因此,一般來說 stonithd 拒絕停止其主機。

範例 8-5 UPS 圍籬區隔設備組態

UPS 類型圍籬區隔設備的組態類似於上述範例,詳細資料留給讀者做為練習之用。所有 UPS 設備皆使用相同技術進行圍籬區隔,但存取設備本身的方法各不相同。舊式 UPS 設備 (曾視為專業 UPS 設備) 通常只有一個序列埠,一般使用專用序列纜線以 1200 鮑率進行連接。許多新型 UPS 設備仍然有一個序列埠,但它們通常還具有一個 USB 介面或一個乙太網路介面。可以使用的連線類型取決於外掛程式所支援的類型。

例如,使用 stonith -t stonith 設備類型 -n 指令比較 apcmasterapcsmart 設備:

stonith -t apcmaster -h

傳回下列資訊:

STONITH Device: apcmaster - APC MasterSwitch (via telnet)
NOTE: The APC MasterSwitch accepts only one (telnet)
connection/session a time. When one session is active,
subsequent attempts to connect to the MasterSwitch will fail.
For more information see http://www.apc.com/
List of valid parameter names for apcmaster STONITH device:
ipaddr
login
 password

使用

stonith -t apcsmart -h

您將取得下列輸出:

STONITH Device: apcsmart - APC Smart UPS
(via serial port - NOT USB!). 
Works with higher-end APC UPSes, like
Back-UPS Pro, Smart-UPS, Matrix-UPS, etc.
(Smart-UPS may have to be >= Smart-UPS 700?).
See http://www.networkupstools.org/protocols/apcsmart.html
for protocol compatibility details.
For more information see http://www.apc.com/
List of valid parameter names for apcsmart STONITH device:
ttydev
hostlist

第一個外掛程式支援具有網路埠和 Telnet 通訊協定的 APC UPS。第二個外掛程式透過眾多 APC UPS 產品線皆支援的序列線使用 APC SMART 通訊協定。

8.3.2 限制與複製

節 8.3.1, 範例 STONITH 資源組態 中,您瞭解到設定 STONITH 資源有幾種方法:使用限制或複製,或同時使用兩者。選擇使用何種建構進行組態設定取決於幾項因素 (圍籬區隔設備的性質、設備管理的主機數目、叢集節點數目),最後 (但並非最不重要) 還還取決於個人優先設定。

簡言之:如果可以放心地將複製與組態搭配使用,且如果它們確實可以減少組態設定工作,則使用複製的 STONITH 資源。