Nginx + Tomcat + Redis 架构的负载均衡及会话保持

1、系统架构

Nginx + Tomcat + Redis 架构的负载均衡及会话保持

文章插图
 
2、服务器情况? 服务器 1:Nginx(80)、redis(6379)
? 服务器 2:Tomcat1(8080)、tomcat2(8080)
? 服务器 3:MySQL(3306)
3、Nginx 主要配置http { ...... upstream tomcat { ip_hash; server tomcat1:8080 max_fails=3 fail_timeout=15s; server tomcat2:8080 max_fails=3 fail_timeout=15s; } server { ...... location /tomcat { proxy_pass http://tomcat; } }}4、会话保持的几个方案说明1. nginx 的 ip_hash 算法实现原理就是同一个客户端的所有请求只调度给同一个后台 tomcat,这样会话就能保持在同一台服务器上 。
优点:配置最简单,在 nginx的 upstream 调度里加一句ip_hash 即可 。
缺点:后端 tomcat 宕机,用户 session 会丢失 。
2. tomcat 的 session 复制集群多台 tomcat 通过组播互相沟通会话信息,以保持不同tomcat 之间的会话一致性 。
优点:后端 tomcat 宕机,用户 session 不丢失 。
缺点:使用组播将信息复制到多个 tomcat 节点,网络开
销大 。
3. 缓存集中式管理 sessionsession 可以保存在文件、数据库和内存中,利用 redis 或 memcached 将 session 信息缓存,以达到会话信息不丢失,也不影响负载均衡的目的 。
优点:只要缓存服务器没问题,用户 session 不会丢,也没有额外的网络开销 。
缺点:太依赖缓存服务器,需要额外的缓存服务器,成本也高,当然要求维护人员技术水平也较高,适合于性能要求高的大型环境 。
5、测试功能【Nginx + Tomcat + Redis 架构的负载均衡及会话保持】1. 启动好相关服务;
2. 通过 nginx 登陆后台,并确定连接的是哪个 tomcat;
3. 关闭目前使用的 tomcat,刷新后台页面,确认是否存在掉线情况;
4. 启动已关闭的 tomcat,关闭另外一个 tomcat,确认是否还在登陆状态 。




    推荐阅读