基于OpenStack+Ceph搭建高可用的私有云(五)

安装配置Pacemaker cluster stack集群

Openstack官网使用开源的pacemaker cluster stack做为集群高可用资源管理软件。
详细介绍:https://docs.openstack.org/ja/ha-guide/controller-ha-pacemaker.html
1、安装pacemaker

在全部控制节点安装相关服务;
pacemaker:资源管理器(CRM),负责启动与停止服务,位于 HA 集群架构中资源管理、资源代理层
corosync:消息层组件(Messaging Layer),管理成员关系、消息与仲裁,为高可用环境中提供通讯服务,位于高可用集群架构的底层,为各节点(node)之间提供心跳信息;
resource-agents:资源代理,在节点上接收CRM的调度,对某一资源进行管理的工具,管理工具通常为脚本;
pcs:命令行工具集;
fence-agents:fencing 在一个节点不稳定或无答复时将其关闭,使其不会损坏集群的其它资源,其主要作用是消除脑裂
yum install pacemaker pcs corosync fence-agents resource-agents -y

2、构建集群

启动pcs服务,在全部控制节点执行
systemctl enable pcsd
systemctl start pcsd
修改集群管理员hacluster(默认生成)密码,在全部控制节点执行,以master1节点为例
echo pacemaker_pass | passwd --stdin hacluster
认证配置在任意节点操作;
节点认证,组建集群,需要采用上一步设置的password
pcs cluster auth master1 master2 master3 -u hacluster -p pacemaker_pass --force
创建并命名集群,在任意节点操作;
生成配置文件:/etc/corosync/corosync.conf
pcs cluster setup --force --name openstack-cluster-01 master1 master2 master3

3、启动集群

启动集群
pcs cluster start --all

设置集群开机启动
pcs cluster enable --all

查看集群状态,也可使用” crm_mon -1”命令;
“DC”:Designated Controller;
通过”cibadmin --query --scope nodes”可查看节点配置
pcs status cluster

查看corosync状态;
“corosync”表示一种底层状态等信息的同步方式
pcs status corosync

查看节点;
或:corosync-cmapctl runtime.totem.pg.mrp.srp.members
corosync-cmapctl | grep members

查看集群资源
pcs resource

或通过web访问任意控制节点:https://192.168.0.11:2224,
账号/密码(即构建集群时生成的密码):hacluster/pacemaker_pass

4、设置集群属性

在任意控制节点设置属性即可;
设置合适的输入处理历史记录及策略引擎生成的错误与警告,在troulbshoot时有用
pcs property set pe-warn-series-max=1000 \
pe-input-series-max=1000 \
pe-error-series-max=1000 

pcs property set default-resource-stickiness=100

pacemaker基于时间驱动的方式进行状态处理,” cluster-recheck-interval”默认定义某些pacemaker操作发生的事件间隔为15min,建议设置为5min或3min
pcs property set cluster-recheck-interval=5

corosync默认启用stonith,但stonith机制(通过ipmi或ssh关闭节点)并没有配置相应的stonith设备(通过“crm_verify -L -V”验证配置是否正确,没有输出即正确),此时pacemaker将拒绝启动任何资源;
在生产环境可根据情况灵活调整,验证环境下可关闭
pcs property set stonith-enabled=false

默认当有半数以上节点在线时,集群认为自己拥有法定人数,是“合法”的,满足公式:total_nodes < 2 * active_nodes;
以3个节点的集群计算,当故障2个节点时,集群状态不满足上述公式,此时集群即非法;当集群只有2个节点时,故障1个节点集群即非法,所谓的”双节点集群”就没有意义;
在实际生产环境中,做2节点集群,无法仲裁时,可选择忽略;做3节点集群,可根据对集群节点的高可用阀值灵活设置
pcs property set no-quorum-policy=ignore

v2的heartbeat为了支持多节点集群,提供了一种积分策略来控制各个资源在集群中各节点之间的切换策略;通过计算出各节点的的总分数,得分最高者将成为active状态来管理某个(或某组)资源;
默认每一个资源的初始分数(取全局参数default-resource-stickiness,通过"pcs property list --all"查看)是0,同时每一个资源在每次失败之后减掉的分数(取全局参数default-resource-failure-stickiness)也是0,此时一个资源不论失败多少次,heartbeat都只是执行restart操作,不会进行节点切换;
如果针对某一个资源设置初始分数”resource-stickiness“或"resource-failure-stickiness",则取单独设置的资源分数;
一般来说,resource-stickiness的值都是正数,resource-failure-stickiness的值都是负数;有一个特殊值是正无穷大(INFINITY)和负无穷大(-INFINITY),即"永远不切换"与"只要失败必须切换",是用来满足极端规则的简单配置项;
如果节点的分数为负,该节点在任何情况下都不会接管资源(冷备节点);如果某节点的分数大于当前运行该资源的节点的分数,heartbeat会做出切换动作,现在运行该资源的节点将释 放资源,分数高出的节点将接管该资源

pcs property list 只可查看修改后的属性值,参数”--all”可查看含默认值的全部属性值;
也可查看/var/lib/pacemaker/cib/cib.xml文件,或”pcs cluster cib”,或“cibadmin --query --scope crm_config”查看属性设置,” cibadmin --query --scope resources”查看资源配置
pcs property list

5、配置vip

在任意控制节点设置vip(resource_id属性)即可,命名即为“vip”;
ocf(standard属性):资源代理(resource agent)的一种,另有systemd,lsb,service等;
heartbeat:资源脚本的提供者(provider属性),ocf规范允许多个供应商提供同一资源代理,大多数ocf规范提供的资源代理都使用heartbeat作为provider;
IPaddr2:资源代理的名称(type属性),IPaddr2便是资源的type;
通过定义资源属性(standard:provider:type),定位”vip”资源对应的ra脚本位置;
centos系统中,符合ocf规范的ra脚本位于/usr/lib/ocf/resource.d/目录,目录下存放了全部的provider,每个provider目录下有多个type;
op:表示Operations
pcs resource create vip ocf:heartbeat:IPaddr2 ip=192.168.1.10 cidr_netmask=24 op monitor interval=30s

查看集群资源
pcs resource

通过”pcs resouce”查询,vip资源在controller01节点;
通过”ip a show”可查看vip
ip a show eth0

如果api区分admin/internal/public接口,对客户端只开放public接口,通常设置两个vip,如命名为:vip_management与vip_public;
建议是将vip_management与vip_public约束在1个节点
pcs constraint colocation add vip_management with vip_public

至此,Pacemaker cluster stack集群安装配置完成。

下一篇:安装配置Haproxy,敬请关注。

本文为原创内容,转载请注明作者+出处+原文链接,禁止商用、禁止修改内容,未经授权不得二次分发,违规必究。

如需联系作者,请联系rancel#stsoo.com(PS:将#替换为@)

发表评论