套用至 SUSE Linux Enterprise High Availability Extension 12 SP5

9 新增或修改資源代辦

摘要

需由叢集管理的所有任務都必須當成資源使用。其中,有兩個主要群組需要注意,即資源代辦和 STONITH 代辦。對於這兩種類別,您都可以新增自己的代辦,以延伸叢集的功能來滿足自己的需要。

9.1 STONITH 代辦

叢集有時會偵測到其中一個節點行為異常,需要將其移除。這稱為「圍籬區隔」,通常透過 STONITH 資源來執行。

警告
警告:不支援外部 SSH/STONITH

我們無法得知 SSH 對其他系統問題會做出什麼反應。因此,線上環境不支援外部 SSH/STONITH 代辦 (例如 stonith:external/ssh)。如果您仍要使用此類代辦來進行測試,請安裝 libglue-devel 套件。

若要取得目前所有可用 STONITH 裝置 (從軟體角度) 的清單,請使用 crm ra list stonith 指令。如果您找不到偏好的代辦,請安裝 -devel 套件。如需 STONITH 裝置與資源代辦的詳細資訊,請參閱第 10 章 「圍籬區隔與 STONITH

到目前為止,尚沒有關於如何撰寫 STONITH 代辦的文件。若要撰寫新的 STONITH 代辦,請參閱 cluster-glue 套件原始碼中提供的範例。

9.2 撰寫 OCF 資源代辦

所有 OCF 資源代辦 (RA) 皆存放於 /usr/lib/ocf/resource.d/ 中;如需詳細資訊,請參閱第 6.3.2 節 「受支援的資源代辦類別」。每個資源代辦必須支援以下操作以便您對其進行控制︰

start

啟動或啟用資源

stop

停止或停用資源

status

傳回資源的狀態

monitor

status 指令類似,但它還會檢查未預期狀態

validate

驗證資源的組態

meta-data

以 XML 格式傳回資源代辦的相關資訊

建立 OCF RA 的一般程序如下所示︰

  1. /usr/lib/ocf/resource.d/pacemaker/Dummy 檔案做為範本載入。

  2. 為每個新的資源代辦新建子目錄,以避免命名衝突。例如,若您擁有資源群組 kitchen (內含資源 coffee_machine),請將此資源新增至 /usr/lib/ocf/resource.d/kitchen/ 目錄。若要存取此資源代辦,請執行 crm 指令︰

    root # crm configure primitive coffee_1 ocf:coffee_machine:kitchen ...
  3. 執行不同的外圍程序函數,並以不同的名稱儲存檔案。

如需關於撰寫 OCF 資源代辦的更多詳細資料,請造訪 https://github.com/ClusterLabs/resource-agents/blob/master/doc/dev-guides/ra-dev-guide.asc。有關幾個概念的特殊資訊,請參閱第 1 章 「產品綜覽

9.3 OCF 傳回代碼與失敗復原

根據 OCF 規格,對於動作必須返回的離開碼有著嚴格的定義。叢集會始終根據預期結果檢查傳回代碼。如果結果不符合預期值,則該操作將被視為失敗,並啟動復原動作。失敗復原有三種類型︰

表格 9.1︰ 失敗復原類型

復原類型

描述

叢集採取的動作

軟式

發生暫時錯誤。

重新啟動資源或將其移到新的位置。

硬式

發生非暫時錯誤。該錯誤可能與目前節點有關。

將資源移到別處並阻止其在目前節點上被重試。

嚴重錯誤

發生對於所有叢集節點均相同的非暫時錯誤。這表示指定了錯誤的組態。

停止資源並阻止其在任何叢集節點上啟動。

下表列出了假設一個動作被視為已失敗時的不同 OCF 傳回代碼,另外還顯示了叢集在接收到相應錯誤碼時將啟始的復原類型。

表格 9.2︰ OCF 傳回代碼

OCF 傳回代碼

OCF 別名

描述

復原類型

0

OCF_SUCCESS

成功。指令成功完成。這是所有 start、stop、promote 和 demote 指令的預期結果。

軟式

1

OCF_ERR_­GENERIC

一般發生問題錯誤碼。

軟式

2

OCF_ERR_ARGS

此機器上的資源組態無效 (例如,它參考節點上找不到的位置/工具)。

硬式

3

OCF_­ERR_­UN­IMPLEMENTED

未執行所需動作。

硬式

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

資源在主要模式下執行,但已失敗。資源將被降級、停止,然後再次啟動 (還可能升級)。

軟式

其他

自訂錯誤碼。

軟式

列印此頁面