作者:莫乂乂_465 | 来源:互联网 | 2013-06-24 11:16
由于机房只有一台反向代理服务器支撑其所有的业务,考虑到其服务器宕掉,后端所有服务均不可使用,因此会造成不必要的事故发生,为了使反向代理服务器能达到高可用性,特增加了一台从服务器,双机互相进行心跳检测,当主服务器宕掉或相关应用服务停掉,则从服务器自动接管,主服务器恢复时自动接管,从服务器不再进行托管,从而避免单点故障造成的损失。
目前最为流行的服务器高可用检测系统有Heartbeat、Keepalived。其中Heartbeat是基于主机或网络的服务的高可用方式;Keepalived的目的是模拟路由器的双机。至于其中选用哪一种方案,还得取决于你自己。几年前由于工作环境没有相关的设备支持,这些操作都是在虚拟机进行的,虽然试验成功,但没有在生产环境中派上用场的那种激动性。然而这次的所有操作都是按步骤在生产环境中实现出来。
下面是基于Linux Heartbeat的安装于实例演示:
1、主从服务器均要按照Heartbeat。
yum -y install heratbeat
2、主从服务器各均有两块网卡,一块网卡进行日常的互联网数据业务通信、一块进行心跳检测,经过heartbeat虚拟一个给予外界使用的公用ip(简称VIP)
vip-server1 eth0 192.168.0.1 eth1 10.2.5.1 心跳检测 VIP192.168.0.3
vip-server2 eth0 192.168.0.2 eth1 10.2.5.2 心跳检测 VIP192.168.0.3
主服务器:
#rpm -q heartbeat -d 找到heartbeat安装目录
#cp /usr/share/heartbeat-2.1.3/authkeys /etc/ha.d/
#cp /usr/share/heartbeat-2.1.3/ha.cf /etc/ha.d/
#cp /usr/share/heartbeat-2.1.3/haresources /etc/ha.d/
#cd /etc/ha.d/
#vi authkeys去掉注释auth 1 去掉注释1 crc
#chmod 600 authkeys 改变authkeys权限
#vi ha.cf 去掉注释deadtime 20 去掉注释warntime 5 去掉注释initdead 120 去掉注释udpport 694 去掉注释bcast eth1 心跳使用的网卡 去掉注释ucast eth1 (10.2.5.2) 从节点的的心跳网卡地址 去掉注释node vip-server1主节点的机器名 去掉注释node vip-server2从节点的机器名
#vi haresources找到#nod-name resource1行
在该行下添加
vip-server1 192.168.0.3 #主节点机器名 虚拟ip 启动服务器
#vi /etc/hosts 主从服务器均要修改
192.168.0.1 vip-server1 #eth0 10.2.5.1 server1 #eth1
192.168.0.2 vip-server2 #eth0 10.2.5.2 server2 #eth1
从服务器:
#sftp 192.168.0.1 登录主节点
#cd /etc/ha.d
#get authkeys
#get ha.cf
#get haresources
#bye
#cd /etc/ha.d
#vi ha.cf 修改ucast eth1 (10.2.5.1) 为主节点的的心跳网卡地址
heartbeat是通过/usr/share/heartbeat/hb_standby进行节点切换、/usr/share/heartbeat/hb_takeover顶替正在使用的节点,用户可以根据自身的应用是否正常来进行其节点的切换。例如
if[ -f /usr/local/nginx/logs/nginx.pid];
then /usr/share/heartbeat/hb_takeover
else /usr/share/heartbeat/hb_standby fi #这条shell脚本没测试啊,只是原理的梳理。。
到这里主从服务器都配置好了,值得注意的是heartbeat是基于udp端口694的,iptables要开启此端口,SElinux也最好关闭
主从服务器启动heartbeat,service heartbeat start,不出意外ok...