天天看点

pacemaker + corosync 实现高可用

基础知识

1.pacemaker

pacemaker是一个开源的高可用资源管理器(CRM),位于HA集群架构中资源管理、资源代理(RA)这个层次,它不能提供底层心跳信息传递的功 能,要想与对方节点通信需要借助底层的心跳传递服务,将信息通告给对方。(作为通信层和提供关系管理服务,心跳引擎,检测心跳信息)

2.corosync

Corosync是集群管理套件的一部分,它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等

一、安装部署

1)安装软件包(server1和server4上都要安装)

yum install -y crmsh-1.2.6-0.rc2.2.1.x86_64.rpm pssh-2.3.1-2.1.x86_64.rpm
           
pacemaker + corosync 实现高可用

2)查看以及修改配置文件

rpm -ql corosync

pacemaker + corosync 实现高可用

修改配置文件(拷贝配置文件)

cp corosync.conf.example corosync.conf
vim corosync.conf
           

这里主要更改bindnetaddr(集群节点网络)

mcastaddr为多播地址,mcastport为多播端口,这里只需修改集群节点网络或者多播的其一即可。

pacemaker + corosync 实现高可用

添加模块:联动pcemaker服务

ver:0表示可自启动pacemaker服务

1表示不自启动pacemaker服务

这里设置0自启动。

pacemaker + corosync 实现高可用

3)因为集群节点的配置均相同,因此我么可以将server1上配置好的文件拷贝至server4节点上。

scp corosync.conf server4:/etc/corosync/
           
pacemaker + corosync 实现高可用

4)在server1和server4上开启服务

pacemaker + corosync 实现高可用

5)查看部署是否正确

两个节点上均执行如下命令进行校验,刚开始会报错

pacemaker + corosync 实现高可用

这里可先添加下面这条策略,就会没错了

pacemaker + corosync 实现高可用

执行crm命令进入资源管理器 --> help 查看命令

常用的命令有resource,configure,node,status。

pacemaker + corosync 实现高可用

status资源管理器查看集群的成员状态

pacemaker + corosync 实现高可用

configure进入到资源管理器的配置模式,show命令可查看corosync的配置信息

pacemaker + corosync 实现高可用

到这里集群的部署已经完毕,接下来就是给集群添加相应的服务

二、添加服务

1)添加简单的ip服务

crm(live)configure# primitive vip ocf:heartbeat:IPaddr2 params ip=172.25.96.100 cidr_netmask=24 op monitor interval=30s
           

这条命令看似很长,其实都可以用补齐,只要记忆ocf表示集群服务脚本。

修改后还需要commit进行保存。

pacemaker + corosync 实现高可用

这里出现错误提示,显示是STONITH的问题,可先直接保存(注:若进行了上述第五步的操作,则这里不显示报错)。

查看服务是否正常,这里服务并没有启动,想到可能和上面添加IP服务提示的错误有关,尝试关闭STONITH,IP服务正常开启

pacemaker + corosync 实现高可用
pacemaker + corosync 实现高可用

2)测试健康检查功能

在server4上使用crm_mon 监控服务

pacemaker + corosync 实现高可用
pacemaker + corosync 实现高可用

现在vip工作在server1,尝试关闭server1的服务,server4上查看监控状态

pacemaker + corosync 实现高可用

server4上

pacemaker + corosync 实现高可用

重新开启server1的服务后,server1又自动添加到online内,恢复正常。

pacemaker + corosync 实现高可用
pacemaker + corosync 实现高可用

注:若关闭服务,则为OFFline;若是一个双结点集群,当有一端宕掉服务时,另一结点则会自动丢弃资源,也不再接管,因为一个结点不能构成集群。

所以两个节点的集群,应该设置no-quorum-policy为ignore忽略集群对结点数目的控制,如果一个节点宕掉,另一个节点仍能正常运行。

解决方法:设置no-quorum-policy=ignore

pacemaker + corosync 实现高可用

再次测试:

server1上宕掉服务

pacemaker + corosync 实现高可用

server4查看:

pacemaker + corosync 实现高可用

由server4接管资源,至此我们添加的ip资源就已经全部完成。

pacemaker + corosync 实现高可用

这样我们的pacemaker+corosync的高可用就部署完毕了,接下来的博客将在此基础上再实现haproxy,nginx的负载均衡和高可用。

继续阅读