该文档环境: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