corosync pacemaker mysql replication 实现高可用
写这篇文章的时候,其实心里很不爽,国外VPN出了点问题,所以用度娘了,度娘搜出来的东西,80%是一样,有的名字不一样,但是内容还是一样的,corosync pacemaker mysql drbd 的高可用,我在想,如果不用drbd是不是就不能用corosync pacemaker实现高可用了?
对度娘的搜索算法,以及竞价排名,我只想说我去年买了个表。
一,mysql replication主从配置
请参考:mysql replication 主从(master-slave)同步
二,corosync pacemaker安装配置
请参考:corosync pacemaker Nginx 高可用 安装配置
上面二篇博客的/etc/hosts是定义的不一样的,以mysql replication为准,也就是masters,slave2。
在这里要注意,改过hosts的名称后,masters节点,要重新生成auth文件的。
[root@masters corosync]# corosync-keygen [root@masters corosync]# scp /etc/corosync/authkey root@slave2:/etc/corosync/ //如果有很多节点都要copy
各节点重启corosync。
三,masters节点,配置mysql crmsh
1,配置mysql crmsh
[root@masters tank]# crm crm(live)# configure crm(live)configure# crm(live)configure# property stonith-enabled=false crm(live)configure# property no-quorum-policy=ignore crm(live)configure# primitive mysqlip ocf:heartbeat:IPaddr params ip=192.168.10.231 op monitor interval=30s timeout=20s on-fail=restart crm(live)configure# primitive mysqlserver lsb:mysqld crm(live)configure# colocation mysql_col inf: mysqlserver mysqlip crm(live)configure# order mysql_after_ip mandatory: mysqlip mysqlserver crm(live)configure# verify crm(live)configure# commit crm(live)configure# show
在这里发现一个问题,在网上看了一些资料,关于monitor后时间配置,有几种版本
monitor interval=30 timeout=20
monitor interval="30" timeout="20"
monitor interval="30s" timeout="20s"
我没有验证这些写法的正确性,但是monitor interval=30s timeout=20s,这种写法肯定是正确的,我用的系统是CentOS 6.5 64位,并且在帮助文档中也是这种写法。
这是配置完成后的,通过show查看
2,检测mysql各节点状态
[root@masters tank]# crm status Last updated: Thu Apr 23 02:36:54 2015 Last change: Thu Apr 23 02:36:06 2015 Stack: classic openais (with plugin) Current DC: slave2 - partition with quorum Version: 1.1.11-97629de 5 Nodes configured, 2 expected votes 3 Resources configured Online: [ masters slave2 ] //二节点都要在线 OFFLINE: [ localhost.localdomain node1 node2 ] webip (ocf::heartbeat:IPaddr): Started masters Nginx_res (lsb:Nginx): Started masters mysqlip (ocf::heartbeat:IPaddr): Started slave2 mysqlserver (lsb:mysqld): Started slave2
如果online,节点不全的话,offline的机器上面,执行
[root@slave2 ~]# crm node online
四,测试
[tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果实际连接masters的话 [root@masters ~]# crm node standby //masters机器,将masters挂起 [tank@localhost ~]$ mysql -u test -p -h 192.168.10.231 //如果成功连接到slave2的话,说明测试成功
有三台mysql,一主二从,如果主服务器down机了,二台从服务器,能不能自动转成一主一从,并保持数据的完成性呢,MHA可以帮我们解决这问题。