一.体系架构
在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故障时,热备服务器可以瞬间将VIP自动切换过来,实际运行中体验只有2秒钟切换时间,DNS服务可以负责前端VIP的负载均衡。 nginx负责控制后端web服务器的负载均衡,将客户端的请求按照一定的算法转发给后端Real Server处理,而Real Server将响应直接返回给客户端。 nfs服务器做实时备份,给web服务器提供web界面。
二.简单原理
NGINX_MASTER、NGINX_BACKUP两台服务器均通过keepalived软件把ens33网卡绑上一个虚拟IP(VIP)地址192.168.1.40,此VIP当前由谁承载着服务就绑定在谁的ens32上,当NGINX_MASTER发生故障时,NGINX_BACKUP会通过/etc/keepalived/keepalived.conf文件中设置的心跳时间advert_int 1检查,无法获取NGINX_MASTER正常状态的话,NGINX_BACKUP会瞬间绑定VIP来接替nginx_master的工作,当NGINX_MASTER恢复后keepalived会通过priority参数判断优先权将虚拟VIP地址192.168.1.40重新绑定给NGINX_MASTER的ens33网卡。
使用此方案的优越性
1.实现了可弹性化的架构,在压力增大的时候可以临时添加web服务器添加到这个架构里面去; 2.upstream具有负载均衡能力,可以自动判断后端的机器,并且自动踢出不能正常提供服务的机器; 3.相对于lvs而言,正则分发和重定向更为灵活。而Keepalvied可保证单个nginx负载均衡器的有效性,避免单点故障; 4.用nginx做负载均衡,无需对后端的机器做任何改动。 5.nginx部署在docker容器里,即大量地节约开发、测试、部署的时间,又可以在出现故障时通过镜像快速恢复业务。
三、系统环境
两台负载机器安装:,nginx+docker+nfs 分别命名为:NGINX_MASTER,NGINX_BACKUP。 后端web服务器,可以是提供web服务的任何架构,分别命名为:WEB_1,WEB_2。 后端数据库机器可任意架构,只要能提供数据库服务即可。
服务器 | IP地址 | 安装软件 |
---|---|---|
NGINX_MASTER | 192.168.1.10 | nginx+keepalived |
NGINX_BACKUP | 192.168.1.20 | nginx+keepalived |
WEB_1 | 192.168.1.11 | docker+nginx |
WEB_2 | 192.168.1.13 | docker+nginx |
nfs_MASTER | 192.168.1.30 | nfs+rsync+inotify |
nfs_BACKUP | 192.168.1.10 | nfs+rsync+inotify |