Corosync+Pacemaker+DRBD+MySQL 实现高可用MySQL集群

本文介绍如何在CentOS 6.4 x86平台上,利用openaAIS/corosync、drbd等组件搭建MySQL双机高可用集群。包括配置MySQL服务、drbd集群资源、自动挂载服务、添加VIP资源等步骤。

前提:

  • 本配置共有两个测试节点,分别Node1和Node2,相的IP地址分别为10.33.100.77和10.33.100.99;
  • Node1和Node2两个节点已经配置好了基于openaAIS/corosync的集群;且Node1和Node2也已经配置好了Primary/Secondary模型的drbd设备/dev/drbd0,且对应的资源名称为mysql;corosync,packmaker,drbd,mysql安装配置的详细内容见此前的博文相关内容,这里不再赘述;
  • 系统为CentOS6.4,x86平台;

一、准备两个节点上的MySQL服务
1.Node1:解压通用二进制包,创建mysql用户和组;
这里写图片描述
2.将DRBD设置为主节点并挂载drbd设备将其作为mysql数据的存放目录,提供配置文件,初始化mysql
这里写图片描述
3.提供启动脚本并测试启动Mysql
这里写图片描述
4.创建MySQL数据库,以备以后步骤测试使用
这里写图片描述
5.将Node1上mysql压缩包,配置文件与启动脚本复制到Node2上,Node2上只需要解压,并创建好mysql用户及数据目录的挂载点,不再需要初始化数据库,通过drbd同步即可
这里写图片描述
6.关闭Node1上mysql并设置禁止开机自启
这里写图片描述
7.将Node2节点上的DRBD设置为主节点并挂载,启动并测试Node2上的mysql,通过查看数据目录可以发现数据已经同步
这里写图片描述
8.关闭Node2上mysql并设置禁止开机自动,至此,双节点上的mysql配置全部完成
这里写图片描述
二、配置drbd为Corosync双节点高可用集群中的资源,能够实现主从节点的自动切换
1.查看当前集群的配置信息,确保已经配置全局属性参数为两节点集群所适用:确保有stonith-enabled和no-quorum-policy出现且其值与如下输出信息中相同
这里写图片描述
2.将已经配置好的drbd设备/dev/drbd0定义为集群服务;
按照集群服务的要求,首先确保两个节点上的drbd服务已经停止,且不会随系统启动而自动启动:
这里写图片描述
3.配置drbd为集群资源:提供drbd的RA目前由OCF归类为linbit,其路径为/usr/lib/ocf/resource.d/linbit/drbd,可以使用如下命令来查看此RA及RA的meta信息:
这里写图片描述
这里写图片描述
这里写图片描述
注意: drbd需要同时运行在两个节点上,但只能有一个节点(primary/secondary模型)是Master,而另一个节点为Slave;因此,它是一种比较特殊的集群资源,其资源类型为多态(Multi-state)clone类型,即主机节点有Master和Slave之分,且要求服务刚启动时两个节点都处于slave状态。

4.查看当前集群运行状态(刚配置好会一直报错(unmanaged) FAILED ,重启一下两台机器不再报错):
这里写图片描述
这里写图片描述
由上面的信息可以看出此时的drbd服务的Primary节点为Node1,Secondary节点为Node2。
也可以使用如下命令验正当前主机是否已经成为mysql资源的Primary节点:
这里写图片描述
三、为Primary节点上的web资源创建自动挂载的集群服务
1.ms_mysqldrbd的Master节点即drbd服务mysql资源的Primary节点,此节点的设备/dev/drbd0可以挂载使用,且在某集群服务的应用当中也需要能够实现自动挂载。这里的mysql资源是mysql服务器的数据存放设备,其需要挂载至/mnt/SQLdata;此外,该自动挂载的集群资源需要运行于drbd服务的Master节点上,并且只能在drbd服务将某节点设置为Primary以后方可启动。因此,还需要为这个资源建立排列约束和顺序约束。
这里写图片描述
2.查看集群中资源的运行状态:由下面的信息可以发现,此时mysqlFS运行的节点和drbd服务的Primary节点均为Node1;
这里写图片描述
3.在Node1上删除此前在mysql上创建的测试数据库MySQL,而后模拟Node1节点故障;
这里写图片描述
4.由上面的信息可以推断出,Node1已经转入standby模式,其drbd服务已经停止,再故障转移后查看Node2的/mnt/SQLdata目录下是否存在这些文件;可以发现故障转移已经完成,所有资源已经正常转移至Node2
这里写图片描述
5.让Node1重新上线:
这里写图片描述
四、添加mysql集群服务
1.为mysql资源建立排列约束和顺序约束,mysqld与drbd文件系统要在同一节点上启动,要先挂载文件系统而后启动mysql服务
这里写图片描述
2.查看集群状态,所有资源都在Node2上启动
这里写图片描述
3.测试启动mysql服务,可以看到数据已经同步
这里写图片描述
五、增加VIP资源,实现mysql服务对外有一个统一的访问IP
这里写图片描述
六、测试mysql高可用集群
1.新增授权给测试机10.33.1.129
这里写图片描述
2.在测试机上远程测试一下
这里写图片描述
3.模拟故障,让node切换为从节点
这里写图片描述
4.再进行远程测试一下,可以看到资源已经成功转移到Node2上
这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值