1.1 方案简介 本方案使用heartbeat+mysql主主同步来实现mysql数据库的高可用, 当服务器或者master的heartbeat宕掉以后会自动切换到backup上,服务器或者master的heartbeat恢复以后可以自动切换回来,master继续提供服务。 1.2 方案优缺点 Ø 优点: 配置简单、,可配置主机恢复后是否切换回master。不存在单点故障。 Ø 缺点: 当mysql服务挂掉或者不可用的情况下不能进行自动切换,需要通过crm模式实现或者额外的脚本实现(比如shell脚本监测到master的mysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去)。 默认启动以及切换后的backup话mysql不会启动起来,因此这对于mysql复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者mysql之间不使用复制,而是用共享存储或者DRBD,这样能解决这个问题。 不方便扩展。 可能会发生脑裂问题。 1.3 方案架构图 1.4 适用场景 该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。 1.5 方案实战 1.5.1 实战环境介绍
1.5.2 Mysql的安装和配置 Mysql的安装和配置相对来讲非常简单 1.5.3 Mysql的主主同步配置 Mysql的主主同步这里也不做介绍了 1.5.4 Heardbeat的安装 Master和backup服务器都需要安装heardheat软件。下面两种安装方式任选其一。 Ø Rpm包的安装方式 yum -y install heartbeat-*
Ø 源代码编译安装方式 tar xzvf heartbeat-2.1.3.tar.gz cd heartbeat-2.1.3 ./configure Make make install
1.5.5 Heartbeat的配置 Hearbeat的配置主要包括三个配置文件,authkeys,ha.cf和haresources的配置,下面就分别来看! Ø Hosts文件的配置 需要在hosts文件中添加master和backup主机,加快节点间的通信 Master和backup的hosts节点添加的内容一样,我的配置添加如下内容: vim /etc/hosts #dbserver和puppet是我的master和backup的主机名 10.1.1.113 dbserver 10.1.1.75 puppet
Ø Authkerys的配置 这个文件用来配置密码认证方式,支持3种认证方式,crc,md5和sha1,从左到右安全性越来越高,消耗的资源也越多。因此如果heartbeat运行在安全的网路之上,比如私网,那么可以将验证方式设置成crc,master和backup的authkeys配置一样。我的authkeys文件配置如下: vim /etc/ha.d/authkeys auth 1 1 crc
Ø ha.cf的配置 master的ha.cf的配置 vim /etc/ha.d/ha.cf logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 30 warntime 10 initdead 60 udpport 694 ucast eth0 10.1.1.75 auto_failback on node dbserver node puppet ping 10.1.1.1 respawn hacluster /usr/lib64/heartbeat/ipfail
backup的ha.cf的配置 vim /etc/ha.d/ha.cf logfile /var/log/ha-log logfacility local0 keepalive 2 deadtime 30 warntime 10 initdead 60 udpport 694 ucast eth0 10.1.1.113 auto_failback on node dbserver node puppet ping 10.1.1.1 respawn hacluster /usr/lib64/heartbeat/ipfail
Ø haresources的配置 haresources用来设置master的主机名、虚拟IP、服务以及磁盘挂载等,master和backup的配置是一样的,下面的mysqld需要做成服务,放在/etc/rc.d/init.d/目录下,配置配置如下: vim /etc/ha.d/haresources dbserver 10.1.1.176/32/eth0 mysqld
1.5.6 Heartbeat的启动 在启动master和backup上的mysqld启动以后,启动master和backup的keepalived: /etc/rc.d/init.d/heartbeat start
并将此启动语句加入到master和backup的/etc/rc.local中去 1.5.7 方案测试 环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能: Ø 停掉master上的mysqld,看看是否切换(因为heartheat不检查服务的可用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。 Ø 停掉master的heartheat看看是否能正常切换。 Ø 停掉master的网络或者直接将master系统shutdown,看看能否正常切换。 Ø 启动master的heartbeat看看是否能正常切换回来。 Ø 重新启动master看看能否切换过程是否OK。 1.5.8 监控方案 因为heartbeat不监控资源的可用性以及切换后会将资源停止,所以需要加强对资源和heartbeat的监控,推荐采用nagios软件来进行可用性的监控。 |