Corosync + Pacemaker + pcs 安装配置
以Centos 7为例说明安装配置过程
crmsh是管理pacemaker命令行工具,pcs是管理pacemaker + corosync设置工具
这里以pcs为例进行配置
1.设置主机名做好/etc/hosts解析
类似:
12.12.12.129 controller1
12.12.12.130 controller2
12.12.12.131 controller3
注意:后面将会用户vip,规划vip为12.12.12.200,后面会说明
2.安装pcs
$ yum install pcs #会自动依赖安装corosync和pacemaker
Make sure pcs is running and configured to start at boot time:
# systemctl enable pcsd
# systemctl start pcsd
3.为每台主机的hacluster用户设置密码:
# echo hapassword| passwd --stdin hacluster
4.使用该密码对将构成集群的节点进行身份验证:
# pcs cluster auth controller1 controller2 controller3 -u hacluster -p hapassword --force
注意:执行该步骤请检查selinux和防火墙设置
5.创建并命名集群,然后启动它:
# pcs cluster setup --force --name openstack-cluster controller1 controller2 controller3
# pcs cluster start --all
6.查看集群运行状态:
# pcs status
Cluster name: demo-cluster
Stack: corosync
Current DC: controller3 (version 1.1.15-11.el7_3.2-e174ec8) - partition with quorum
Last updated: Fri Jan 20 13:54:04 2017 Last change: Fri Jan 20 11:46:45 2017 by root via cibadmin on controller1
3 nodes and 4 resources configured
Online: [ controller1 controller2 controller3 ]
Full list of resources:
vip (ocf::heartbeat:IPaddr2): Started controller2
Clone Set: lb-haproxy-clone [lb-haproxy]
Started: [ controller2 ]
Stopped: [ controller1 controller3 ]
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
发现corosyc和pacemaker都是禁用状态。
7.启用开机自动启动:
# pcs cluster enable --all
controller1: Cluster Enabled
controller2: Cluster Enabled
controller3: Cluster Enabled
8.检查pacemaker状态,会发现类似如下错误日志:
# systemctl status pacemaker
error: Resource start-up disabled since no STONITH resources have been defined
error: Either configure some or disable STONITH with the stonith-enabled option
error: NOTE: Clusters with shared data need STONITH to ensure data integrity
主要是因为STONITH resources没有定义,这里没有STONITH设备,所以我们先关闭这个属性:
# pcs property set stonith-enabled=false
注意:另外由于集群选举需要超过法定票数的一半票数,所以必须至少三节点来做,而有的实验场景中
没有三节点环境,所以执行如下命令忽略quorum(法定票数)不能满足的集群状态检查(但实际上
不推荐这样做):
# pcs property set no-quorum-policy="ignore"
然后重启pacemaker服务:
# systemctl restart pacemaker
9.为资源指定默认黏性值,防止其他节点重启后,资源被抢夺而在此段时间内服务中断:
# pcs resource defaults resource-stickiness=100
10.设置集群的基本属性:
# pcs property set pe-warn-series-max=1000 pe-input-series-max=1000 pe-error-series-max=1000 cluster-recheck-interval=5min
11.配置vip
# pcs resource create vip ocf:heartbeat:IPaddr2 params ip="12.12.12.200" cidr_netmask="24" op monitor interval="30s"
12.将nginx添加为集群资源并确保vip只工作在活动节点上:
# pcs resource create webserver systemd:nginx
# pcs constraint order start vip then webserver kind=Optional
# pcs constraint colocation add webserver with vip
13.查看配置文件中生成的定义:
# pcs config
对于示例的这个ha,更好的做法是将haproxy加入到集群资源中,然后利用haproxy去做负载均衡转发,haproxy自身能剔除故障节点。
浙公网安备 33010602011771号