HA高可用集群

简介:

      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 

1
2
3
4
5
6
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

1
2
3
4
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

这里选择3 ,中间项,2是最好的,1是最差的,

然后chomd 600 authkeys

vim haresources

加入master 192.168.137.105/24/eth0:0 nginx     //这里的eth0:0是虚拟网卡,连接master和slave,又叫vip

先 > ha.cf 清空文件,然后

vim ha.cf

加入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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的情况差不多。




      本文转自YU文武貝 51CTO博客,原文链接:http://blog.51cto.com/linuxerxy/1719589,如需转载请自行联系原作者






相关文章
|
负载均衡 Dubbo Java
集群高可用二
集群与高可用相关介绍
105 0
集群高可用二
|
负载均衡
集群高可用一
集群与高可用相关介绍
116 0
集群高可用一
|
消息中间件 数据可视化 NoSQL
集群高可用四
集群与高可用相关介绍
161 0
集群高可用四
|
监控 网络协议 算法
高可用集群
20210816
219 0
高可用集群
|
应用服务中间件 nginx 网络安全
|
关系型数据库 MySQL 开发工具
|
存储 监控 Linux
|
监控 网络性能优化 负载均衡
|
应用服务中间件 测试技术 nginx

热门文章

最新文章