系统环境: rhel6 x86_64 iptables and selinux disabled
主机: 192.168.122.119 server19.example.com
192.168.122.25 server25.example.com
所需的包:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm
以下步骤在server19和server25上实施:
[root@server19 kernel]# yum localinstall heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm ldirectord-3.9.2-1.2.x86_64.rpm -y
[root@server19 ha.d]# modprobe softdog
[root@server19 ha.d]# echo modprobe softdog >> /etc/rc.d/rc.local
[root@server19 ha.d]# echo `hostname` > /var/www/index.html
[root@server19 ha.d]# /etc/init.d/httpd stop
以下步骤在server19或server25上实施:
[root@server19 kernel]# cd /usr/share/doc/heartbeat-3.0.4/
[root@server19 heartbeat-3.0.4]# cp authkeys haresources ha.cf /etc/ha.d/
[root@server19 heartbeat-3.0.4]# cd /etc/ha.d/
#配置/etc/ha.d/authkeys
[root@server19 ha.d]# vim authkeys
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello! (去掉注释)
[root@server19 ha.d]# chmod 600 authkeys
认证文件(/etc/ha.d/authkeys),文件的权限必须是 600
#配置/etc/ha.d/ha.cf
[root@server19 ha.d]# vim ha.cf
debugfile /var/log/ha-debug (去掉注释)
调试日志文件文件,取默认值
logfile /var/log/ha-log (去掉注释)
系统运行日志文件,取默认值
logfacility local0
日志等级,取默认值
keepalive 2(去掉注释)
心跳频率,自己设定。1:表示 1 秒;200ms:表示 200 毫秒
deadtime 30(去掉注释)
节点死亡时间阀值,就是从节点在过了 30 后还没有收到心跳就认为主节点死亡,自己设定
warntime 10 (去掉注释)
发出警告时间,自己设定
initdead 120 (去掉注释)
守护进程首次启动后应该等待 120 秒后再启动主服务器上的资源
udpport 694 (去掉注释)
心跳信息传递的 udp 端口,使用端口 694 进行 bcast 和 ucast 通信,取默认值
bcast eth0 (去掉注释)
采用 udp 广播播来通知心跳
auto_failback on
当主节点恢复后,是否自动切回
watchdog /dev/watchdog (去掉注释)
watchdog 能让系统在出现故障 1 分钟后重启该机器,这个功能可以帮助服务器在确实停止心 跳后能够重新恢复心跳
node server19.example.com
主节点名称,与 uname --n 保持一致.排在第一的默认为主节点,所以不要搞措顺序
node server25.example.com
副节点名称,与 uname --n 保持一致
ping 192.168.122.1
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
默认 heartbeat 并不检测除本身之外的其他任何服务,也不检测网络状况。 所以当网络中断时,并不会进行 Load Balancer 和 Backup 之间的切换。 可以通过 ipfail 插件,设置'ping nodes'来解决这一问题,但不能使用一个集群节点作为 ping 的节点.
#配置/etc/ha.d/haresources
[root@server19 ha.d]# vim haresources
server19.example.com Ipaddr::192.168.122.178/24/eth0 httpd
注:192.168.122.178为虚拟IP.
这个文件中定义了实现集群所需的各个软件的启动脚本,这些脚本必须放在/etc/init.d 或者 /etc/ha.d/resource.d 目录里 IPaddr 的作用是启动 Virutal IP,它是 HeartBeart 自带的一个脚本.
[root@server19 ha.d]# scp authkeys ha.cf haresources root@192.168.122.25:/etc/ha.d/
以下步骤在server19和server25上实施:
[root@server19 ha.d]# /etc/init.d/heartbeat start
可执行tail -f /var/log/ha-log分别查看日志,看是否有报错,服务正常的话server19 上多了个eth0:0接口,若没有出现, 请等待一会,再使用ifconfig查看,若还是没有eth0:0接口出现,检查配置文件是否正确! 若停止server19上的heartbeat服务,则server25会接管,并产生一个eth0:0接口!
测试:
1.访问虚拟IP:192.168.122.178可以看到发布的页面,且在服务运行的机子上执行ifconfig可以查看到eth0:0.(起初应该在server19上运行,因为server19为主服务器,server25为备用服务器)
2.将server19上的heartbeat关闭或者执行echo c > /proc/sysrq-trigger模拟内核崩溃,在server25上查看日志可看到服务由server25接管则表示配置成功.
注:若关闭apache服务,将无法访问,因为heartbeat没有对服务进行健康检查的功能.