您的位置:首页 > 运维架构 > 网站架构

HA高可用集群

2015-12-04 15:16 507 查看
HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。实验用heartbeat做HA,nginx服务作为HA对应的服务。 准备俩台机子master和slave,系统环境均为64位centos6.5,网卡eth0的IP分别为192.168.137.101和192.168.137.110,并在两台机子上vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.101 master
192.168.137.110 slave
关闭防火墙,rpm -ivh  'http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm'安装epel扩展源,
yum  install -y heartbeat*   libnet  nginx安装heartbeat和nginx服务,
在master(主)上cd /usr/share/doc/heartbeat-3.0.4/,cp ha.cf authkeys haresources /etc/ha.d/ 复制这三个文件到/etc/ha.d下,cd /etc/ha.d/ ,
vim authkeys
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!
这里选择3 ,中间项,2是最好的,1是最差的,然后chomd 600 authkeysvim haresources加入master 192.168.137.105/24/eth0:0 nginx //这里的eth0:0是虚拟网卡,连接master和slave,又叫vip先 > ha.cf 清空文件,然后vim ha.cf加入
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility    local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.137.110
auto_failback on
node    master
node    slave
ping 192.168.137.1
respawn hacluster /usr/lib64/heartbeat/ipfail
这里要注意的是ucast eth0是从的IP,通过ping 192.168.137.1网关来判断主从是不是dead,还有一点respawn hacluster /usr/lib64/heartbeat/ipfail这是64位的路径,32位的应该是respawn hacluster /usr/lib/heartbeat/ipfail
scp authkeys ha.cf haresources slave:/etc/ha.d/ 若是没有scp可以yum install -y openssh*(俩台机子都要安装SCP),当然也可以用rsync。

在slave(从)上,
cd /etc/ha.d/
vim ha.cf
将 ucast eth0 192.168.137.110改为ucast eth0 192.168.137.101

测试HA:
service heartbeat start 启动heartbeat,先主再从顺序启动
ifconfig 或者ip add 查看是否多出eth0:0虚拟网卡
ps aux|grep nginx 查看主上是否有启动nginx服务
注意:仅是master上多出eth0:0和nginx服务,若是从上也多出这些服务,则HA不算成功(刚yum install nginx的时候可能会启动nginx,可以stop nginx和heartbeat,然后再启动heartbeat)
测试1
主上故意禁ping
iptables -I INPUT -p icmp -j DROP
可以看出当master不能ping通网关的时候,slave会马上开启eth0:0和nginx,当然我们可以在 /usr/share/nginx/html/下修改index.html文件,主上的echo "123master" > index.html,从上的echo "321slave" > index.html,这样就可以在web浏览器中输入eth0:0的IP http://192.168.137.105/
来测试nginx工作在哪一台机子上。
测试2
主上停止heartbeat服务
service heartbeat stop ,情况跟测试1的情况差不多。

本文出自 “echo xiayun” 博客,请务必保留此出处http://linuxerxy.blog.51cto.com/10707334/1719589
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: