HA 高可用

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

wKioL1XhPQbSCtHxAADVJd4g94A599.jpg 

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

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

1
2
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   

1
2
  hostname master ;bash
  hostname slave ;bash

2. 关闭防火墙 iptables -F;  

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

1
2
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 文件,增加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
debugfile /var/log/ha-debug 
#该文件保存heartbeat的调试信息
 
logfile /var/log/ha-log     
#heartbeat的日志文件
 
logfacility     local 0  
#告诉heartbeat记录那些syslog 
 
keepalive  2 
#心跳的时间间隔,默认时间单位为秒
 
deadtime  30 
#超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
 
warntime  10 
#超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
 
initdead  60 
#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至
少为deadtime的两倍。
 
udpport  694  
#设置广播通信使用的端口, 694 为默认使用的端口号。
ucast eth 0  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:1
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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值