配置冗余防护
当单个节点有多个围列设备可用时,以分层方法配置它们会很有用;例如,始终尝试使用联网电源板进行围列,但如果失败,并且仅当失败时,才使用内置管理卡围列节点。
这种类型的冗余围列可以使用围列级别来实现。
防护级别按顺序编号,从 1 开始。
当一个节点需要被防护时,stonithd 将首先尝试使用级别 1 中的所有防护设备,按照它们添加到级别的顺序。
如果任何 fencing 设备出现故障,处理将停止,stonithd 将继续尝试在级别 2 中配置的 fence 设备,依此类推。
创建fence级别
可以使用命令 pcs stonith level add [level] [node] [devices] 创建围列级别。
例如,要为nodea 创建两个fencing 级别,级别1 使用fence 设备fence_nodea_ilo,级别2 使用fence 设备fence_nodea_apc,可以使用以下命令。
# pcs stonith level add 1 nodea fence_nodea_ilo # pcs stonith level add 2 nodea fence_nodea_apc
管理fence水平
可以使用 pcs status 和 pcs stonith level 命令查看围列级别配置。
要删除围列级别或者围列级别的单个节点或者设备,可以使用 pcs stonith level remove 命令(带有适当的选项)。
pcs stonith level clear 可用于清除所有围列级别或者从所有围列级别移除节点或者围列设备。
为多个电源配置防护
需要仔细配置的常见设置是对具有冗余电源的节点进行电源防护。
在防护过程中的某个地方,必须断开两个电源的电源才能防护节点。
简单地创建一个没有另外选项的围列设备并将它们都添加到围列级别是行不通的,因为电源围列的默认操作是重新启动。
这将导致以下顺序:
- 重启电源A
- 重启电源B
在前面的示例中,机器从未完全断电。
这可以通过将重新启动操作更改为单独的关闭和开启操作来看到:
- 电源 A 关闭
- 电源 A 打开
- 电源 B 关闭
- 电源 B 打开
为了确保机器完全重新启动,需要做的是:
- 电源 A 关闭
- 电源 B 关闭
- 电源 A 打开
- 电源 B 打开
为了使用 pcs 进行配置,需要创建四个单独的围列设备:
# pcs stonith create nodel_portl_off fence_apc port=l pcmk_reboot_action="off" # pcs stonith create node1_port2_off fence_apc port=2 pcmk_reboot_action="off" # pcs stonith create nodel_port1_on fence_apc port=l pcmk_reboot_action="on" # pcs stonith create node1_port2_on fence_apc port=2 pcmk_reboot_action="on"
通过这四个显式关闭和打开操作,可以为此节点创建防护级别:
# pcs stonith level add 1 nodea nodea._port1_off,nodea_port2_off,nodea_portl_on,nodea_port2_on
栅列设备添加到关卡的顺序就是它们将被执行的顺序。
在围列设备序列中的某个地方,为了围列机器,应该完全断电。
如果所有单独的防护操作成功完成,集群将假定节点已被正确防护,即使电源从未完全断电。
添加更多设备
如果设备在创建后需要添加到围列级别,例如,添加另外的电源时,则需要删除并重新创建整个级别。
这是因为在创建时设备之间的排序被保留,但不能保证之后添加的设备。
配置存储防护
接下来,要将防护配置为对节点重新通电(或者简单地将其关闭),还可以将防护配置为从共享存储中关闭故障节点。
这称为存储防护或者 SCSI 防护。
SCSI 防护是在 Red Hat Enterprise Linux High Availability Add-on 中使用 fence_scsi fencing 代理实现的。
当使用fence_scsi 时,每当集群节点启动时,它都会使用密钥为自己创建一个SCSI 预留。
一旦将一个或者多个密钥添加到 SCSI 设备,它将只允许来自客户端使用配置的密钥之一进行通信。
当节点需要与存储隔离时,其他节点之一将从故障节点中删除对密钥的保留,从而导致故障节点从存储中切断。
大多数 SCSI 设备(包括光纤通道设备)都支持 SCSI 预留,包括 Red Hat Enterprise Linux 7 附带的 Linux iSCSI 目标。
创建 fence_scsi fence设备
创建fence_scsi 围列设备与创建任何其他围列设备几乎相同,但必须使用许多选项:
devices=devicenodefullpath
要防护的设备的逗号分隔列表。
由于共享存储设备可能会在不同节点上使用不同的设备名称,因此强烈建议使用 /dev/disk/by-id/ 下的符号链接。pcmk_monitor_action=metadata
此选项告诉 stonithd 守护进程在尝试监视 fence 设备时请求默认的 fence_scsi 元数据操作,而不是 monitor 操作。
这对于解决fence_scsi 防护代理中的开放错误是必要的。pcmk_host_list="FQDN ..."
此选项列出了可以使用防护设备的节点。
它通常应该包括可以使用共享存储设备的所有节点。pcmk_reboot_action="off"
stonithd 的默认操作是重启:关闭某些东西,然后再打开。
在存储防护的情况下,这 1 秒次优,因为被防护的节点将保持通电状态。meta provides="unfencing"
当节点使用电源循环被隔离时,重新加入集群的行为会自动将主机标记为不受隔离。
使用存储栅列,这不会发生,需要一个单独的选项来告诉集群,当节点重新加入集群时,它应该是 unfenced。