7.4. 配置故障切换域
故障切换域是一个命名的集群节点子集,它可在节点失败事件中运行集群服务。故障切换域有以下特征:
- 无限制 — 允许您为在子集指定首选成员,但分配给这个域名的集群服务可在任意可用成员中运行。
- 限制 — 允许您限制可运行具体集群服务的成员。如果在限制故障切换域中没有可用成员,则无法启动集群服务(手动或者使用集群软件均不可行)。
- 无序 — 当将集群服务分配给一个无序故障切换域时,则可从可用故障切换域成员中随机选择运行集群服务的成员,没有优先顺序。
- 有序 — 允许您在故障切换域成员中指定首选顺序。有序故障切换域从优先数字最小的节点开始选择。即故障切换域中优先数字为 "1" 的节点具有最高的优先权,因此它是故障切换域中的首选节点。那个节点之后,第二首选节点应为含有下一个最高优先权数字的节点,依此类推。
- 故障恢复 — 允许您指定在故障切换域中的服务是否应该恢复到节点失败前最初运行的节点。配置这个特性在作为有序故障切换域一部分节点重复失败的环境中很有帮助。在那种情况下,如果某个节点是故障切换域中的首选节点,在可能在首选节点和其它节点间重复切换和恢复某个服务,从而不会对性能产生严重影响。
注意
故障恢复特性只适用于配置了有序故障切换的集群。
注意
更改故障切换域配置对目前运行中的服务无效。
注意
操作不需要的故障切换域。
默认情况下故障切换域为无限制和无序的。
在由几个成员组成的集群中,使用限制故障切换域可最大程度降低设置集群以便运行集群服务的工作(比如
httpd
),它要求您在运行该集群服务的所有成员中进行完全一致的配置。您不需要将整个集群设置为运行该集群服务,只要设置与该集群服务关联的限制故障切换域中的成员即可。
注意
要配置首选成员,您可以创建一个只由一个集群成员组成的无限故障切换域。这样可让该集群服务在那个主要集群成员(首选成员)中运行,但允许将集群服务切换到任意其它成员中。
使用以下步骤配置故障切换域:
- 在集群的任意节点中打开
/etc/cluster/cluster.conf
。 - 为每个要使用的故障切换域
rm
元素中添加以下框架部分:<failoverdomains> <failoverdomain name="" nofailback="" ordered="" restricted=""> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> <failoverdomainnode name="" priority=""/> </failoverdomain> </failoverdomains>
注意
failoverdomainnode
属性的数目由故障切换域中的节点数决定。前面文本中的框架failoverdomainnode
部分有三个failoverdomainnode
元素(没有指定节点名称),表示在故障切换域中有三个节点。 - 在
failoverdomainnode
部分提供了元素和属性值。有关元素和属性描述请参考只是集群方案的 failoverdomain 部分。注释集群方案位于任意集群节点中的/usr/share/doc/cman-X.Y.ZZ/cluster_conf.html
(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html
)。有关failoverdomains
部分示例请参考 例 7.8 “在cluster.conf
中添加故障切换域”。 - 增加
config_version
属性参数即可更新该参数(例如:从config_version="2"
改为config_version="3">
)。 - 保存
/etc/cluster/cluster.conf
。 - (可选),运行
ccs_config_validate
命令,根据集群方案(cluster.rng
)验证该文件。例如:[root@example-01 ~]#
ccs_config_validate
Configuration validates - 运行
cman_tool version -r
命令在其他集群节点中推广该配置。
例 7.8 “在
cluster.conf
中添加故障切换域” 演示使用有序、无限故障切换域配置示例。
例 7.8. 在 cluster.conf
中添加故障切换域
<cluster name="mycluster" config_version="3"> <clusternodes> <clusternode name="node-01.example.com" nodeid="1"> <fence> <method name="APC"> <device name="apc" port="1"/> </method> </fence> </clusternode> <clusternode name="node-02.example.com" nodeid="2"> <fence> <method name="APC"> <device name="apc" port="2"/> </method> </fence> </clusternode> <clusternode name="node-03.example.com" nodeid="3"> <fence> <method name="APC"> <device name="apc" port="3"/> </method> </fence> </clusternode> </clusternodes> <fencedevices> <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/> </fencedevices> <rm> <failoverdomains> <failoverdomain name="example_pri" nofailback="0" ordered="1" restricted="0"> <failoverdomainnode name="node-01.example.com" priority="1"/> <failoverdomainnode name="node-02.example.com" priority="2"/> <failoverdomainnode name="node-03.example.com" priority="3"/> </failoverdomain> </failoverdomains> </rm> </cluster>
failoverdomains
部分包含集群中每个故障切换域中的 failoverdomains
部分。这个示例中有一个故障切换域。在 failoverdomains
行中,名称(name
)为 example_pri
。另外,它指定无故障恢复(failback="0"
),即故障切换为有序的(ordered="1"
),故障切换域为无限的(restricted="0"
)。