显示fence设备
pcs stonith show 命令允许系统管理员查看集群中已配置的fence 设备列表、使用的fencing 代理以及fence 设备的当前状态。
Fence 设备状态可以是 Started 或者 Stopped 。
如果一个fence设备的状态是Started,则该设备是可操作的;如果是 Stopped,则栅列设备无法运行。
# pcs stonith show fence_nodea (stonith:fence_rht): Started fence_nodeb (stonith:fence_rht): Started fence_nodec (stonith:fence_rht): Started fence_noded (stonith:fence_rht): Started
如果将集群节点指定为参数或者添加 -full 选项,则 pcs stonith show 命令将分别显示指定集群节点或者所有集群节点的配置选项。
# pcs stonith show fence_nodea Resource: fence_nodea (class=stonith type=fence_rht) Attributes: port=nodea pcmk_host_list=nodea.private.example.com Operations: monitor interval=60 (fence_nodea-monitor-interval-60s)
更换fence设备
可以使用 pcs stonith update fence_device_name 命令更改防护设备选项。
这允许系统管理员添加新的栅列设备选项或者更改现有的选项。
例如,fencing 设备fence_nodeb 当前是fence 虚拟机nodea 而不是nodeb。
这可以通过执行以下命令来纠正:
# pcs stonith update fence_nodeb port=nodeb
移除fence设备
在某些时候,可能需要从集群中移除一个防护设备。
这可能是因为相应的集群节点已从集群中永久删除,或者使用了不同的防护机制来防护该节点。
命令 pcs stonith delete fence_device_name 允许系统管理员从集群中删除 fencing 设备。
要从集群中删除防护设备 fence_noded,请执行:
# pcs stonith delete fence_noded Attempting to stop: fence_noded ... Stopped Deleting Resource - fence_noded
基于存储的fence设备
基于存储的栅列设备切断了被栅列节点的存储访问。
基于存储的隔离设备不会对受隔离的节点重新通电。
当配置一个基于存储的fence代理,比如fence_scsi,作为集群fence设备时,重要的是添加meta参数meta providers=unfencing让节点在重启节点和集群服务开始时自动取消fence允许节点重新加入集群。
# pcs stonith create myscsifence fence_scsi devices=/dev/sda meta provides=unfencing
创建fence设备
系统管理员可以使用 pcs stonith create 命令在集群中创建一个 fence 设备:
# pcs stonith create name fencing_agent parameters
该命令需要其他参数,例如防护代理和防护代理所需的防护参数。
Red Hat Enterprise Linux High Availability Add-on 附带的所有防护代理都有通用属性:
stonith-timeout
此设置定义了等待防护完成的时间(以秒为单位)。
默认值为 60 秒,在 stonith-timeout 集群属性中定义。
为 fencing 设备设置 stonith-timeout 会覆盖集群默认设置。
如果防护操作花费的时间超过此超时时间,集群将认为防护操作失败。
priority(优先级)
为单个节点定义多个fence设备时,需要对它们进行优先级排序。
集群首先尝试具有最高优先级的fence 设备。
如果省略此设置,则假定优先级为 0。
pcmk_host_map
此参数将主机名映射到需要映射的防护设备的防护设备端口,例如使用 fence_apc 防护代理的设备。
该列表是以分号分隔的主机名:端口映射列表,例如“nodea.example.com:1;nodeb.example.com:2”。
pcmk_host_check
此参数定义集群如何确定可由防护设备控制的机器。
可能的值为:
- dynamic-list :集群查询fencing设备。这仅在 fencing 设备可以返回端口列表并且端口名称与集群节点的主机名匹配时才会出现问题。
- static-list :集群使用 pcmk_host_list 提供的主机列表。除非还使用 pcmk_host_map,否则端口名称必须与集群节点的主机名称匹配。
- none :集群假设每个 fencing 设备都可以屏蔽集群中的每个节点。除非还使用 pcmk_host_map,否则端口名称必须与集群节点的主机名称匹配。
pcmk_host_check 的默认设置是 dynamic-list 。
pcmk_host_list
此参数提供可能由围列设备控制的机器的空格分隔列表。
如果 pcmk_host_check 设置为 static-list ,则需要它。
如果没有设置任何 pcmk_host_* 选项,集群将默认查询 fence 设备以获取端口列表。
如果端口名称与集群节点的主机名匹配,则该端口将用于保护该设备。
此外,可以通过指定显式 port="portname" 和 pcmk_host_list="hostname" 选项为单台机器创建防护设备。
注意:并非所有防护设备都支持列出用于 pcmk_host_check="dynamic-list" 的端口。
在这些情况下,始终需要使用端口选项。
除了前面列出的通用防护属性之外,还有特定于防护代理的属性。
命令 pcs stonith describe fence_agent 显示可以为特定 fence 设备设置的所有必需和可选参数:
# pcs stonith describe fence_apc Stonith options for: fence_apc ipaddr (required): IP Address or Host-name login (required): Login Name passwd: Login password or pass-phrase ...
在使用带有fence-virtd 的虚拟机fencing 的集群中,fence_xvm fencing 代理可以配置为集群节点的fence 设备。
要创建fence设备myfence,使用fence_xvm fencing代理来fence集群中已知主机名myvm.example.com的虚拟机myvm,执行:
# pcs stonith create myfence fence_xvm port="myvm" pcmk_host_list="myvm.example.com"
测试fence配置
有两种方法可以检查集群防护配置是否完全可操作:
- 通过使用命令 pcs stonith fence hostname。这将尝试隔离请求的节点。如果成功,集群可以屏蔽这个节点。
- 通过禁用节点上的网络,通过拔下网络电缆、关闭防火墙上的群集端口或者禁用整个网络堆栈。集群中的其他节点应该检测到机器出现故障,并对其进行隔离。这也将测试集群检测故障节点的能力。