该文档环境:rhel6.3 x86_64系统,http://linux-ha.org/wiki/Download,下载的Heartbeat glue agents,其他情况不一定适用,可能会出现各种报错,有个agents下载下来需改名为agents.tar.gz,其他均为*.tar.bz2格式,bzip2 -d *.tar.bz2,然后tar -xvf *.tar即可解开

更新并下载软件包

yum install glib2-devel libtool-ltdl-devl net-snmp-devel bzip2-devel ncurses-devel openssl-devel libtool libxml2-devel gettext bison flex zlib-devel mailx which libxslt docbook-dtds docbook-style-xsl PyXML shadow-utils opensp autoconf automake libaio-devel libxslt-devel gcc make pkgconfig libxml2 libuuid-devel

yum update(否则heartbeat装完后启动会报glib相关错误,无从查起,升级后一定需要重启一下)

配置主机名

配置每个节点的/etc/hosts文件,保证两个节点内容一致,/etc/hosts文件内容如下:

192.168.180.196 zjumaster

192.168.180.197 zjuslave

添加用户和组

grouadd haclient
useradd -g haclient -M -s /sbin/nologin hacluster

安装clusterglue

cd Reusable-Cluster-Components-glue--glue-1.0.9
./autogen.sh
./configure LIBS='/lib64/libuuid.so.1'(32位的不用加64)
make
make  install

安装resourceagents

cd  ClusterLabs-resource-agents-b735277
./autogen.sh
./configure 
LIBS='/lib64/libuuid.so.1'(32位的不用加64)
make
make install

安装heartbeat

cd Heartbeat-3-0-7ea82377fa8
./ConfigureMe configure 
LIBS='/lib/libuuid.so.1'
gmake
make install
编译安装3.0.7,make时出错了
ucast.c: 在函数‘HB_make_send_sock’中:
ucast.c:468: 错误:与‘i’类型冲突
ucast.c:465: 附注:‘i’的上一个声明在此
ucast.c:502: 错误:在非结构或联合中请求成员‘ifr_ifrn’
ucast.c:508: 错误:在非结构或联合中请求成员‘ifr_ifrn’
ucast.c:513: 错误:在非结构或联合中请求成员‘ifr_ifrn’
解决办法:
Heartbeat-3-0-7e3a82377fa8/lib/plugins/HBcomm/ucast.c
这个文件貌似有问题,删除468行int i = 1;应该就能make了

配置heartbeat       

cp -a /usr/etc/ha.d /etc/
rm -fr /usr/etc/ha.d
ln -s /etc/ha.d /usr/etc
chkconfig add heartbeat
cp /usr/share/doc/haresources /etc/ha.d/
cp /usr/share/doc/authkeys /etc/ha.d
cp /usr/share/doc/ha.cf /etc/ha.d
chmod 600 /etc/ha.d/authkeys

修改配置文件

cd/etc/ha.d
vim authkeys:#修改验证方式
auth 1 
1 crc
#2 sha1 HI!
#3 md5 Hello!

vim ha.cf#配置HA

debugfile /var/log/ha-debug
logfile /var/log/ha-loglog
facility     
local0#心跳间隔
keepalive 2#死亡阀值
deadtime 30#警告时间
warntime 10#首次启动heartbeat,等待多久才启动主服务资源
initdead 60#连接端口
udpport 694#心跳线接口
#bcast   eth1
#主节点的网卡设备、备份机的心跳线接口IPucast eth0 10.11.16.170
auto_failback on
node smsmaster
node smsslave
ping 10.11.16.169
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster

vimharesources#配置资源

主节点的hostname vipresource1 [::arg1 ::arg2] resource2 [::arg1 ::arg2],例如本例中主节点

smsmaster IPaddr::180.153.153.27/32/eth2 smsresource.sh

定义heartbeat启动和关闭动作

详细启动和关闭动作可参考各节点/etc/ha.d/resource.d/smsresource.sh文件

主要是对start和stop方法去拿资源的设定

case $1 in
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                stop
                sleep 10
                start
        ;;
        *)
                echo "Usage: $0{start|stop|restart}"
esac


各个动作具体内容参考/opt/sms/scripts内各脚本内容

主节点:

启动

${route_start}#添加静态路由,定义联通通道仍然走180.153.154.17这个IP,把所有以180.153.153.29出去的包源IP地址改成180.153.153.27出去,把所有以180.153.154.17出去的包源IP地址改成180.153.154.17出去。
${gate_service_start}#启动行短网关,先判定行短网关的3个进程是否存在,如不存在则启动
${sms_exchange_start}#启动Exchange服务,先判定exchange进程是否存在,如不存在则启动
#${sms_phoneserver_start}#这里手机服务暂不做主备切换,故无需任何操作
${sms_mqmonitor_start}#启动mq监控服务,先判定mqmonitor进程是否存在,如不存在则启动
${sms_monitor_start}#启动系统监控服务:先判定monitor.sh进程是否存在,如不存在则启动monitor,当exchange、行短、mysql进程结束后会立即关闭当前节点heartbeat


关闭

${sms_monitor_stop}#停止系统监控服务
${sms_exchange_stop}#停止exchange服务
${route_stop}#删除启动时定义的静态路由
${gate_service_stop}#停止行短网关3个进程服务
#${sms_phoneserver_stop}#这里手机服务暂不做主备切换,故无需任何操作
${sms_mqmonitor_stop}#停止mq监控服务


备节点:

启动

${route_start}#添加静态路由,把所有以180.153.153.28出去的包源IP地址改成180.153.153.27出去,把所有以180.153.154.155出去的包源IP地址改成180.153.153.27出去。
${gate_service_start}#启动行短网关,先判定行短网关的3个进程是否存在,如不存在则启动
${sms_exchange_start}#启动Exchange服务,先判定exchange进程是否存在,如不存在则启动
#${sms_phoneserver_start}#这里手机服务暂不做主备切换,故无需任何操作
${sms_mqmonitor_start}#启动mq监控服务,先判定mqmonitor进程是否存在,如不存在则启动
${sms_monitor_start}#启动系统监控服务:先判定monitor.sh进程是否存在,如不存在则启动monitor,当exchange、行短、mysql进程结束后会立即关闭当前节点heartbeat


关闭

${sms_monitor_stop}#停止系统监控服务
${sms_exchange_stop}#停止exchange服务
${route_stop}#删除静态路由
${gate_service_stop}#停止行短网关服务
#${sms_phoneserver_stop}#这里手机服务暂不做主备切换,故无需任何操作
${sms_mqmonitor_stop}#停止mq监控服务


 最后service heartbeat 启动的时候报错

 /usr/lib/ocf/lib//heartbeat/ocf-shellfuncs,该文件找不到

做下软连接即可ln -s /usr/local/ha/usr/lib/ocf /usr/lib/ocf