一:实验环境

主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,又可以实现高可以,无论是挂哪个机器,都可以对外提供服务。 此次试验借鉴了其他博客的脚本,非常感谢他们!!