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



流动IP又叫VIP,用来提供对外的ip,主启动时候在主上, 当机的时候就在从上。

网卡可以绑定多个ip,方法如下:

cd /etc/sysconfig/network-scripts/

cp ifcfg-eth0 ifcfg-eth0\:1

vim !$

DEVICE改成eth0:1

IPADDR改成192.168.11.109

HWADDR和UUID和GATEWAY和DNS都删除

保存退出

service network restart


准备工作:

两台机器

主:IP:192.168.11.160  mastes

从:IP:192.168.11.20 slave


关闭selinux。防火墙iptables


主和从都添加:

vim /etc/hosts  //添加

192.168.11.160 mastes

192.168.11.20 slave

保存退出


bash  //便于分辩哪个是主哪个是从



安装epel扩展源:

rpm -ivh  'http://www.lishiming.net/data/p_w_upload/forum/epel-release-6-8_32.noarch.rpm'

主从上都安装heartbeat / libnet

yum  install -y heartbeat*   libnet  nginx  //



主上:

cd /usr/share/doc/heartbeat-3.0.4/

cp  authkeys  ha.cf haresources   /etc/ha.d/

cd /etc/ha.d

vim authkeys  //主从之间通信的 //加入或更改为auth 3

3 md5 Hello!

保存退出


chmod 600 authkeys


vim haresources  //加入

master 192.168.11.110/24/eth0:0 nginx   //VIP为192.168.11.110,为nginx设置HA

保存退出


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

debugfile /var/log/ha-debug      //排障log

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

initdead 60

udpport 694

ucast eth0 192.168.11.20

auto_failback on

node    master

node    slave

ping 192.168.11.1 //仲裁地址

respawn hacluster /usr/lib/heartbeat/ipfail

保存退出


把主上的三个配置拷贝到从上:

cd /etc/ha.d/

scp authkeys ha.cf haresources slave:/etc/ha.d/


从上:

vim /etc/ha.d/ha.cf   //只需要更改一个地方

ucast eth0 192.168.11.20 改为   ucast eth0 192.168.11.160


先启动主再启动从:

service heartbeat start


10. 检查测试 

主上ifconfig 看是否有 eth0:0

主从上都测试ps aux |grep nginx  看是否有nginx进程(主应该有从没有)


主上:echo "11111111master" > /usr/share/nginx/html/index.html

网页访问192.168.11.110

从上:echo "11111111slave" > /usr/share/nginx/html/index.html


主上 iptables -A INPUT -p icpm -j DROP  //配置文档中我们测试对方是否存活的方法是ping,所以用这个方法测试

tail -f /var/log/ha-log

可以观察测试情况

网页访问192.168.11.110发现已经变成了slave


主上iptables -D INPUT -p icpm -j DROP

按上测试方法发现主上重新拉起nginx服务