Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

7.3. 配置 Fencing

配置 fencing 包括(a)在一个集群中配置一个或者多个 fence 设备;(b)为每个节点配置一个或者多个 fence 方法(使用指定的一个或者多个 fence 设备)。
根据您的配置所需 fence 设备类型和 fence 方法配置 cluster.conf,如下:
  1. fencedevices 部分,使用 fencedevice 元素和 fence 设备独立属性指定每个 fence 设备。例 7.3 “添加到 cluster.conf 中的 APC Fence 设备” 演示添加了 APC fence 设备的配置文件示例。
  2. clusternodes 部分,每个 clusternodes 部分的 fence 元素中,指定每个节点的 fence 方法。使用 method 属性 name 指定 fence 方法名称。使用 device 元素及其属性 name 和具体 fence 设备参数为每个 fence 方法指定 fence 设备。例 7.4 “添加到 cluster.conf 的 fence 方法” 演示了集群中每个节点一个 fence 设备的 fence 方法示例。
  3. 在非电源 fence 方法(即 SAN/存储 fencing)的 clusternodes 部分添加 unfence 字段。这可保证在重启该节点前不会重新启用被 fence 的节点。有关 unfencing 节点的详情请参考 fence_node(8) man page。
    fence 部分不同,unfence 部分不包含 method。它直接包含 device 参考,使用 "on" 或者 "enable" 的明确动作(action)成为 fence 对应设备部分的镜像。fenceunfence device 行都参考同一 fencedevice,并应在每个节点中重复同样的参数。
    action 属性指定为 "on" 或者 "enable" ,可在重启时启用该节点。例 7.4 “添加到 cluster.conf 的 fence 方法”例 7.5 “cluster.conf:每个节点中有多种 Fence 方法” 中包含 unfence 元素和属性示例。
    有关 unfence 详情请参考 fence_node man page。
  4. 增加 config_version 属性参数即可更新该参数(例如:从 config_version="2" 改为 config_version="3">)。
  5. 保存 /etc/cluster/cluster.conf
  6. (可选),运行 ccs_config_validate 命令,确认根据集群方案(cluster.rng)更新的文件。例如:
    [root@example-01 ~]# ccs_config_validate 
    Configuration validates
    
  7. 请运行 cman_tool version -r 命令在剩余的所有集群节点中推广。这还将运行附加验证。需要在每个集群节点中都运行 ricci 方可推广更新的集群配置信息。
  8. 确认推广了更新的文件。
如果需要,您可以通过在每个节点中使用多种 fence 方法和在每个 fence 方法中使用多个 fence 设备配置复杂配置。当在每个节点中指定多个 fence 方法时,如果使用第一个方法 fenced 执行 fence 操作失败,则 fence 守护进程会尝试下一个方法,然后继续循环尝试所有方法直到成功为止。
有时 fencing 节点需要禁用两个 I/O 路径或者两个电源端口。这可通过在 fence 方法中指定两个或者多个设备完成。fenced 为每个 fence 设备行运行一次 fence 代理;只有全部成功方可认为是成功。
“Fencing 配置示例”一节 中演示了更复杂的配置。
您可以在 fence 设备代理 man page 中找到有关配置具体 fence 设备的更多信息(例如:fence_apc man page)。另外,您可以在 附录 A, Fence 设备参数 中获得有关 fence 参数的更多信息,在 /usr/sbin/ 中获得 fence 代理的更多信息,在 /usr/share/cluster/cluster.rng 中获得有关集群方案的更多信息,在 /usr/share/doc/cman-X.Y.ZZ/cluster_conf.html 中获得有关注释方案的更多信息(例如:/usr/share/doc/cman-3.0.12/cluster_conf.html)。

Fencing 配置示例

以下示例演示了每个节点一个 fence 方法以及每个 fence 方法一个 fence 设备的简单配置:
以下示例演示了较复杂的配置:

注意

本节中的示例并不完全,即还有其他方法根据您的要求配置 fencing。

例 7.3. 添加到 cluster.conf 中的 APC Fence 设备


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
         <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>

在这个示例中,已将 fence 设备(fencedevice)添加到 fencedevices 元素中,指定 fence 代理(agent)为 fence_apc,IP 地址(ipaddr)为 apc_ip_example,登录(login)为 login_example,fence 设备名称(name)为 apc,以及密码(passwd)为 password_example

例 7.4. 添加到 cluster.conf 的 fence 方法


<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>
   </rm>
</cluster>

在这个示例中为每个节点添加了 fence 方法(method)。每个节点的 fence 方法名称(name)为 APC。将用于每个节点中 fence 方法的设备(device)名称(name)指定为 apc,并为每个节点指定唯一 APC 切换电源端口号(port)。例如:node-01.example.com 的端口号为 1port="1")。每个节点的设备名称(device name="apc")根据 fencedevices 元素 apc 行中的名称(name)指向 fence 设备:fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"

例 7.5. cluster.conf:每个节点中有多种 Fence 方法


<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>
            <method name="SAN">
	      <device name="sanswitch1" port="11"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC">
              <device name="apc" port="2"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="12"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/> 
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC">
              <device name="apc" port="3"/>
            </method>
            <method name="SAN">
	      <device name="sanswitch1" port="13"/>
             </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/> 
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc" passwd="password_example"/>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


例 7.6. cluster.conf:Fencing,多路径多端口


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="11"/>
	      <device name="sanswitch2" port="11"/>
	    </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="11" action="on"/>
             <device name="sanswitch2" port="11" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="12"/>
	      <device name="sanswitch2" port="12"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="12" action="on"/>
             <device name="sanswitch2" port="12" action="on"/>
         </unfence
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="SAN-multi">
	      <device name="sanswitch1" port="13"/>
	      <device name="sanswitch2" port="13"/>
            </method>
         </fence>
         <unfence>
             <device name="sanswitch1" port="13" action="on"/>
             <device name="sanswitch2" port="13" action="on"/>
         </unfence
     </clusternode>
   </clusternodes>
   <fencedevices>
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch1" passwd="password_example"/> 
        <fencedevice agent="fence_sanbox2" ipaddr="san_ip_example"
login="login_example" name="sanswitch2" passwd="password_example"/> 
   </fencedevices>
   <rm>
   </rm>
</cluster>


例 7.7. cluster.conf:使用双电源 Fencing 节点


<cluster name="mycluster" config_version="3">
   <clusternodes>
     <clusternode name="node-01.example.com" nodeid="1">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="1"action="off"/>
              <device name="apc2" port="1"action="off"/>
              <device name="apc1" port="1"action="on"/>
              <device name="apc2" port="1"action="on"/>
             </method>
         </fence>
     </clusternode>
     <clusternode name="node-02.example.com" nodeid="2">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="2"action="off"/>
              <device name="apc2" port="2"action="off"/>
              <device name="apc1" port="2"action="on"/>
              <device name="apc2" port="2"action="on"/>
            </method>
         </fence>
     </clusternode>
     <clusternode name="node-03.example.com" nodeid="3">
         <fence>
            <method name="APC-dual">
              <device name="apc1" port="3"action="off"/>
              <device name="apc2" port="3"action="off"/>
              <device name="apc1" port="3"action="on"/>
              <device name="apc2" port="3"action="on"/>
            </method>
         </fence>
     </clusternode>
   </clusternodes>
   <fencedevices>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc1" passwd="password_example"/>
       <fencedevice agent="fence_apc" ipaddr="apc_ip_example" login="login_example" name="apc2" passwd="password_example"/>
   </fencedevices>
   <rm>
   </rm>
</cluster>


当使用电源切换 fence 使用双电源的节点时,必须告知代理在恢复两个电源端口前关闭两个电源端口。默认代理开关行为将导致永远无法在该节点完全禁用该电源。