HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务。



两个机器, 都是centos6.5,网卡eth1 ip如下:

bier   192.168.1.166

bier1  192.168.1.165


1. hostname 设置好,分别为bier  和 bier1 

2. 关闭防火墙 iptables -F;  getenforce

    关闭selinux: setenforce 0

3. vi /etc/hosts   // 增加内容如下:  

192.168.1.166 bier   

192.168.1.165 bier1  



4. 安装epel扩展源:

rpm -ivh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

5. 两个机器都安装heartbeat / libnet

yum  install -y heartbeat*   libnet  nginx


6.  主上(bier)配置

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

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

cd /etc/ha.d

vi  authkeys  //加入,口令,首位呼应

3

3 md5 Hello!


chmod 600 authkeys



vi  haresources  //加入

bier 192.168.1.10/24/eth1:0 nginx   



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

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2  #2秒检测一次是不是宕机

deadtime 30  #30秒检测一次是不是可以ping通

warntime 10   #记录日志,发生一个警告

initdead 60  #机器有时候需要重启预留60秒的时间出来

udpport 694    #启动一个端口通信

ucast eth1 192.168.1.165   #通信的ip

auto_failback on  #从接手了

node    bier

node    bier1

ping 192.168.1.1   #谁都去ping网关

respawn hacluster /usr/lib/heartbeat/ipfail   #监听服务,检测网络状况,宕机让他启动



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

cd /etc/ha.d/

scp  authkeys  ha.cf haresources   bier1:/etc/ha.d/  ==========从这个机器复制到别的机器


8. 到从上(bier1) 编辑ha.cf

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

ucast eth1 192.168.1.165 改为   ucast eth1 192.168.1.166  #改为对方的ip



9.  启动heartbeat : 

先主,后从/etc/init.d/heartbeat start 或者

service heartbeat start


日志 less /var/log/ha-log


10. 检查测试 

ifconfig 看是否有 eth1:0

ps aux |grep nginx  看是否有nginx进程


11.  测试1

主上故意禁ping

iptables -I INPUT -p icmp -j DROP


12. 测试2

主上停止heartbeat服务

service heartbeat stop 



参考文档: http://blog.chinaunix.net/uid-20749043-id-1878328.html