在CentOS 7上具有Pacemaker,Corosync和DRBD的主动/被动群集
该系列将介绍Pacemaker,Corosync,Apache,DRBD和VMware STONITH代理的安装和配置。
Pacemaker Fencing代理
对于高可用性,防护在计算机群集中是一个非常重要的概念。
不幸的是,鉴于围列不能为用户提供可见的服务,因此通常被忽略。
防护有两种:资源级和节点级。
节点级别的防护可确保节点根本不运行任何资源。
这是我们将在本文中使用的防护方法。
只需使用vCentre重新启动该节点即可。
请注意,节点级别的防护配置在很大程度上取决于环境。
常用的STONITH设备包括远程管理服务,如Dell DRAC和HP iLO(熄灯设备),不间断电源(UPS),Knife 片控制设备。
STONITH(射击头中的另一个节点)是Pacemaker的防护措施。
可用的Fencing代理
要查看哪些软件包可用于防护,请运行以下命令:
[pcmk01]# yum search fence
我们应该列出列出的几十个代理。
APC Fencing 代理
对于那些拥有APC网络电源开关的用户而言,fence_apc隔离代理可能是最好的选择。
它通过telnet/ssh登录设备并重新启动指定的插座。
尽管本文不介绍这种配置,但是APC UPS设备是常用的,因此值得一提。
Fencing Agent for VMware
在VMware平台上运行虚拟机时,我们将使用vmware_fence_soap防护设备:
[pcmk01]# yum search fence-|grep -i vmware fence-agents-vmware-soap.x86_64 : Fence agent for VMWare with SOAP API v4.1+
确保将软件包安装在所有群集节点上:
[ALL]# yum install -y fence-agents-vmware-soap
防护代理脚本
通常,我们必须找到正确的STONITH代理程序脚本,但是,在我们的照顾下,应该只有一个可用的fence代理程序:
[pcmk01]# pcs stonith list fence_vmware_soap - Fence agent for VMWare over SOAP API
查找与设备关联的参数:
[pcmk01]# pcs stonith describe fence_vmware_soap
列出必需参数总是很方便的:
[pcmk01]# pcs stonith describe fence_vmware_soap|grep required port (required): Physical plug number, name of virtual machine or UUID ipaddr (required): IP Address or Hostname action (required): Fencing Action login (required): Login Name
我们也可以检查设备的元数据:
[pcmk01]# stonith_admin -M -a fence_vmware_soap
对于此VMware防护设备的配置,我们需要使用最低权限的vCentre凭据。
获得凭据后,我们可以获取VMware上可用的服务器列表:
[pcmk01]# fence_vmware_soap --ip vcentre.local --ssl --ssl-insecure --action list \ --username="vcentre-account" --password="passwd" | grep pcmk vm-pcmk01,4224b9eb-579c-c0eb-0e85-794a3eee7d26 vm-pcmk02,42240e2f-31a2-3fc1-c4e7-8f22073587ae
其中:
- ip-是vCentre的IP地址或者主机名,
- 用户名-是vCentre用户名,
- 密码-是vCentre密码,
- 动作-是要使用的击剑动作,
- ssl-使用SSL连接,
- ssl-insecure-使用SSL连接而不验证fence设备的证书。
我们上面使用的vCentre帐户在VMware上具有“开机/关机”特权,并被允许访问我们在系列中使用的所有计算机。
配置防护(STONITH)
获取CIB的本地副本:
[pcmk01]# pcs cluster cib stonith_cfg
创建一个名为my_vcentre-fence的新STONITH资源:
[pcmk01]# pcs -f stonith_cfg stonith create my_vcentre-fence fence_vmware_soap \ ipaddr=vcentre.local ipport=443 ssl_insecure=1 inet4_only=1 \ login="vcentre-account" passwd="passwd" \ action=reboot \ pcmk_host_map="pcmk01-cr:vm-pcmk01;pcmk02-cr:vm-pcmk02" \ pcmk_host_check=static-list \ pcmk_host_list="vm-pcmk01,vm-pcmk02" \ power_wait=3 op monitor interval=60s
我们使用pcmk_host_map将主机名映射到不支持主机名的设备的端口号。
主机名应该是用于Corosync接口的主机名!确保pcmk_host_map包含corosync接口的名称。
否则,如果Corosync接口关闭,则可能会出现以下错误:
pcmk01 stonith-ng[23308]: notice: my_vcentre-fence can not fence (reboot) pcmk02-cr: static-list pcmk01 stonith-ng[23308]: notice: Couldn't find anyone to fence (reboot) pcmk02-cr with any device pcmk01 stonith-ng[23308]: error: Operation reboot of pcmk02-cr by for Hyman@theitroad: No such device pcmk01 crmd[23312]: notice: Initiating action 47: start my_vcentre-fence_start_0 on pcmk01-cr (local) pcmk01 crmd[23312]: notice: Stonith operation 6/50:46:0:bf22c892-cf13-44b2-8fc6-67d13c05f4d4: No such device (-19) pcmk01 crmd[23312]: notice: Stonith operation 6 for pcmk02-cr failed (No such device): aborting transition. pcmk01 crmd[23312]: notice: Transition aborted: Stonith failed (source=tengine_stonith_callback:695, 0) pcmk01 crmd[23312]: notice: Peer pcmk02-cr was not terminated (reboot) by for pcmk01-cr: No such device
启用STONITH并提交更改:
[pcmk01]# pcs -f stonith_cfg property set stonith-enabled=true [pcmk01]# pcs cluster cib-push stonith_cfg
检查STONITH状态并查看集群资源:
[pcmk01]# pcs stonith show my_vcentre-fence (stonith:fence_vmware_soap): Started pcmk01-cr
[pcmk01]# pcs status Cluster name: test_webcluster Last updated: Sun Dec 13 16:24:14 2014 Last change: Sun Dec 13 16:23:42 2014 by root via cibadmin on pcmk01-cr Stack: corosync Current DC: pcmk02-cr (version 1.1.13-10.el7-44eb2dd) - partition with quorum 2 nodes and 6 resources configured Online: [ pcmk01-cr pcmk02-cr ] Full list of resources: Resource Group: my_webresource my_VIP (ocf::heartbeat:IPaddr2): Started pcmk02-cr my_website (ocf::heartbeat:apache): Started pcmk02-cr Master/Slave Set: MyWebClone [my_webdata] Masters: [ pcmk02-cr ] Slaves: [ pcmk01-cr ] my_webfs (ocf::heartbeat:Filesystem): Started pcmk02-cr my_vcentre-fence (stonith:fence_vmware_soap): Started pcmk01-cr PCSD Status: pcmk01-cr: Online pcmk02-cr: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
测试Fencing
重新启动第二个群集节点,确保为此使用Corosync接口:
[pcmk01]# stonith_admin --reboot pcmk02-cr
我们还可以通过杀死pcmk01的Corosync接口并观察被围列的节点来对其进行测试:
[pcmk02]# tail -f /var/log/messages [pcmk01]# ifdown $(ip ro|grep "172\.16\.21"|awk '{print }')