Chinaunix首页 | 论坛 | 博客
  • 博客访问: 84698
  • 博文数量: 51
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 507
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-02 17:11
个人简介

还年轻,还有梦

文章分类

全部博文(51)

文章存档

2015年(51)

我的朋友

分类: LINUX

2015-06-04 20:45:42

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。
 

下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。

试验准备:
两个机器, 都是centos6.5,网卡eth0 ip如下:
aming   192.168.31.166
aming1  192.168.31.100
两个eth1 ip如下:      #配置文件可以拷eth0的,修改后启动网上ifup eht1,关闭网卡ifdown eht1
aming  192.168.21.166
aming1 192.168.21.100

下面操作1-5都是在两个机器上操作

1. hostname 设置好,分别为aming  和 aming1 
2. 关闭防火墙 iptables -F;  
    关闭selinux: setenforce 0
3. vi /etc/hosts   // 增加内容如下:  
192.168.31.166 aming   
192.168.31.100 aming1  


4. 安装epel扩展源:
rpm -ivh  ''
5. 两个机器都安装heartbeat / libnet
yum  install -y heartbeat*   libnet  nginx

6.  主上(aming)配置
cd /usr/share/doc/heartbeat-3.0.4/
cp  authkeys  ha.cf  haresources   /etc/ha.d/            #拷贝三个模版到/etc/ha.d/下
cd /etc/ha.d
vi  authkeys      #设置认证方式
3 md5 Hello!

chmod 600 authkeys        #设置权限

vi  haresources  //加入 主,流动IP,监听的服务
aming 192.168.31.110/24/eth0:0 nginx   


vi  ha.cf   //改为如下内容:
debugfile /var/log/ha-debug        #设定debug文件目录
logfile /var/log/ha-log        #设定日志文件目录
logfacility     local0
keepalive 2          #设定检查时间间隔为2s
deadtime 30        #设定死亡时间为30s
warntime 10        #设定告警时间为10s(10s以上没有收到对方的回应就报警
initdead 60          #设定初始化时间为60s
udpport 694        #启动udp694监听端口(该端口可以修改)
ucast eth1 192.168.21.100        #设定侦听的心跳线的接口和对应的对端接口的IP地址
auto_failback on                   #启动抢占模式(当主恢复正常后,备自动归还权限给主)
node    aming        #指定两个节点(主机名)
node    aming1
ping 192.168.21.1        #指定一个第三方的仲裁,判定谁挂了
respawn hacluster /usr/lib/heartbeat/ipfail        #使用这个脚本去侦听对方是否还活着(使用的是ICMP报文检测)


7.  把主上的三个配置拷贝到从上:
cd /etc/ha.d/
scp  authkeys  ha.cf haresources   aming1:/etc/ha.d/

8. 到从上(aming1) 编辑ha.cf
vi  /etc/ha.d/ha.cf   //只需要更改一个地方
ucast eth1 192.168.21.100 改为   ucast eth1 192.168.21.166       #这里需要改为对方的IP

9.  启动heartbeat : 
先主,后从
service heartbeat start

10. 检查测试 
ifconfig 看是否有 eth0:0
ps aux |grep nginx  看是否有nginx进程

11.  测试1
主上故意禁ping
iptables -I INPUT -p icmp -j DROP

12. 测试2
主上停止heartbeat服务
service heartbeat stop 
13. 测试脑裂
主和从上都down掉eth1网卡
ifdown eth1 

扩展学习

关于heartbeat配置文件参考文档: http://blog.chinaunix.net/uid-20749043-id-1878328.html
heartbeat和keepalived比较http://blog.csdn.net/yunhua_lee/article/details/9788433  http://zhengdl126.iteye.com/blog/1738012
DRBD工作原理和配置   http://502245466.blog.51cto.com/7559397/1298945


阅读(784) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~