8.3 STONITH 配置

要配置屏障,需要配置一个或多个 STONITH 资源,stonithd 守护程序不需要配置。所有配置都储存在 CIB 中。STONITH 资源就是 stonith 类的资源(请参见部分 17.1, 支持的资源代理类)。STONITH 资源是 STONITH 插件在 CIB 中的代表。除了屏障操作,还可以启动、停止和镜像 STONITH 资源,就像任何其他资源一样。在这种情况下,启动或停止 STONITH 资源意味着启用或禁用 STONITH。启动和停止仅是管理操作,不会转换成对屏障设备自身的任何操作。但是,监视会转换成设备状态。

STONITH 资源可像任何其他资源一样进行配置。有关配置资源的更多信息,请参见部分 4.3, 创建 STONITH 资源部分 5.4, 创建 STONITH 资源

参数(属性)列表取决于相应的 STONITH 类型。要查看特定设备的参数列表,请使用 stonith 命令:

stonith -t stonith-device-type -n

例如,要查看 ibmhmc 设备类型的参数,请输入以下命令:

stonith -t ibmhmc -n

要获取设备的简短帮助文本,请使用 -h 选项:

stonith -t stonith-device-type -h

8.3.1 STONITH 资源配置示例

在以下部分中,可了解一些用 crm 命令行工具的语法编写的示例配置。要应用这些配置,请将示例放进文本文件(例如 sample.txt)并运行:

crm < sample.txt

有关使用 crm 命令行工具配置资源的更多信息,请参见部分 5.0, 通过命令行配置群集资源

警告: 测试配置

以下一些示例仅用于演示和测试目的。请勿将任何测试配置示例用于真实的群集方案。

示例 8-1 测试配置

configure
primitive st-null stonith:null \
params hostlist="node1 node2"
clone fencing st-null
commit
   

示例 8-2 测试配置

备用配置:

configure
 primitive st-node1 stonith:null \
 params hostlist="node1"
 primitive st-node2 stonith:null \
 params hostlist="node2"
 location l-st-node1 st-node1 -inf: node1
 location l-st-node2 st-node2 -inf: node2
 commit

考虑到群集软件,此配置示例是完全正确的。与真实配置的唯一区别是没有发生屏障操作。

示例 8-3 测试配置

以下 external/ssh 配置是一个更真实的示例,但仍然仅用于测试:

configure
 primitive st-ssh stonith:external/ssh \
 params hostlist="node1 node2"
 clone fencing st-ssh
 commit

此配置也可以重设置节点。此配置非常类似于针对空 STONITH 设备的第一个示例。在此示例中使用了克隆。这是 CRM/Pacemaker 的一个功能。克隆基本上是一种快捷方式:一个克隆的资源可以取代定义 n 个相同但名称不同的资源。到目前为止,克隆的最常用途是与 STONITH 资源一起使用(如果可以从所有节点访问 STONITH 设备)。

示例 8-4 IBM RSA 无人值守设备的配置

真实的设备配置没有太大区别,尽管某些设备可能要求更多属性。可以如下配置 IBM RSA 无人值守设备:

configure
primitive st-ibmrsa-1 stonith:external/ibmrsa-telnet \
params nodename=node1 ipaddr=192.168.0.101 \
userid=USERID passwd=PASSW0RD
primitive st-ibmrsa-2 stonith:external/ibmrsa-telnet \
params nodename=node2 ipaddr=192.168.0.102 \
userid=USERID passwd=PASSW0RD
location l-st-node1 st-ibmrsa-1 -inf: node1
location l-st-node2 st-ibmrsa-2 -inf: node2
commit

在此示例中使用了位置约束,原因如下:STONITH 操作总有失败的可能性。因此,对作为操作执行者的节点的 STONITH 操作是不可靠的。如果重设置节点,则它将无法发送有关屏障操作结果的通知。唯一的方法是假设操作会成功并提前发送通知。但如果操作失败,则会遇到问题。所以 stonithd 拒绝按约定终止其主机。

示例 8-5 UPS 屏障设备的配置

UPS 类型的屏障设备的配置类似于上述示例,细节就留给读者作为练习吧。所有 UPS 设备对屏障都使用相同的机制,但访问设备的方式是不同的。旧的 UPS 设备(被认为是专业的)只有一个串行端口,通常使用一根特殊的串行电缆以 1200 波特连接。许多新的 UPS 设备仍有一个串行端口,但通常它们还提供了一个 USB 接口或一个以太网接口。可以使用的连接类型取决于插件支持的连接。

例如,通过使用 stonith -t stonith 设备类型 -n 命令比较 apcmasterapcsmart 设备:

stonith -t apcmaster -h

返回以下信息:

STONITH Device: apcmaster - APC MasterSwitch (via telnet)
NOTE: The APC MasterSwitch accepts only one (telnet)
connection/session a time. When one session is active,
subsequent attempts to connect to the MasterSwitch will fail.
For more information see http://www.apc.com/
List of valid parameter names for apcmaster STONITH device:
ipaddr
login
 password

使用

stonith -t apcsmart -h

得到以下输出:

STONITH Device: apcsmart - APC Smart UPS
(via serial port - NOT USB!). 
Works with higher-end APC UPSes, like
Back-UPS Pro, Smart-UPS, Matrix-UPS, etc.
(Smart-UPS may have to be >= Smart-UPS 700?).
See http://www.networkupstools.org/protocols/apcsmart.html
for protocol compatibility details.
For more information see http://www.apc.com/
List of valid parameter names for apcsmart STONITH device:
ttydev
hostlist

第一个插件支持带有一个网络端口的 APC UPS 和 telnet 协议。第二个插件使用 APC SMART 协议,而不使用许多不同的 APC UPS 产品系列都支持的串行线路。

8.3.2 约束与克隆

您在部分 8.3.1, STONITH 资源配置示例中了解了配置 STONITH 资源有多种方法:使用约束和/或克隆。选择哪种用于配置取决于多种因素(屏障设备的性质、设备管理的主机数、群集节点数)和最后但并非最不重要的一点,个人偏好。

简而言之:如果将克隆用于配置是安全的且如果它们减少了配置,则使用克隆的 STONITH 资源。