一:实验环境
主nginx负载均衡器:192.168.10.63 (通过keepalived配置了VIP:192.168.10.188供外使用)
副nginx负载均衡器:192.168.10.200(通过keepalived配置了VIP:192.168.10.188供外使用)
拓扑图:
二:安装nginx和keepalived(用yum安装,在此处不编译安装了,用阿里云的yum仓库)
yum install nginx -y
yum install keepalived -y
三:配置nginx服务器:
master:192.168.10.63
cd /usr/share/nginx/html/
vi index.html
如图:
slave:192.168.10.200
cd /usr/share/nginx/html/
vi index.html
如图:
在浏览器里访问master和slave,检验配置是否正确:
四:配置keepalived服务器:
master的配置
cd /etc/keepalived/
cp keepalived.conf{,.bak} #备份配置文件,养成良好习惯,修改配置文件前一定要备份。
slave的配置:不多说,直接上图:
重启master,slave的keepalived,nginx。
master的vip 如图:
关闭master的keepalivd,vip会漂移到slave上去,master上的截图:
查看slave,次时vip已经漂移到salve上去了,salve上的截图:
说明keepalived的配置没有问题。
五:检验keepalived和nginx的高可用:
关闭master的nginx,自动切换到slave的nginx,如图:
master关闭nginx:
再次刷新网页,跳转到了slave的界面:
次时master的vip票已到slave上去了。master截图:
salve的截图:
vip为什么会漂移:
是因为调用了/carl/data/program/nginx/sbin/check_nginx_alive.sh,这个脚本判断nginx挂掉后(关闭),就killall keepalived,master上的keepalived就停止了,而keepalived上的是正常状态,所以vip就漂移到了slave。这个脚本内容如下:
#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
A=ps -C nginx --no-header |wc -l
if [ $A -eq 0 ]
then
echo ‘nginx server is died‘
killall keepalived
fi
截图如下:
总结:此实验室mater-slave实验,有nginx心跳脚本,只要nginx停止,该服务器上的keepalived就会killall keepalived 。master上的nginx停止后,master上的keepalived也会停止,vip漂移到slave上,vip对外的服务正常访问。但是:slave上的nginx停止后,是不会从salve上漂移到master上的。互为主从模式下,就要2个vip,次时DNS可以有2条A记录指向这2个VIP,又可以实现高可以,无论是挂哪个机器,都可以对外提供服务。
此次试验借鉴了其他博客的脚本,非常感谢他们!!
原文地址:http://blog.51cto.com/10044854/2126575