在CentOS 7上具有Pacemaker,Corosync和DRBD的主动/被动群集

时间:2020-03-21 11:43:58  来源:igfitidea点击:

该系列将介绍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 }')