使用heartbeat消除服务器单点

来源:互联网 发布:淘宝女装爆款 编辑:程序博客网 时间:2024/05/23 01:56

问题背景:

在系统中有一个数据收集服务(Facebook Scribe)的汇总节点,这个节点必须保证较高的可靠性。为了防止服务器DOWN掉影响整个数据收集流程,必须消除这个收集单点。并且数据发送方只信任汇总节点上的一个IP地址,我们的收集服务必须监听在这个IP地址上。由于这些限制,我们需要选择一种IP漂移机制来实现数据收集服务的单点消除;经过调研,我们最终选择了比较成熟的heartbeat来实现这种机制。


服务器系统环境:CentOS release 5.8 (Final)

服务器名:

aggr00 (主节点)

report (备用节点)


首先,我们必须在主节点和备用节点上都安装heartbeat软件:

yum install heartbeat

将heartbeat默认的配置文件拷贝到heartbeat的配置目录下:

cp /usr/share/doc/heartbeat-2.1.4/ha.cf /etc/ha.d/cp /usr/share/doc/heartbeat-2.1.4/haresources /etc/ha.d/cp /usr/share/doc/heartbeat-2.1.4/authkeys /etc/ha.d/


修改ha.cf


在ha.cf中找到以下的配置项,去掉注释符(#)即可:

#udpport 694#bcast eth0 # Linux

这样,你将使用UDP694端口来进行广播或单播通信;你将使用设备eth0来发送广播心跳,一般会使用绑定了内网IP地址的一块网卡,我这里的设置修改为eth1。当然,这里也可以写多个设备,例如:bcast eth0 eth1。


继续在ha.cf中找到以下配置项,并去掉其注释符号:keepalive, deadtime, initdead。它们默认的配置如下:

keepalive 2deadtime 30initdead 120

其中,initdead指定了在heartbeat后台进程启动之后,它会在等待120秒之后才会启动主节点上的资源,或者做一些备用节点上出现问题的设想;keepalive指定了heartbeat之间的秒数;deadtime则指定了备用节点30秒内没有收到主节点的心跳,则备用节点就认为主节点死掉了。


然后,我们在ha.cf中指明,主节点和备用节点,在ha.cf的最后一行加入:

node aggr00 report

至此,我们对ha.cf的修改已经结束了。


修改haresources

这个文件标明了主节点应该拥有的各种资源名。什么是资源?我们服务器的IP就是一个资源;我们监听在这个IP之上的服务也是资源!在这个目录下你会发现一堆资源:

/etc/ha.d/resource.d

IP漂移就是油其中的IPaddr来实现的!而我们Scribe的资源并没有在其中,所以我们按照规定的格式,将scribe也加入其中,以下是scribe资源脚本的内容:

#!/bin/bashlogger $0 called with $1case $1 in    start)        /usr/local/services/biutility/management start    ;;    stop)        /usr/local/services/biutility/management stop    ;;    status)        A=`/bin/netstat -ntlp | grep scribed`        if [ -z "$A" ]; then            echo "DOWN"        else            echo "Running"        fi    ;;esac

将这个保存到一个叫做scribe的文件中,将文件保存在/etc/ha.d/resource.d下,还有,别忘记加上执行权限。至此你已经描述了你的scribe资源,下面就需要将这些资源配置到haresources中了,打开haresources,在文件的最后追加以下两行:

aggr00 scribeaggr00 xxx.xxx.xxx.xxx

当然,其中的scribe就是我们刚刚加入的资源;后面的那个IP地址就是需要动态漂移的共享IP!


修改authkeys

在authkeys的最后添加如下:

auth 11 sha1 testlab

修改完之后,将配置目录下的所有文件和文件夹同步到备份节点上。至此所有的配置工作都已经完成。分别在主节点和备份节点上启动heartbeat后台服务:

 /etc/init.d/heartbeat start

然后,可以在主节点上通过ip addr 查看eth0应该多出了一个IP地址,这个IP地址就是我们在haresources中配置的xxx.xxx.xxx.xxx,如果关闭主节点上的heartbeat服务,则这个IP会在备份节点的eth0上出现,实现IP漂移。


原创粉丝点击