叢集有時會偵測到其中一個節點行為異常,需要將其移除。這稱為「圍籬區隔」,通常透過 STONITH 資源來執行。
我們無法得知 SSH 對其他系統問題會做出什麼反應。因此,線上環境不支援外部 SSH/STONITH 代辦 (例如 stonith:external/ssh
)。如果您仍要使用此類代辦來進行測試,請安裝 libglue-devel
套件。
若要取得目前所有可用 STONITH 裝置 (從軟體角度) 的清單,請使用 crm ra list stonith
指令。如果您找不到偏好的代辦,請安裝 -devel
套件。如需 STONITH 裝置與資源代辦的詳細資訊,請參閱第 10 章 「圍籬區隔與 STONITH」。
到目前為止,尚沒有關於如何撰寫 STONITH 代辦的文件。若要撰寫新的 STONITH 代辦,請參閱 cluster-glue
套件原始碼中提供的範例。
所有 OCF 資源代辦 (RA) 皆存放於 /usr/lib/ocf/resource.d/
中;如需詳細資訊,請參閱第 6.3.2 節 「受支援的資源代辦類別」。每個資源代辦必須支援以下操作以便您對其進行控制︰
start
啟動或啟用資源
stop
停止或停用資源
status
傳回資源的狀態
monitor
與 status
指令類似,但它還會檢查未預期狀態
validate
驗證資源的組態
meta-data
以 XML 格式傳回資源代辦的相關資訊
建立 OCF RA 的一般程序如下所示︰
將 /usr/lib/ocf/resource.d/pacemaker/Dummy
檔案做為範本載入。
為每個新的資源代辦新建子目錄,以避免命名衝突。例如,若您擁有資源群組 kitchen
(內含資源 coffee_machine
),請將此資源新增至 /usr/lib/ocf/resource.d/kitchen/
目錄。若要存取此資源代辦,請執行 crm
指令︰
root #
crm
configure primitive coffee_1 ocf:coffee_machine:kitchen ...
執行不同的外圍程序函數,並以不同的名稱儲存檔案。
如需關於撰寫 OCF 資源代辦的更多詳細資料,請造訪 https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.asc。有關幾個概念的特殊資訊,請參閱第 1 章 「產品綜覽」。
根據 OCF 規格,對於動作必須返回的離開碼有著嚴格的定義。叢集會始終根據預期結果檢查傳回代碼。如果結果不符合預期值,則該操作將被視為失敗,並啟動復原動作。失敗復原有三種類型︰
復原類型 |
描述 |
叢集採取的動作 |
---|---|---|
軟式 |
發生暫時錯誤。 |
重新啟動資源或將其移到新的位置。 |
硬式 |
發生非暫時錯誤。該錯誤可能與目前節點有關。 |
將資源移到別處並阻止其在目前節點上被重試。 |
嚴重錯誤 |
發生對於所有叢集節點均相同的非暫時錯誤。這表示指定了錯誤的組態。 |
停止資源並阻止其在任何叢集節點上啟動。 |
下表列出了假設一個動作被視為已失敗時的不同 OCF 傳回代碼,另外還顯示了叢集在接收到相應錯誤碼時將啟始的復原類型。
OCF 傳回代碼 |
OCF 別名 |
描述 |
復原類型 |
---|---|---|---|
0 |
OCF_SUCCESS |
成功。指令成功完成。這是所有 start、stop、promote 和 demote 指令的預期結果。 |
軟式 |
1 |
OCF_ERR_GENERIC |
一般「發生問題」錯誤碼。 |
軟式 |
2 |
OCF_ERR_ARGS |
此機器上的資源組態無效 (例如,它參考節點上找不到的位置/工具)。 |
硬式 |
3 |
OCF_ERR_UNIMPLEMENTED |
未執行所需動作。 |
硬式 |
4 |
OCF_ERR_PERM |
資源代辦沒有足夠的權限來完成任務。 |
硬式 |
5 |
OCF_ERR_INSTALLED |
此機器上未安裝資源所需的工具。 |
硬式 |
6 |
OCF_ERR_CONFIGURED |
資源的組態無效 (例如,缺少必需的參數)。 |
嚴重錯誤 |
7 |
OCF_NOT_RUNNING |
資源未執行。叢集不會嘗試停止對任何動作返回此代碼的資源。
此 OCF 傳回代碼可能需要也可能不需要資源復原,具體取決於預期的資源狀態。如果不是預期情況,則進行 |
無 |
8 |
OCF_RUNNING_MASTER |
資源正以主要模式執行。 |
軟式 |
9 |
OCF_FAILED_MASTER |
資源在主要模式下執行,但已失敗。資源將被降級、停止,然後再次啟動 (還可能升級)。 |
軟式 |
其他 |
無 |
自訂錯誤碼。 |
軟式 |