HA高可用集群
HA即(high avaliable)高可用,又叫做双机热备,用于关键性业务,也就是有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。
下面,使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。
1、试验准备:
两台机器,都是64位centos6.9,网卡 IP如下:
HostA eth0 192.168.1.119
HostB eth1 192.168.1.120
HostA eth1 192.168.153.119
HostB eht2 192.168.153.120
虚拟IP:
192.168.1.122
2、准备部分:
关闭防火墙iptables -F
关闭selinux:setenforce 0
设置hosts:
192.168.1.119 HostA
192.168.1.120 HostB
3、安装heartbeat /libnet/nginx
yum install -y heartbeat* libnet nginx
4、主上(HostA)配置
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 md5 Hello!
chmod 600 authkeys
vi haresources //加入
HostA 192.168.1.121/24/eth0:0 nginx #配置虚拟IP
vi ha.cf //修改、增加如下内容
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2 #配置心跳检测间隔时间,单位秒
deadtime 30 #超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡
warntime 10 #超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中initdead 120 #重启等待时间,单位秒
udpport 694 #设置广播通信使用的端口,694为默认使用的端口号
ucast eth1 192.168.153.120 #设置对方机器心跳检测的网卡和对方IP
auto_failback on #主重启后,资源自动恢复给主
node HostA
node HostB
ping 192.168.153.1 #设置ping
respawn hacluster /usr/lib64/heartbeat/ipfail #ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接
5、从上(HostB)上配置
使用 rsync将A的三个文件拷贝到HostB上:
rsync -av ha.cf haresources authkeys HostB:/etc/ha.d/
修改haresouces文件:
HostA 192.168.1.121/24/eth1:0 nginx #因为HostB上第一个网卡是eth1,所以要更改成那个eth1,不更改会导致HostB无法定位到eth0网卡,而无法正常工作;
修改ha.cf文件:
ucast eth2 192.168.153.119 #设置机器心跳检测的网卡和对方IP
6、启动
在主从上启动heartbeat服务:
/etc/init.d/heartbeat start
7、测试
此时,两台机器进程情况如下,HostA中nginx正常启动,虚拟网卡eth0:0正常工作,而HostB中ngixn没有正常启动 ,虚拟网卡也没有工作。
在HostA上封掉PING包:
iptables -I OUTPUT -p icmp -j DROP
等候一段时间后,HostA上nginx进程销毁,eth0:0虚拟网卡消失,同时,HostB上启动nginx进程,出现eht1:0虚拟网卡,测试成功: