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服务