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自身能剔除故障节点。

 

 

 

 

posted @ 2017-01-20 15:49  摸个鱼儿  阅读(1411)  评论(0)    收藏  举报