登录站点

用户名

密码

Heartbeat安装

热3已有 25 次阅读  2010-11-25 16:15   标签:  Heartbeat 
1. 简介
HeartBeat用于搭建双机热备环境,可以通过专门的心跳线来连接双机,也可以通过普通的网线来连接。
官方网站:http://www.linux-ha.org/HeartBeat
本文所提到试验环境为:
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
Linux s1.yejr.com 2.6.9-55.EL #1 Fri Apr 20 16:25:34 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux
heartbeat 2.1.3

2. 安装
2.1. 准备
本试验环境共有2个主机,其IP分别为:
drbd 主机列表 IP 地址 主机名
主机1(node1) 10.168.115.250 s1.yejr.com
主机2(node2) 10.168.115.251 s2.yejr.com

2.2. 安装
可以直接下载rpm包,或者自己下载源码包进行编译,在这里,我采用自己编译源码的方式。安装heartbeat前,需要先安装libnet包。

[root@s1.yejr.com ~]# tar zxf heartbeat-2.1.3.tar.gz
[root@s1.yejr.com ~]# cd heartbeat-2.1.3
[root@s1.yejr.com heartbeat-2.1.3]# ./configure
[root@s1.yejr.com heartbeat-2.1.3]# make
[root@s1.yejr.com heartbeat-2.1.3]# make install

同样地,在另一个主机上也是这么安装。

3. 配置
3.1. 编辑hertbeat主配置文件,2个主机上的内容一样。
[root@s1.yejr.com heartbeat-2.1.3]# vi /usr/local/etc/ha.d/ha.cf

## ha的日志文件记录位置。如没有该目录,则需要手动添加
#logfile /var/log/ha_log/ha-log.log
#logfacility local7
#debugfile /var/log/ha_log/ha-debug.log
##使用eth1做心跳监测
bcast eth1
##设定心跳(监测)时间时间为2秒
keepalive 1
warntime 3
deadtime 10
initdead 120
hopfudge 1

##使用udp端口694 进行心跳监测
udpport 694
auto_failback on
##节点1,必须要与 uname -n 指令得到的结果一致。
node s1.yejr.com
##节点2
node s2.yejr.com
##通过ping 网关来监测心跳是否正常。
ping 10.168.115.253 10.168.115.251 192.168.115.130
deadping 5
#指定和heartbeat一起启动、关闭的进程
respawn hacluster /usr/local/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster

从heartbeat的官方文档来看,目前的ping节点还没什么实际用途,只是用于检测节点的连通性,并不作为节点切换的真正依据。在将来的新版本中也许会这么做。

3.2. 编辑双机互联验证文件:authkeys
[root@s1.yejr.com heartbeat-2.1.3]# vi /usr/local/etc/ha.d/authkeys
auth 1
1 crc
[root@s1.yejr.com heartbeat-2.1.3]# chmod 600 /usr/local/etc/ha.d/authkeys



3.3. 编辑集群资源文件:haresources
[root@s1.yejr.com heartbeat-2.1.3]# vi /usr/local/etc/ha.d/haresources
#s1.yejr.com IPaddr::10.168.115.252 drbd
s1.yejr.com drbd

在这里,可以像第一种方式那样,指定优先节点为 s1.yejr.com,如果ha发现优先节点当掉了,则另一个节点会自动把ip改成 10.168.115.252,并且启动资源 drbd,即用以下方式启动:

/usr/local/etc/ha.d/resource.d/drbd start

当ha发现优先节点恢复正常后,就会通知另一个节点,关闭资源,切换回优先节点。这个时候节点2上会先执行以下命令关闭资源:

/usr/local/etc/ha.d/resource.d/drbd stop

然后,优先节点上执行以下命令重新启动资源:

/usr/local/etc/ha.d/resource.d/drbd start

haresources里指定的资源,可以是多个,启动时按照从左到右的顺序,关闭时则按照从右到左的顺序。

3.4. 编辑资源管理文件:drbd
[root@s1.yejr.com heartbeat-2.1.3]# vi /usr/local/etc/ha.d/resource.d/drbd
#!/bin/sh
case "$1" in
  start)
#声明为drbd的primary节点
        drbdadm primary db
#挂载文件系统
        mount /dev/drbd0 /data
#启动相关服务
        service mysql start
        ;;
  stop)
#上面操作的反向
        service mysql stop
        umount /dev/drbd0 /data
        drbdadm secondary db
        ;;esac
exit 0

启动和关闭heartbeat的方法很简单,如下:

/etc/init.d/hearbeat start

和

/etc/init.d/hearbeat stop

4. 测试
可以通过几种方式来模拟节点当掉:关闭网卡,iptables防火墙,当然了,也可以直接关机。由于ha.cf中指定是用bcast的方式来检测节点是否连通,因此采用iptables防火墙时,还需要把广播包给禁用了。

iptables -A input -m pkttype --pkt-type broadcast -j DROP

5. 后续
实际测试结果表明:如果采用myisam存储引擎,则在primary节点当掉的时候,总会丢失数据;而采用innodb存储引擎时,如果primary节点本身没有程序往本机写数据的话,那么基本上不会发生数据丢失;而如果primary节点本身有程序在写数据,则在当机瞬间,本机上的程序可能还会写入部分数据,而如果是其他主机程序连接过来的话,基本上不会发生丢数据的情况。
建议:在drbd+hb的环境中,最好是采用innodb存储引擎,并且设置innodb_flush_log_at_trx_commit = 1,这使得几乎每个提交的事务都能记录在 ib_logfile* 中,在 secondary 节点上能得到恢复,减小损失。


分享 举报

发表评论 评论 (1 个评论)

涂鸦板