5.5 設定資源限制

設定所有資源只是工作的一部分。即使叢集瞭解所有必需的資源,可能仍然無法正確地對其進行處理。例如,嘗試在 drbd 從屬節點上裝載檔案系統沒有任何意義 (實際上,此操作將失敗,出現 drbd 錯誤)。若要通知叢集有關這些事項,請定義限制。

在 High Availability 中,有三種不同類型的限制可供使用:

5.5.1 位置限制

可以為每個資源多次新增此類限制。將針對提供的資源評估所有 rsc_location 限制。下面是一個簡單的範例,可將在名為 earth 的節點上執行 ID 為 fs1-loc 的資源的可能性提高到 100:

crm(live)configure# location fs1-loc fs1 100: earth

5.5.2 並存限制

colocation 指令用於定義應在相同或不同主機上執行的資源。它通常總使用下列順序:

crm(live)configure# order rsc1 rsc2
crm(live)configure# colocation rsc2 rsc1

只能設定許多 +INFINITY 或 -INFINITY,定義必須始終或永不在同一個節點上執行的資源。例如,若要始終在同一個主機上執行 ID 分別為 filesystem_resourcenfs_group 的兩個資源,請使用以下限制:

crm(live)configure# colocation nfs_on_filesystem inf: nfs_group filesystem_resource

對於主要從屬組態,除本地執行資源之外,還必須瞭解目前節點是否為主要節點。這可使用其他 to_rolefrom_role 屬性進行檢查。

5.5.3 順序限制

有時需要提供服務必須採用的啟動順序。例如,在設備可用於系統之前,不能裝載檔案系統。順序限制可用於在另一個資源符合特定條件 (例如啟動、停止或升級為主要資源) 的前後啟動或停止服務。在 crm 外圍程序中使用以下指令設定順序限制:

crm(live)configure# order nfs_after_filesystem mandatory: group_nfs filesystem_resource

5.5.4 範例組態的限制

如果沒有其他限制,本章中所用的範例可能無法如預期般作用。所有資源皆必須與 drbd 資源的主要資源在同一機器上執行,這是基本要求。另一重要事項是,在任何其他資源啟動之前,drbd 資源必須是主要資源。若 drbd 不是主要資源,嘗試裝載 drbd 設備必定失敗。必須滿足的限制如下所示:

  • 檔案系統必須始終與 drbd 資源的主要資源位於同一個節點上。

    crm(live)configure# colocation filesystem_on_master inf: \
        filesystem_resource drbd_resource:Master
  • NFS 伺服器與 IP 位址必須與檔案系統位於同一個節點上。

    crm(live)configure# colocation nfs_with_fs inf: \
       nfs_group filesystem_resource
  • NFS 伺服器與 IP 位址將在檔案系統完成裝載之後啟動︰

    crm(live)configure# order nfs_second mandatory: \
       filesystem_resource nfs_group
  • 必須在將 drbd 資源升級為節點上的主要資源之後,才能在此節點上裝載檔案系統。

    crm(live)configure# order drbd_first inf: \
        drbd_resource:promote filesystem_resource