跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise High Availability Extension 文件 / 管理指南 / 組態和管理 / 設定叢集資源
適用範圍 SUSE Linux Enterprise High Availability Extension 15 SP5

6 設定叢集資源

做為叢集管理員,您需要為您叢集中的伺服器上執行的所有資源或應用程式建立叢集資源。叢集資源可包括網站、電子郵件伺服器、資料庫、檔案系統、虛擬機器,以及您希望使用者隨時都可以存取的任何其他伺服器型應用程式或服務。

6.1 資源類型

以下是可建立的資源類型:

基本資源

基本資源,是最基本的資源類型。

群組

群組包含一組需放置在一起的資源,這些資源按順序啟動並以相反順序停止。

複製品

複製品是可在多個主機上處於使用中狀態的資源。任何資源都可複製,只要相應的資源代理程式支援複製功能。

可升級複製品 (也稱為多狀態資源) 是一種可以升級的特殊類型複製品資源。

6.2 支援的資源代理程式類別

對於每個新增的叢集資源,都需要定義資源代理程式所遵循的標準。資源代理程式會提取它們所提供的服務並向叢集提供準確的狀態,這樣叢集便可不理會其所管理的資源。當接收到啟動、停止或監控指令時,叢集會依賴資源代理程式來做出恰當的反應。

通常,資源代理程式採用的是外圍程序檔的形式。High Availability Extension 支援以下類別的資源代理程式:

Open Cluster Framework (OCF) 資源代理程式

OCF RA 代理程式最適合與高可用性搭配使用,特別是在您需要可升級複製品資源或特殊監控功能的情況下。這些代理程式通常位於 /usr/lib/ocf/resource.d/provider/ 中。它們的功能類似於 LSB 程序檔。但其組態永遠都是透過環境變數進行,這樣方便接受和處理參數。OCF 規格對於動作必須傳回的離開碼有嚴格的定義。請參閱第 10.3 節 「OCF 傳回代碼和故障復原」。叢集完全遵循這些規格。

所有 OCF 資源代理程式都必須至少含有 statusstartmonitorstopmeta-data 動作。meta-data 動作可取回有關如何設定代理程式的資訊。例如,如果您要詳細瞭解提供者 IPaddrheartbeat 代理程式,可以使用以下指令:

OCF_ROOT=/usr/lib/ocf /usr/lib/ocf/resource.d/heartbeat/IPaddr meta-data

輸出的是 XML 格式的資訊,分為多個區段,包括代理程式的一般描述、可用參數和可用動作。

您也可以使用 crmsh 來檢視關於 OCF 資源代理程式的資訊。如需詳細資料,請參閱第 5.5.3 節 「顯示有關 OCF 資源代理程式的資訊」

Linux Standards Base (LSB) 程序檔

LSB 資源代理程式一般由作業系統/套裝作業系統提供,位於 /etc/init.d 中。若要與叢集一起使用,它們必須符合 LSB init 程序檔規格。例如,它們必須至少實作了以下幾個動作:reloadstartforce-reloadstoprestartstatus。如需詳細資訊,請參閱 http://refspecs.linuxbase.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html

這些服務的組態尚未標準化。如果要將 LSB 程序檔與 High Availability 搭配使用,請確定您瞭解如何設定相關程序檔。通常可在 /usr/share/doc/packages/PACKAGENAME 中的相關套件文件中找到這方面的資訊。

systemd

Pacemaker 可以管理 systemd 服務 (如果這些服務存在)。systemd 不使用 init 程序檔,而是使用單元檔案。通常,服務 (或單元檔案) 由作業系統提供。如果您要轉換現有的 init 程序檔,請造訪 http://0pointer.de/blog/projects/systemd-for-admins-3.html 獲取詳細資訊。

服務

目前有許多類型的系統服務同時存在:LSB (屬於 System V init)、systemd 和 (在某些套裝作業系統中提供的) upstart。因此,Pacemaker 支援使用特殊別名,來確定哪個服務適用於指定的叢集節點。當叢集中混合使用了 systemd、upstart 和 LSB 服務時,此功能特別有用。Pacemaker 會嘗試依照以下順序尋找指定服務:LSB (SYS-V) init 程序檔、Systemd 單元檔案或 Upstart 工作。

Nagios

使用監控外掛程式 (以前稱為 Nagios 外掛程式) 可以監控遠端主機上的服務。Pacemaker 可以使用監控外掛程式 (如果有) 來執行遠端監控。如需詳細資訊,請參閱第 9.1 節 「使用監控外掛程式監控遠端主機上的服務」

STONITH (圍籬區隔) 資源代理程式

此類別專用於圍籬區隔相關資源。如需詳細資訊,請參閱 第 12 章 「圍籬區隔與 STONITH

High Availability Extension 隨附的代理程式將寫入 OCF 規格。

6.3 逾時值

以下參數可能會影響資源的逾時值:

  • op_defaults (操作的全域逾時),

  • 資源範本中定義的特定逾時值

  • 為資源定義的特定逾時值

注意
注意:值的優先程度

如果為資源定義了特定值,則該值將優先於全域預設值。資源的特定值也優先於資源範本中定義的值。

設定合適的逾時值非常重要。將逾時值設定得太小,會因以下緣故產生大量 (不必要的) 圍籬區隔操作:

  1. 如果資源逾時,該資源將失敗,並且叢集會嘗試將其停止。

  2. 如果停止該資源的操作也失敗 (例如,由於停止逾時設定得太短),叢集將圍籬區隔該節點。它會將發生此情況的節點視為失控。

您可以使用 crmsh 和 Hawk2 調整操作的全域預設值並設定任何特定的逾時值。確定及設定逾時值的最佳實務如下:

程序 6.1︰ 確定逾時值
  1. 檢查啟動和停止資源所需的時間 (負載狀態下)。

  2. 如果需要,請新增 op_defaults 參數並相應地設定 (預設) 逾時值:

    1. 例如,將 op_defaults 設定為 60 秒:

      crm(live)configure# op_defaults timeout=60
    2. 對於需要較長時間的資源,請單獨定義每個逾時值。

  3. 為資源設定操作時,請新增獨立的 startstop 操作。使用 Hawk2 設定操作時,該工具會針對這些操作提供有用的逾時建議。

6.4 建立基本資源

若想在叢集中使用某項資源,必須先對其進行設定。例如,如果想要使用 Apache 伺服器做為叢集資源,請先設定 Apache 伺服器並完成 Apache 組態設定,然後才能在叢集中啟動各個資源。

如果資源具有特定的環境要求,請確保這些要求在所有叢集節點上均得到滿足並且一致。此類組態並非由 High Availability Extension 管理。您必須自行管理。

可以使用 Hawk2 或 crmsh 來建立基本資源。

注意
注意:不要操作叢集所管理的服務

當您正透過 High Availability Extension 管理某個資源時,就不能再啟動或停止該資源 (例如,不能在叢集之外手動啟動或停止,或者在開機或重新開機時啟動或停止)。High Availability Extension 軟體負責所有服務的啟動或停止動作。

如果服務已在叢集控制下執行,而您需要執行測試或維護任務,請務必先將資源、節點或整個叢集置於維護模式,然後再對其進行任何手動處理。如需詳細資料,請參閱第 27.2 節 「用於維護任務的不同選項」

重要
重要:資源 ID 和節點名稱

叢集資源和叢集節點的名稱應該不同。否則,Hawk2 將會失敗。

6.4.1 使用 Hawk2 建立基本資源

若要建立最基本的資源類型,請執行下列步驟:

程序 6.2︰ 使用 Hawk2 新增基本資源
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 基本資源

  3. 輸入唯一的資源 ID

  4. 如果存在可以依據其進行資源組態的資源範本,請選取相應的範本

  5. 選取要使用的資源代理程式類別servicelsbstonithocfsystemd。如需詳細資訊,請參閱第 6.2 節 「支援的資源代理程式類別」

  6. 如果選取了「ocf」類別,請指定 OCF 資源代理程式的提供者。OCF 規格允許多個廠商提供相同的資源代理程式。

  7. 類型清單中,選取要使用的資源代理程式 (例如IPaddrFilesystem)。此資源代理程式的簡要描述即會顯示。

    注意
    注意

    類型清單中顯示的選項取決於您所選的類別(對於 OCF 資源,還取決於提供者)。

    Hawk2 - 基本資源
    圖 6.1︰ Hawk2 - 基本資源
  8. 指定資源基本資訊後,Hawk2 會顯示以下類別。依照 Hawk2 的建議保留這些類別,或根據需要對其進行編輯。

    參數 (例項屬性)

    確定資源控制服務的哪個例項。建立資源時,Hawk2 會自動顯示所有需要的參數。請編輯這些參數以獲得有效的資源組態。

    如需詳細資訊,請參閱第 6.13 節 「例項屬性 (參數)」

    操作

    用於監控資源。建立資源時,Hawk2 會顯示最重要的資源操作 (startmonitorstop)。

    如需詳細資訊,請參閱第 6.14 節 「資源操作」

    中繼屬性

    告訴 CRM 如何處理特定資源。建立資源時,Hawk2 會自動列出該資源的重要中繼屬性,例如,用於定義資源初始狀態的 target-role 屬性。預設設為 Stopped,這樣資源便不會立即啟動)。

    如需詳細資訊,請參閱第 6.12 節 「資源選項 (中繼屬性)」

    使用效益

    告知 CRM 某個資源需從節點獲取的容量。

    如需詳細資訊,請參閱第 7.10.1 節 「使用 Hawk2 根據資源負載影響放置資源」

  9. 按一下建立完成組態。螢幕頂部的訊息會顯示動作是否成功。

6.4.2 使用 crmsh 建立基本資源

程序 6.3︰ 使用 crmsh 新增基本資源
  1. root 身分登入並啟動 crm 工具:

    # crm configure
  2. 設定基本資源的 IP 位址:

    crm(live)configure# primitive myIP IPaddr \
          params ip=127.0.0.99 op monitor interval=60s

    以上指令設定名為 基本資源myIPIP 位址。您需要選取一個類別 (此處為 ocf)、提供者 (heartbeat) 和類型 (IPaddr)。此外,此基本資源還需要其他參數,例如 IP 位址。將位址變更為您的設定。

  3. 顯示並檢閱已進行的變更:

    crm(live)configure# show
  4. 提交變更,使之生效:

    crm(live)configure# commit

6.5 建立資源群組

有些叢集資源依存於其他元件或資源,它們要求每個元件或資源都以特定順序啟動,並與其相依的資源在同一伺服器上執行。若要簡化此組態,您可以使用叢集資源群組。

可以使用 Hawk2 或 crmsh 來建立資源群組。

範例 6.1︰ Web 伺服器的資源群組

需要 IP 位址與檔案系統的 Web 伺服器就是資源群組的一個範例。在此範例中,每個元件都是組合成一個叢集資源群組中的獨立資源。資源群組將在一或多個伺服器上執行。若軟體或硬體出現異常,群組會容錯移轉至叢集中的另一個伺服器,這一點與個別叢集資源類似。

群組資源
圖 6.2︰ 群組資源

群組具有以下內容:

啟動和停止

資源以顯示的順序啟動,並以相反順序停止。

相依性

若群組中的某個資源在任何地方都無法執行,則群組中位於該資源之後的所有資源均不允許執行。

目錄

群組僅會包含基本叢集資源的集合。群組至少須包含一個資源,否則組態視為無效。若要參照群組資源的子項,請使用子項 ID 而非群組 ID。

條件約束

儘管可以在條件約束中參照群組的子項,但一般最好使用群組的名稱。

粘性

粘性在群組中屬於加法類內容。群組中每個使用中成員的粘性值都會影響群組的總值。因此,若 resource-stickiness 的預設值為 100,並且群組有七個成員,其中五個處於使用中狀態,則整個群組偏向於其目前位置 (分數為 500)。

資源監控

若要對群組啟用資源監控,您必須為要監控的群組中的每個資源分別設定監控。

6.5.1 使用 Hawk2 建立資源群組

注意
注意:空群組

群組至少須包含一個資源,否則組態視為無效。建立群組時,Hawk2 允許您建立多個基本資源並將它們新增至群組。

程序 6.4︰ 使用 Hawk2 新增資源群組
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 群組

  3. 輸入唯一的群組 ID

  4. 若要定義群組成員,請選取子項清單中的一個或多個項目。使用右側的把手圖示將群組成員拖放為需要的順序,以對群組成員重新排序。

  5. 需要時可以修改或新增中繼屬性

  6. 按一下建立完成組態。螢幕頂部的訊息會顯示動作是否成功。

Hawk2 - 資源群組
圖 6.3︰ Hawk2 - 資源群組

6.5.2 使用 crmsh 建立資源群組

以下範例建立了兩個基本資源 (一個 IP 位址和一個電子郵件資源)。

程序 6.5︰ 使用 crmsh 新增資源群組
  1. 以系統管理員身分執行 crm 指令。提示符會切換為 crm(live)

  2. 設定基本資源:

    crm(live)# configure
    crm(live)configure# primitive Public-IP ocf:heartbeat:IPaddr \
        params ip=1.2.3.4 id= Public-IP
    crm(live)configure# primitive Email systemd:postfix \
        params id=Email
  3. 以正確的順序按照相應的識別碼對基本資源分組:

    crm(live)configure# group g-mailsvc Public-IP Email

6.6 建立複製品資源

您可能要讓某些資源同時在叢集的多個節點上執行。為此,必須將資源設定為複製品資源。可以設定為複製品的資源範例包括叢集檔案系統,如 OCFS2。您可以複製所提供的任何資源。資源的代理程式支援此操作。您甚至可以對複製品資源進行不同的設定,具體視代管它們的節點而定。

資源複製品分為三種類型:

匿名複製品

這是最簡單的一種複製品。無論在何處執行,它們的行為都相同。因此,每部機器上只能有一個匿名複製品例項處於使用中狀態。

全域唯一的複製品

這些資源是不同的實體。在一個節點上執行的複製品例項與在另一個節點上執行的另一個例項不同;在相同節點上的任何兩個例項也不相同。

可升級複製品 (多狀態資源)

這些資源的使用中例項分為兩種狀態:主動與被動。這些狀態有時也稱為主要與次要。可升級複製品可以是匿名的,也可以是全域唯一。如需詳細資訊,請參閱第 6.7 節 「建立可升級複製品 (多狀態資源)」

複製品只能包含一個群組或一個一般資源。

設定資源監控或條件約束時,複製品的要求與簡單資源不同。如需詳細資料,請參閱 http://www.clusterlabs.org/pacemaker/doc/ 上的 Pacemaker Explained

可以使用 Hawk2 或 crmsh 來建立複製品資源。

6.6.1 使用 Hawk2 建立複製品資源

注意
注意:複製品資源的子資源

複製品可以將基本資源或群組做為子資源。在 Hawk2 中,建立複製品時不能建立或修改子資源。請在新增複製品之前建立子資源並視需要對其進行設定。

程序 6.6︰ 使用 Hawk2 新增複製品資源
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 複製品

  3. 輸入唯一的複製品 ID

  4. 子資源清單中,選取要做為複製品子資源的基本資源或群組。

  5. 需要時可以修改或新增中繼屬性

  6. 按一下建立完成組態。螢幕頂部的訊息會顯示動作是否成功。

Hawk2 - 複製品資源
圖 6.4︰ Hawk2 - 複製品資源

6.6.2 使用 crmsh 建立複製品資源

若要建立匿名複製品資源,首先要建立一個基本資源,然後使用 clone 指令參考該資源。

程序 6.7︰ 使用 crmsh 新增複製品資源
  1. root 身分登入並啟動 crm 互動式外圍程序:

    # crm configure
  2. 設定基本資源,例如:

    crm(live)configure# primitive Apache apache
  3. 複製基本資源:

    crm(live)configure# clone cl-apache Apache

6.7 建立可升級複製品 (多狀態資源)

可升級複製品 (以前稱為多狀態資源) 是一種特殊的複製品。它們可讓例項處於兩種操作模式之一 (主要或次要)。可升級複製品只能包含一個群組或一個一般資源。

設定資源監控或條件約束時,可升級複製品的要求與簡單資源不同。如需詳細資料,請參閱 http://www.clusterlabs.org/pacemaker/doc/ 上的 Pacemaker Explained

可以使用 Hawk2 或 crmsh 來建立可升級複製品。

6.7.1 使用 Hawk2 建立可升級複製品

注意
注意:可升級複製品的子資源

可升級複製品可以包含基本資源或群組做為子資源。在 Hawk2 中,建立可升級複製品時不能建立或修改子資源。新增可升級複製品之前,請先建立子資源並根據需要對其進行設定。請參閱第 6.4.1 節 「使用 Hawk2 建立基本資源」第 6.5.1 節 「使用 Hawk2 建立資源群組」

程序 6.8︰ 使用 Hawk2 新增可升級複製品
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 多狀態

  3. 輸入唯一的多狀態 ID

  4. 子資源清單中,選取要做為多狀態資源的子資源的基本資源或群組。

  5. 需要時可以修改或新增中繼屬性

  6. 按一下建立完成組態。螢幕頂部的訊息會顯示動作是否成功。

6.7.2 使用 crmsh 建立可升級複製品

若要建立可升級複製品資源,首先要建立一個基本資源,然後再建立可升級複製品資源。可升級複製品資源必須至少支援升級和降級操作。

程序 6.9︰ 使用 crmsh 新增可升級複製品
  1. root 身分登入並啟動 crm 互動式外圍程序:

    # crm configure
  2. 設定基本資源。視需要變更間隔:

    crm(live)configure# primitive my-rsc ocf:myCorp:myAppl \
        op monitor interval=60 \
        op monitor interval=61 role="Promoted
  3. 建立可升級複製品資源:

    crm(live)configure# clone clone-rsc my-rsc meta promotable=true

6.8 建立資源範本

如果您要建立大量具有相似組態的資源,定義資源範本是最輕鬆的方法。定義好範本後,就可以在基本資源或特定類型的條件約束中參考該範本,如第 7.3 節 「資源範本和條件約束」所述。

如果在基本資源中參考了範本,該基本資源會繼承範本中定義的所有操作、例項屬性 (參數)、中繼屬性和使用率屬性。此外,您也可以為基本資源定義特定的操作或屬性。如果在範本和基本資源中都定義了以上內容,基本資源中定義的值將優先於範本中定義的值。

可以使用 Hawk2 或 crmsh 來建立資源範本。

6.8.1 使用 Hawk2 建立資源範本

資源範本的設定方式與基本資源類似:

程序 6.10︰ 新增資源範本
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 範本

  3. 輸入唯一的資源 ID

  4. 請遵照程序 6.2 「使用 Hawk2 新增基本資源」中從步驟 5 開始的指示。

6.8.2 使用 crmsh 建立資源範本

請使用 rsc_template 指令熟悉相應語法:

# crm configure rsc_template
 usage: rsc_template <name> [<class>:[<provider>:]]<type>
        [params <param>=<value> [<param>=<value>...]]
        [meta <attribute>=<value> [<attribute>=<value>...]]
        [utilization <attribute>=<value> [<attribute>=<value>...]]
        [operations id_spec
            [op op_type [<attribute>=<value>...] ...]]

例如,以下指令會建立一個名為 BigVM 的新資源範本,該範本由 ocf:heartbeat:Xen 資源及一些預設值與操作衍生而來:

crm(live)configure# rsc_template BigVM ocf:heartbeat:Xen \
   params allow_mem_management="true" \
   op monitor timeout=60s interval=15s \
   op stop timeout=10m \
   op start timeout=10m

定義新資源範本後,可以在基本資源中使用它,或在順序、並存或 rsc_ticket 條件約束中參考該範本。若要參考資源範本,請使用 @ 符號:

crm(live)configure# primitive MyVM1 @BigVM \
   params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1"

新基本資源 MyVM1 將繼承 BigVM 資源範本的一切。例如,與上面兩個指令具有同等效果的指令為:

crm(live)configure# primitive MyVM1 Xen \
   params xmfile="/etc/xen/shared-vm/MyVM1" name="MyVM1" \
   params allow_mem_management="true" \
   op monitor timeout=60s interval=15s \
   op stop timeout=10m \
   op start timeout=10m

如果您想覆寫某些選項或操作,只需將它們新增到您的 (基本資源) 定義即可。例如,下面的新基本資源 MyVM2 會使監控操作的逾時加倍,而其他內容則保留不變:

crm(live)configure# primitive MyVM2 @BigVM \
   params xmfile="/etc/xen/shared-vm/MyVM2" name="MyVM2" \
   op monitor timeout=120s interval=30s

在條件約束中可以參考資源範本,來代表所有由該範本衍生的基本資源。這有助於產生更加簡明、清晰的叢集組態。除了位置條件約束以外,其他所有條件約束中均允許參考資源範本。並存條件約束不可包含一個以上的範本參考。

6.9 建立 STONITH 資源

重要
重要:不支援沒有 STONITH 的組態
  • 您必須為叢集設定節點圍籬區隔機制。

  • 全域叢集選項 stonith-enabledstartup-fencing 必須設定為 true。如果您變更這些選項,將會失去支援。

依預設,全域叢集選項 stonith-enabled 設定為 true。如果未定義 STONITH 資源,叢集將會拒絕啟動任何資源。設定一或多個 STONITH 資源以完成 STONITH 設定。您也可以按照類似的方式為其他資源設定 STONITH 資源,但其行為在某些方面存在差異。如需詳細資料,請參閱第 12.3 節 「STONITH 資源和組態」

可以使用 Hawk2 或 crmsh 來建立 STONITH 資源。

6.9.1 使用 Hawk2 建立 STONITH 資源

若要為 SBD、libvirt (KVM/Xen) 或 vCenter/ESX 伺服器新增 STONITH 資源,最簡單的方式就是使用 Hawk2 精靈。

程序 6.11︰ 使用 Hawk2 新增 STONITH 資源
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 從左側導覽列中,選取組態 › 新增資源 › 基本資源

  3. 輸入唯一的資源 ID

  4. 類別清單中,選取資源代理程式類別stonith

  5. 類型清單中,選取用於控制 STONITH 裝置的 STONITH 外掛程式。此外掛程式的簡要描述即會顯示。

  6. Hawk2 會自動顯示該資源必需的參數。請輸入每個參數的值。

  7. Hawk2 會顯示最重要的資源操作並建議預設值。如果此時不修改任何設定,Hawk2 會在您確認後立即新增建議的操作及其預設值。

  8. 如無變更必要,請保留預設的中繼屬性設定。

    Hawk2 - STONITH 資源
    圖 6.5︰ Hawk2 - STONITH 資源
  9. 確認變更以建立 STONITH 資源。

    螢幕頂部的訊息會顯示動作是否成功。

要完成圍籬區隔組態,請新增條件約束。如需詳細資訊,請參閱 第 12 章 「圍籬區隔與 STONITH

6.9.2 使用 crmsh 建立 STONITH 資源

程序 6.12︰ 使用 crmsh 新增 STONITH 資源
  1. root 身分登入並啟動 crm 互動式外圍程序:

    # crm configure
  2. 使用如下指令取得所有 STONITH 類型清單:

    crm(live)# ra list stonith
    apcmaster                  apcmastersnmp              apcsmart
    baytech                    bladehpi                   cyclades
    drac3                      external/drac5             external/dracmc-telnet
    external/hetzner           external/hmchttp           external/ibmrsa
    external/ibmrsa-telnet     external/ipmi              external/ippower9258
    external/kdumpcheck        external/libvirt           external/nut
    external/rackpdu           external/riloe             external/sbd
    external/vcenter           external/vmware            external/xen0
    external/xen0-ha           fence_legacy               ibmhmc
    ipmilan                    meatware                   nw_rpc100s
    rcd_serial                 rps10                      suicide
    wti_mpc                    wti_nps
  3. 從上面的清單中選擇一種 STONITH 類型並檢視可能的選項清單。使用以下指令:

    crm(live)# ra info stonith:external/ipmi
    IPMI STONITH external device (stonith:external/ipmi)
    
    ipmitool based power management. Apparently, the power off
    method of ipmitool is intercepted by ACPI which then makes
    a regular shutdown. In case of a split brain on a two-node,
    it may happen that no node survives. For two-node clusters,
    use only the reset method.
    
    Parameters (* denotes required, [] the default):
    
    hostname (string): Hostname
       The name of the host to be managed by this STONITH device.
    ...
  4. 使用 stonith 類別、您在步驟 3 中所選的類型,以及所需的相應參數來建立 STONITH 資源,例如:

    crm(live)# configure
    crm(live)configure# primitive my-stonith stonith:external/ipmi \
       params hostname="alice" \
       ipaddr="192.168.1.221" \
       userid="admin" passwd="secret" \
       op monitor interval=60m timeout=120s

6.10 設定資源監控

若要確定資源是否正在執行,必須設定針對該資源的資源監控。可以使用 Hawk2 或 crmsh 來設定資源監控功能。

若資源監控偵測到失敗,系統將執行以下動作:

  • 根據 /etc/corosync/corosync.conflogging 區段中指定的組態產生記錄檔案訊息。

  • 失敗狀況會反映在叢集管理工具 (Hawk2、crm status) 及 CIB 狀態區段中。

  • 叢集會啟動重要的復原動作,其中可能包括停止資源以修複失敗狀態,以及在本地或在其他節點上重新啟動資源。也可能不重新啟動資源,具體視組態及叢集狀態而定。

若不設定資源監控,則不會向您通知資源成功啟動後發生的失敗,並且叢集會永遠將資源顯示為狀況良好。

通常,叢集只會在資源執行時對其進行監控。但是,若要偵測並行存取違規,還需針對停止的資源設定監控。設定資源監控需指定逾時和/或啟動延遲值以及間隔。該間隔會告知 CRM 應檢查資源狀態的頻率。您還可以設定特定參數,例如為 startstop 操作設定 timeout

如需監控操作參數的詳細資訊,請參閱第 6.14 節 「資源操作」

6.10.1 使用 Hawk2 設定資源監控功能

程序 6.13︰ 新增和修改操作
  1. 登入 Hawk2:

    https://HAWKSERVER:7630/
  2. 程序 6.2 「使用 Hawk2 新增基本資源」所述新增資源,或選取現有的基本資源進行編輯。

    Hawk2 會自動顯示最重要的操作 (monitorstartstop) 並建議預設值。

    若要查看每個所建議的值名下的屬性,請將滑鼠指標懸停在相應的值上方。

    Image
  3. 若要變更針對 startstop 操作建議的 timeout 值,請執行以下操作:

    1. 按一下該操作旁邊的筆型圖示。

    2. 在開啟的對話方塊中為 timeout 參數輸入其他值,例如 10,然後確認變更。

  4. 若要為 操作變更建議的間隔monitor值:

    1. 按一下該操作旁邊的筆型圖示。

    2. 在開啟的對話方塊中,為監控 interval 輸入其他值。

    3. 在資源停止的情況下設定資源監控:

      1. 從下面的空下拉式方塊中選取 role 這一項。

      2. role 下拉式清單中選取 Stopped

      3. 按一下套用確認所做的變更,並關閉操作的對話方塊。

  5. 確認您在資源組態螢幕中所做的變更。螢幕頂部的訊息會顯示動作是否成功。

若要檢視發生的資源故障,請在 Hawk2 中切換至狀態螢幕,然後選取關注的資源。在操作欄中按一下向下箭頭圖示,然後選取最近的事件。隨後開啟的對話方塊會列出對資源執行的最近動作。其中故障顯示為紅色。若要檢視資源詳細資料,請按一下操作欄中的放大鏡圖示。

Hawk2 - 資源詳細資料
圖 6.6︰ Hawk2 - 資源詳細資料

6.10.2 使用 crmsh 設定資源監控功能

若要監控資源,可以使用兩種方法:使用 op 關鍵字定義監控操作或使用 monitor 指令。下面的範例設定了一個 Apache 資源,並使用 op 關鍵字每隔 60 秒鐘對其執行一次監控操作:

crm(live)configure# primitive apache apache \
  params ... \
  op monitor interval=60s timeout=30s

使用以下指令也可以實現相同的目的:

crm(live)configure# primitive apache apache \
   params ...
 crm(live)configure# monitor apache 60s:30s
監控已停止的資源

通常,叢集只會在資源執行時對其進行監控。但是,若要偵測並行存取違規,還需針對停止的資源設定監控。例如:

crm(live)configure# primitive dummy1 Dummy \
     op monitor interval="300s" role="Stopped" timeout="10s" \
     op monitor interval="30s" timeout="10s"

當資源 dummy1 處於 role="Stopped" 狀態時,此組態每 300 秒就會觸發一次對該資源的監控操作。當該資源執行時,將每隔 30 秒對其監控一次。

查探

CRM 會對每個節點上的各個資源執行初始監控,也稱為 probe。在清理資源後也會執行查探。如果為資源定義了多項監控操作,CRM 會選取間隔時間最短的一項操作,並會使用其逾時值做為查探的預設逾時值。如果沒有設定任何監控操作,則會套用針對整個叢集的預設值。預設值為 20 秒 (如果未透過設定 op_defaults 參數指定其他值)。如果您不想依賴自動計算結果或 op_defaults 值,請為此資源的查探定義特定的監控操作。為此,可以新增一個監控操作並將 interval 設定為 0,例如:

crm(live)configure# primitive rsc1 ocf:pacemaker:Dummy \
     op monitor interval="0" timeout="60"

無論 op_defaults 中定義的全域逾時或已設定的任何其他操作逾時為何值,rsc1 的查探都會在 60s 後逾時。如果在指定相應資源的查探時未設定 interval="0",CRM 會自動檢查是否為該資源定義了任何其他監控操作,並如上文所述計算查測的逾時值。

6.11 從檔案載入資源

可從本地檔案或網路 URL 載入部分或全部組態。可定義三種不同方法:

replace

此選項會以新的來源組態取代目前的組態。

update

此選項會嘗試輸入來源組態。它會將新項目新增至目前的組態或更新其現有項目。

push

此選項會將內容從來源輸入到目前組態中 (與 update 相同)。不過,它會移除在新組態中不可用的物件。

若要從檔案 mycluster-config.txt 載入新組態,請使用以下語法:

# crm configure load push mycluster-config.txt

6.12 資源選項 (中繼屬性)

對於新增的每個資源,您都可以定義選項。叢集使用這些選項來決定資源的行為,它們會告知 CRM 如何處理特定的資源。可以使用 crm_resource --meta 指令或 Hawk2 來設定資源選項。

可用的資源選項如下:

priority

如果無法讓所有資源都處於使用中狀態,叢集會停止優先程度較低的資源,以便讓優先程度較高的資源保持使用中狀態。

預設值為 0.

target-role

叢集應嘗試讓此資源保持什麼狀態?允許的值:StoppedStartedUnpromotedPromoted

預設值為 Started.

is-managed

叢集是否允許啟動及停止資源?允許的值:truefalse。如果該值設定為 false,則仍會監控資源的狀態,並報告任何故障。這與將資源設定為 maintenance="true" 的情況不同。

預設值為 true.

maintenance

是否可以手動處理資源?允許的值:truefalse。如果設定為 true,則所有資源將變為不受管理狀態:叢集將停止監控這些資源,因此不知道它們的狀態。您可以停止或重新啟動叢集資源,不必等待叢集嘗試重新啟動它們。

預設值為 false.

resource-stickiness

資源希望留在原處的程度如何?

各複製品例項的預設值為 1,所有其他資源的預設值為 0

migration-threshold

此資源在節點上的失敗次數達到多少次才會取消該節點代管此資源的資格?

預設值為 INFINITY.

multiple-active

如果叢集發現資源在多個節點上處於使用中狀態,應如何處理?允許的值:block (將資源標示為不受管理)、stop_startstop_only

預設值為 stop_start.

failure-timeout

等待多少秒後才能像未失敗一樣運作 (並在可能的情況下允許資源回到之前失敗的節點上)?

預設值為 0 (停用)。

allow-migrate

是否允許即時移轉支援 migrate_tomigrate_from 動作的資源。如果值設定為 true,則可在不遺失狀態的情況下移轉資源。如果值設定為 false,將會在第一個節點上關閉資源,並在第二個節點上重新啟動該資源。

ocf:pacemaker:remote 資源的預設值為 true,所有其他資源的預設值為 false

remote-node

此資源定義之遠端節點的名稱。這會使資源變成一個遠端節點,並且定義唯一的名稱以用於識別該遠端節點。如果未設定其他參數,此值還將做為要透過 remote-port 連接埠連接的主機名稱。

此選項預設為停用狀態。

警告
警告:使用唯一的 ID

此值不得與任何現有資源 ID 或節點 ID 重複。

remote-port

訪客與 pacemaker_remote 建立連接時使用的自訂連接埠。

預設值為 3121.

remote-addr

當遠端節點的名稱不是客體的主機名稱時,要連接到的 IP 位址或主機名稱。

預設值為 remote-node 設定的值。

remote-connect-timeout

等待中客體連接在多長時間後逾時?

預設值為 60s.

6.13 例項屬性 (參數)

所有資源類別的程序檔均可接收參數,參數決定了資源的行為及其控制的服務例項。如果資源代理程式支援參數,則可使用 crm_resource 指令或 Hawk2 新增這些參數。在 crm 指令列公用程式和 Hawk2 中,例項屬性分別稱為 paramsParameter。您可用 root 身分執行如下指令來獲取受 OCF 程序檔支援的例項屬性清單:

# crm ra info [class:[provider:]]resource_agent

或 (不含選擇性的部分):

# crm ra info resource_agent

輸出會列出所有受支援的屬性、其用途與預設值。

注意
注意:群組、複製品或可升級複製品的例項屬性

請注意,群組、複製品和可升級複製品資源沒有例項屬性。但是,群組、複製品或可升級複製品的子代會繼承任何例項屬性集。

6.14 資源操作

叢集預設不會確保資源仍正常。若要指示叢集確保資源能正常運作,需要將監控操作新增至資源定義中。可為所有類別或資源代理程式新增監控作業。

監控操作可能具有以下內容:

id

動作執行人名稱。必須唯一。(ID 不會顯示。)

name

執行的動作。常用的值:monitorstartstop

interval

執行操作的頻率,以秒計。

timeout

宣告動作失敗之前等待多長時間?

requires

需符合什麼條件才會執行此動作。允許的值:nothingquorumfencing。預設值取決於是否啟用圍籬區隔,以及資源的類別是否為 stonith。對於 STONITH 資源,預設值為 nothing

on-fail

此動作失敗時所採取的動作。允許的值:

  • ignore:當做資源未失敗。

  • block:在資源上不執行任何進一步操作。

  • stop:停止資源且不在其他任何地方啟動。

  • restart:停止資源並再次啟動 (可能在其他節點上)。

  • fence:將發生資源故障的節點關閉 (STONITH)。

  • standby:將發生資源失敗之節點上的所有資源移出。

enabled

如果為 false,則會將操作視做不存在。允許的值:truefalse

role

只有在資源具有此角色時,才執行操作。

record-pending

可以全域設定,也可以針對個別資源設定。讓 CIB 反映對資源執行之 in-flight 操作的狀態。

description

操作的描述。