服务器 2:Tomcat1(8080)、tomcat2(8080)
服务器 3:MySQL(3306)
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; } } }
实现原理就是同一个客户端的所有请求只调度给同一个后台 tomcat,这样会话就能保持在同一台服务器上。
优点:配置最简单,在 nginx的 upstream 调度里加一句ip_hash 即可。
缺点:后端 tomcat 宕机,用户 session 会丢失。
多台 tomcat 通过组播互相沟通会话信息,以保持不同tomcat 之间的会话一致性。
优点:后端 tomcat 宕机,用户 session 不丢失。
缺点:使用组播将信息复制到多个 tomcat 节点,网络开
销大。
session 可以保存在文件、数据库和内存中,利用 redis 或 memcached 将 session 信息缓存,以达到会话信息不丢失,也不影响负载均衡的目的。
优点:只要缓存服务器没问题,用户 session 不会丢,也没有额外的网络开销。
缺点:太依赖缓存服务器,需要额外的缓存服务器,成本也高,当然要求维护人员技术水平也较高,适合于性能要求高的大型环境。
1. 启动好相关服务;
2. 通过 nginx 登陆后台,并确定连接的是哪个 tomcat;
3. 关闭目前使用的 tomcat,刷新后台页面,确认是否存在掉线情况;
4. 启动已关闭的 tomcat,关闭另外一个 tomcat,确认是否还在登陆状态。