HA为高可用集群,原理如图其中0.111是web1的eth0地址,0.158是web2的eth0地址,流动IP是外网访问IP,用户使用流动IP(VIP)来访问网站,而11.11,11.12是内网IP,可通过内网IP对网站同步减小压力
例子:把nginx作为HA服务,
准备两台Linux虚拟机CentOS6.5即可,修改hostname(方便记忆)master,slave。并分配IP地址(内网和外网),eth0和eth1(关闭虚拟机,添加物理网卡)
master:eth0:192.168.3.116
eth1:192.168.30.116
slave: eth0:192.168.3.125
eth1:192.168.30.125
cp主从的ifcfg-eth0 ifcfg-eth1,修改ifcfg-eth1,只需要下图即可
重启网络,service network restart,若发现启动不成功,则先停止NetworkManager服务,service NetworkManager stop。
以下为主从机上同样操作:
1,关闭防火墙,iptables selinux
2.在hosts中添加代理。vim /etc/hosts
192.168.3.116 master
192.168.3.125 slave
3.yum安装heartbeat服务,因为heartbeat在epel源
yum install -y epel-release或者rpm -ivh ‘http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm‘,
主从都要安装heartbeat,libnet,nginx服务,yum install -y heartbeat* libnet nginx(可编译安装,本例使用编译安装的nginx)
以下主从分开操作
主:安装完成,进入heartbeat目录cd /usr/share/doc/heartbeat-3.0.4/,把authkeys,ha.cf,haresources拷贝/etc/ha.d下cp authkeys ha.cf haresources /etc/ha.d/ cd /etc/ha.d
编辑authkeys
vi authkeys //加入或更改为auth 3
3 md5 Hello!
退出修改权限
chmod 600 authkeys
编辑ha.cf,清空并添加如下内容
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.30.125
auto_failback on
node master
node slave
ping 192.168.30.1
respawn hacluster /usr/lib/heartbeat/ipfail
其中ucast定义的是从的eth1地址,node分别为主从的hostname,其他含义见书P164。
编辑haresources,添加vip及nginx服务
master 192.168.3.110/24/eth0:0 nginx,master为主的hostname,192.168.3.110/24为VIP,后面是VIP对应的网卡名(自定义),后面为nginx服务(注:此时的nginx服务必须在/etc/init.d/下能自动启动nginx服务才行,创建启动nginx脚本参见lnmp搭建)。
把三个文件拷贝到从的ha.d目录下(scp命令:两台机子都要安装scp命令才行),在从上修改ha.cf中的ucast,值为主的eth1地址。
启动主从heartbeat,先主后从,等待一段时间,可查看主的ifconfig,是否有VIP的网卡名称及地址,以及使用ip add查看,并查看nginx服务是否启动ps aux |grep nginx,只用主上nginx服务是启动的。
测试:
在nginx目录下index.html文件下写入不同的内容,浏览器输入VIP查看内容
停止master的heartbeat服务,查看网页内容
测试脑裂
主和从上都down掉eth1网卡
ifdown eth1