负载均衡高可用

heartbeat2.x技术学习笔记[技术]

heartbeat1.x的技术已经比较熟悉了,只能两台主机,只能监控硬件状况,有限的功能确实很局限,对于2.x的技术来讲有了很好的扩展,最高支持16台主机,可以对于资源程序进行监控等等,具体细节可以去heartbeat的官网查看,我这里不就在赘述了,只把功能上的实现做个总结。

试验环境:vmware6.0 centos4.4 heartbeat2.1.3 mysql-5.1.28

linux01    ip:192.168.202.128
linux02    ip:192.168.202.129
VIP           ip:192.168.202.110

试验目的:1,linux01上的mysql服务down了,会在linux01上恢复 
                    2,linux01意外断电,vip和mysql服务迁移到linux02上

linux01和linux02上的配置除了ha.cf中ucast的配置要指向另一个节点的网卡ip,其他都是一样的,这里只给出linux01上的配置,另外一台请自行调整。

先是ha.cf的配置

debugfile /var/log/ha-debug
logfacility     local0
keepalive 2
deadtime 15
warntime 10
initdead 20
udpport 694
ucast eth0 192.168.202.129
auto_failback on
node    linux01
node    linux02
ping 192.168.202.2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster

crm yes

然后是haresources文件,但在2.x的模式下已经不在使用这个配置了,之所以这里我拿出来使用是,因为heartbeat提供了一个转换工具,可以根据这个文件生成cib.xml文件,所以我这里还是先编辑这个文件,稍后提供转换办法

linux01 192.168.202.110 mysqld

在最后就是authkeys文件,关于authkeys文件里的3中模式随意用哪种都行的,并把权限设置成600

auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

接下来使用转换软件生成cib.xml文件

/usr/lib/heartbeat/haresources2cib.py haresources

这就就会在/var/lib/heartbeat/crm下生成cib.xml文件了,这样两台机器都准备好后,就可以进行测试了

先在两台机器上启动heartbeat软件,执行/etc/init.d/heartbeat start

可以看到linux01上启动了vip和mysql,02上只是启动了

首先在linux01执行/etc/init.d/mysqld stop命令停止mysql服务,然后查看日志,用tail -f的方式,大概2分钟左右的时候,heartbeat就把mysql服务启动起来了,关于mysql服务的监控在cib.xml中可以配置的,默认的interval="120s"。可自行调整

然后来测试linux01 down机,ip和mysql服务自动切换问题

因为我使用的vmware虚拟机,所以关机非常的方便,直接关电就行了,一是观察linux02上的日志,二是观察进程ip服务,发现很快的vip和mysql服务就可以起来了

对于上面的应用效果,我还发现了两个问题,有可能是我对于2.x的理解不够,接下来我会继续深入研究,我的问题是

1,如果我用kill mysql进程的方法,linux01上mysql怎么也不会再被启动起来,这时可以通过手动删除pid文件的方式让heartbeat来自动启动donw掉的mysql,但同时又出现一个问题,就是如果真因为mysql意外终止,但heartbeat调用的mysqld的lsb脚本是不会判断出来的,所以,mysql服务始终不会启动。
2,heartbeat默认配置是监控自己的机器的资源,当资源故障是先尝试在本机恢复的。所以如果linux01上的mysql服务真的因为什么情况没法继续提供服务,heartbeat是用什么机制将服务和vip都迁移到linux02这台正常的机器上。

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *