码迷,mamicode.com
首页 > 其他好文 > 详细

HA 高可用

时间:2015-08-29 17:12:52      阅读:410      评论:0      收藏:0      [点我收藏+]

标签:ha


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

技术分享 

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

试验准备:
两个机器, 都是centos6.5,网卡eth0 ip如下:

master   192.168.31.166
slave   192.168.31.100

还需要master 上设置一块流动IP 。

 (虚IP) eth0:1 192.168.31.80


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

1. 设置hostname ,分别为master  和 slave   

 hostname master ;bash
 hostname slave ;bash

2. 关闭防火墙 iptables -F;  

    关闭selinux: setenforce 0
3. vi /etc/hosts   // 增加内容如下:  

192.168.31.166 master
192.168.31.100 slave




4. 安装epel扩展源:
rpm -ivh  ‘http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm‘
5. 两个机器都安装heartbeat / libnet
yum  install -y heartbeat*   libnet  nginx

6.  主上(master)配置
cd /usr/share/doc/heartbeat-3.0.4/
cp  authkeys  ha.cf haresources   /etc/ha.d/
cd /etc/ha.d
vi  authkeys  

#auth 3 打开前面的#号 后面的 选择 3 就打开下面 3 前面的#

去掉 #3 md5 Hello!  前面的#号

chmod 600 authkeys


vi  haresources  //加入
master 192.168.31.80/24/eth0:0 nginx   


vi  ha.cf   //改为如下内容:

>ha.cf 清空ha.cf 文件,增加以下内容

debugfile /var/log/ha-debug 
#该文件保存heartbeat的调试信息

logfile /var/log/ha-log     
#heartbeat的日志文件

logfacility     local0  
#告诉heartbeat记录那些syslog 

keepalive 2 
#心跳的时间间隔,默认时间单位为秒

deadtime 30 
#超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。

warntime 10 
#超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。

initdead 60 
#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至
少为deadtime的两倍。

udpport 694  
#设置广播通信使用的端口,694为默认使用的端口号。
ucast eth0 192.168.31.100(slave的ip) 
#设置单播通信所使用的网络接口卡。组播的话设置为bcast

auto_failback on  
#heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从
节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。

node    master
node    slave
#haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
node-name  network-config  
其中node-name指定双机系统的主节点,取值必须匹配ha.cf文件中node选项设置的主机名中的一个,node选项设置的另一个主机名成为从节点
。
network-config用于网络设置,包括指定集群IP、子网掩码、广播地址等。resource-group用于设置heartbeat启动的服务,该服务最终由双机
系统通过集群IP对外提供。

ping 192.168.31.1(选择的是网关)  
#用来测试网络连接。

respawn hacluster /usr/lib/heartbeat/ipfail  
#指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常
用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。




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

8. 到从上(slave) 编辑ha.cf
vi  /etc/ha.d/ha.cf   //只需要更改一个地方
ucast eth0 192.168.31.100 改为   ucast eth0 192.168.31.166  

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

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


为了能明确的看出效果

在master 上添加

echo "111111111111111master" >/usr/share/nginx/html/index.html

在slave 上添加 

echo "22222222222222slave" >/usr/share/nginx/html/index.html


在浏览器上输入 192.168.31.80/index.html


11.  测试1
master 上故意禁ping
iptables -A INPUT -P ICMP -J DROP

在浏览器上输入 192.168.31.80/index.html


iptables -D INPUT -P ICMP -J DROP (去掉规则)

在浏览器上输入 192.168.31.80/index.html


12. 测试2
master 上停止heartbeat服务
service heartbeat stop 
在浏览器上输入 192.168.31.80/index.html


 



HA 高可用

标签:ha

原文地址:http://liuyusheng.blog.51cto.com/10570745/1689516

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!