先上示意图
Nginx做为反向代理服务器,负责后端的WEB应用服务的代理,即终端用户的Http请求,将由Nginx的负载均衡策略,转发到不同的Web服务器(Tomcat)上处理。
当然,在一些互联网应用中,Nginx也可以作为http服务器,专门负责静态资源的处理(html,css,js等),这样的部署架构虽然性能有所提升,但相对我们实际项目的部署能力、运维能力来说,增加了不少复杂度,容易发生一些莫名其妙的更新失败的错误,所以不建议在并发不高的项目中将静态资源单独部署到Nginx中。上述架构中,Nginx共部署了2台服务器,分为Mater(主)和Slave(备),两台服务器的Nginx配置一致,但因为是单活模式,所以同一时间,只有一台Nginx参与工作。主备模式是为了保证Nginx的高可用(HA)。
Nginx的高可用是通过Keepalived来保障的。Keepalived在每台Nginx服务器中都需部署。每台服务器的Keepalived负责监控本地的Nginx服务是否正常,一旦发现异常则会执行相应的处理脚本(sh),完成Nginx主备的切换。所有的Keepalived服务(主&备)均设置了同一个虚拟IP,终端用户即通过此虚拟IP访问WEB系统。这样一旦服务器端发生了故障切换,但对于终端用户而言,他们是感觉不到的,因为系统访问的IP地址(虚拟IP)并没有变(会有极为短暂的404错误或其他错误,约3秒钟,示系统访问量而定,刷新即可)。
Keepalived虚拟IP的工作原理为VRRP协议(请参考虚拟路由冗余协议),想了解工作原理的同学可自行百度Keepalived工作原理或VRRP协议内容。简而言之,Keepalived的虚拟IP类似于ARP欺骗,如果你经历或者了解过ARP攻击,相信不难理解。
具体步骤后续有时间再整理吧