10.6. 配置隔离级别

Pacemaker 通过一个称为隔离拓扑的功能实现有多个设备的节点的隔离。要实现拓扑结构,根据常规创建独立设备,然后在配置中的隔离拓扑部分定义一个或多个隔离级别。

Pacemaker 会按如下方式处理隔离级别:

  • 级别以整数形式递增,从 1 开始。
  • 如果设备失败,对当前级别的处理会中断。不会执行该级别的其他设备,而是尝试下一个级别。
  • 如果所有设备被成功隔离,那么该级别已成功,且不会尝试其他级别。
  • 当一个级别被通过(success)或所有级别都已经被尝试(failed)后,操作就会完成。

使用以下命令为节点添加隔离级别。这些设备以用逗号分开的 stonith id 列表的形式提供,这些设备是用于该级别的节点进行尝试的。

pcs stonith level add level node devices

以下命令列出目前配置的所有隔离级别。

pcs stonith level

在以下示例中,为节点 rh7-2 配置了两个隔离设备:名为 my_ilo 的 ilo 隔离设备,以及名为 my_apc 的 apc 隔离设备。这些命令设置了隔离级别,如果设备 my_ilo 失败且无法隔离该节点,Pacemaker 会尝试使用设备 my_apc。本例还显示了配置级别后, pcs stonith level 命令的输出。

# pcs stonith level add 1 rh7-2 my_ilo
# pcs stonith level add 2 rh7-2 my_apc
# pcs stonith level
 Node: rh7-2
  Level 1 - my_ilo
  Level 2 - my_apc

以下命令删除指定节点和设备的隔离级别。如果没有指定节点或设备,则您指定的隔离级别会从所有节点中删除。

pcs stonith level remove level  [node_id] [stonith_id] ... [stonith_id]

以下命令清除指定节点或者 stonith id 的隔离级别。如果您没有指定节点或 stonith id,则会清除所有隔离级别。

pcs stonith level clear [node]|stonith_id(s)]

如果您指定一个以上的 stonith id,则必须用逗号分开(不要有空格),如下例所示。

# pcs stonith level clear dev_a,dev_b

以下命令可验证所有在隔离级别指定的隔离设备和节点是否存在。

pcs stonith level verify

您可以在隔离拓扑中通过在节点名称上应用的正则表达式、节点属性及其值来指定节点。例如,以下命令将节点 node1node2node3 配置为使用隔离设备 apc1apc2,节点 node4node5node6 使用隔离设备 apc3apc4

# pcs stonith level add 1 "regexp%node[1-3]" apc1,apc2
# pcs stonith level add 1 "regexp%node[4-6]" apc3,apc4

以下命令通过使用节点属性匹配得到同样的结果。

# pcs node attribute node1 rack=1
# pcs node attribute node2 rack=1
# pcs node attribute node3 rack=1
# pcs node attribute node4 rack=2
# pcs node attribute node5 rack=2
# pcs node attribute node6 rack=2
# pcs stonith level add 1 attrib%rack=1 apc1,apc2
# pcs stonith level add 1 attrib%rack=2 apc3,apc4