章 6. 資源限制式

您可藉由配置叢集中資源限制式以決定該資源的行為。您可配置下列種類的限制式:
  • location 限制式 — 位置限制式可決定資源能在哪個節點上執行。位置限制式詳述於〈節 6.1, “位置限制式”〉中。
  • order 限制式 — 順序限制式可決定資源的執行順序。順序限制式詳述於〈節 6.2, “順序限制”〉中。
  • colocation 限制式 — colocation 限制式可決定資源與其它資源相對之下應放置在什麼位置上。Colocation 限制式詳述於〈節 6.3, “資源的 Colocation”〉中。
Pacemaker 支援資源群組的概念,以簡化限制的配置,它會將一組資源併在一起並確認資源會按照順序啟用,並以反向順序停下。欲取得更多有關於資源群組上的相關資訊,請參閱〈節 6.5, “資源群組”〉。

6.1. 位置限制式

位置限制式可決定資源能在哪個節點上執行。您可配置位置限制式以決定資源是否會偏好或避免在特定節點上執行。
表格 6.1, “位置限制式選項” 概述了配置位置限制式的選項。

表格 6.1. 位置限制式選項

欄位詳述
id
限制式的獨特名稱。這是當您透過 pcs 配置位置限制式時,由系統所設置的名稱。
rsc
資源名稱
node
節點的名稱
score
用來判斷資源是否應在某個節點上執行,或避免在某個節點上執行的值。
INFINITY 這個值會將「應該」更改為「必須」;INFINITY 乃資源位置限制的預設分數值。
下列指令會為一項資源建立位置限制,以偏好在特定節點上執行。
pcs constraint location rsc prefers node[=score] ...
下列指令會為一項資源建立位置限制,以避免在特定節點上執行。
pcs constraint location rsc avoids node[=score] ...
還有兩項能指定資源可在哪個節點上運作的策略:
  • Opt-In Clusters — 配置一個就預設值無法讓任何資源在任何位置運作於的叢集,並選擇性為指定的資源啟用允許的節點。配置一個 opt-in 叢集的程序詳述於〈節 6.1.1, “配置一個「Opt-In」Cluster”〉中。
  • Opt-Out Clusters — 配置一個就預設值能讓所有資源執行於任何位置的叢集,然後為不允許執行於指定節點上的資源建立位置限制。配置一個 opt-out cluster 的程序詳述於〈節 6.1.2, “配置一個「Opt-Out」Cluster”〉中。
您應配置一個 opt-in 或 opt-out cluster 的決定取決於您的個人偏好與您叢集本身的架構。若您大部份的資源皆可在多數節點上執行,那麼 opt-out 可能會是較容易的配置方式。另一方面,若大部份的資源僅能在少數節點上執行,opt-in 配置可能會較為容易。

6.1.1. 配置一個「Opt-In」Cluster

若要建立一個 opt-in cluster,請將 symmetric-cluster 叢集內容設為 false,以預設避免資源在任何位置上執行。
# pcs property set symmetric-cluster=false
為個別資源啟用節點。下列指令能配置位置限制,如此一來 Webserver 資源將會偏好使用 example-1 節點,Database 資源將偏好使用 example-2 節點,而當偏好的節點失效時,這兩項資源皆可容錯移轉至 example-3 節點。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver prefers example-3=0
# pcs constraint location Database prefers example-2=200
# pcs constraint location Database prefers example-3=0

6.1.2. 配置一個「Opt-Out」Cluster

若要建立一個 opt-out cluster,請將 symmetric-cluster 叢集內容設為 true 以允許資源就預設值能在任何位置上執行。
# pcs property set symmetric-cluster=true
下列指令接著將會產生一項與〈節 6.1.1, “配置一個「Opt-In」Cluster”〉中的範例相等的配置。若這兩項資源偏好的節點失效的話,兩項資源皆可容錯移轉至 example-3 節點,因為每個節點皆有個為零的隱含分數。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver avoids example-2=INFINITY
# pcs constraint location Database avoids example-1=INFINITY
# pcs constraint location Database prefers example-2=200
請注意,您無須在這些指令中指定一個值為 INFINITY 的分數,因為那是分數的預設值。