所有示例都假设两个节点可通过其短名称和IP地址访问:
node1 - 192.168.1.1
node2 - 192.168.1.2
遵循的惯例是[ALL]# 表示需要在所有集群计算机上运行的命令,[ONE]#表示只需要在一个集群主机上运行的命令。
Pacemaker作为红帽 高可用性附加组件的一部分提供。在RHEL上试用它的最简单方法是从Scientific Linux 或CentOS存储库安装它 。
如果您已经在运行CentOS或Scientific Linux,则可以跳过此步骤。否则,要教机器在哪里找到CentOS包,运行:
[ALL] # cat < /etc/yum.repos.d/centos.repo
[centos-7-base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
enabled=1
EOF
接下来我们使用yum来安装起搏器和我们需要的一些其他必要的包:
[ALL] # yum install -y pacemaker pcs resource-agents
防火墙放行服务端口
[ALL] # firewall-cmd --permanent --add-service=high-availability
[ALL] # firewall-cmd --reload
RHEL7上支持的堆栈基于Corosync 2,因此Pacemaker也使用它。
首先确保pcs守护程序在每个节点上运行:
[ALL] # systemctl start pcsd.service
[ALL] # systemctl enable pcsd.service
然后我们设置pcs所需的身份验证。
[ALL] # echo hacluster | passwd --stdin hacluster
[ONE] # pcs cluster auth node1 node2 -u hacluster -p hacluster --force
我们现在创建一个集群并用一些节点填充它。请注意,名称不能超过15个字符(我们将使用’pacemaker1’)。
[ONE] # pcs cluster setup --force --name pacemaker1 node1 node2
[ONE] # pcs cluster start --all
有这么多设备和可能的拓扑结构,几乎不可能在这样的文档中包含Fencing。现在我们将禁用它。
[ONE] # pcs property set stonith-enabled=false
部署Pacemaker的最常见方法之一是采用双节点配置。但是,在这种情况下,仲裁作为一个概念是没有意义的(因为只有超过一半的节点可用时才有它),所以我们也会禁用它。
[ONE] # pcs property set no-quorum-policy=ignore
出于演示目的,我们将强制群集在单个故障后移动服务:
[ONE] # pcs resource defaults migration-threshold=1
让我们添加一个集群服务,我们将选择一个不需要任何配置,并在任何地方工作,使事情变得简单。这是命令:
[ONE] # pcs resource create my_first_svc Dummy op monitor interval=120s
“ my_first_svc ”是服务的名称。
“ ocf:pacemaker:Dummy ”告诉Pacemaker使用哪个脚本(Dummy - 一个有用的模板和类似指南的代理),它所在的命名空间(起搏器)以及它符合的标准(OCF)。
“ op monitor interval = 120s ”告诉Pacemaker通过调用代理的监视器操作每2分钟检查一次该服务的运行状况。
您现在应该能够看到正在运行的服务:
[ONE] # pcs status
要么
[ONE] # crm_mon -1
我们可以通过告诉服务直接停止(不告诉集群)来模拟错误:
[ONE] # crm_resource --resource my_first_svc --force-stop
如果现在以交互模式(默认值)运行crm_mon,您应该看到(在2分钟的监视间隔内)群集通知my_first_svc失败并将其移动到另一个节点。