HA 高可用

编程入门 行业动态 更新时间:2024-10-23 11:17:36

<a href=https://www.elefans.com/category/jswz/34/1752065.html style=HA 高可用"/>

HA 高可用

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

 

下面我们使用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  '.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

更多推荐

HA 高可用

本文发布于:2024-02-07 00:00:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1752037.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:HA

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!