|
|
51CTO旗下网站
|
|
移动端

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

会话保持又称作粘滞会话(Sticky Sessions)。会话保持是指在负载均衡器上的一种机制,可以识别客户端与服务器之间交互过程的关连性,在作负载均衡的同时还保证一系列相关连的访问请求都会分配到一台机器上。

作者:老王谈运维来源:今日头条|2019-05-22 15:55

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

什么是会话保持?

会话保持又称作粘滞会话(Sticky Sessions)。会话保持是指在负载均衡器上的一种机制,可以识别客户端与服务器之间交互过程的关连性,在作负载均衡的同时还保证一系列相关连的访问请求都会分配到一台机器上。换句话讲,会话保持可使得来自同一IP的请求被转发到同一台后端服务器上。

为什么要会话保持?

确保在合适的情境下,将来自相同客户端的请求转发至后端相同的服务器进行处理。例如:你打开淘宝登录了个人账号,即使你浏览了再多的店铺宝贝,切换了很多的页面,用户名是不变的。如果服务器之间没有会话信息的同步机制,则其他服务器无法识别用户身份,造成用户在和应用系统发生交互时出现异常。

nginx+tomcat会话保持的方案有很多种,今天小编就同大家一起探讨下各种方案的优缺点,帮助大家选择出最适合自己业务的方案!

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

Nginx的ip_hash算法

Nginx中的ip_hash机制能够让某一客户端在相当长的一段时间内只访问固定的后端web服务器,会话就会得到保持。在某网站页面进行登录时,就不会在后端的web服务器之间跳来跳去,也不会出现登录一次的网站又提示重新登录的情况。

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

优点:

配置简单,在nginx.conf的upstream调度里增加一句ip_hash即可。

缺点:

1)nginx必须作为最前端的服务器,否则nginx无法获取到客户端准确的ip,以至不能根据ip作hash

2)如果nginx的后端还有其它负载均衡,将导致某个客户端的请求不能定位到同一台session应用服务器上

3)当后端tomcat宕机,用户session会丢失

适用场景:配置简单,利用hash函数解决session的问题,由于宕机导致session信息丢失,建议仅用于开发环境和测试环境。

另外,其它的负载均衡软件也有类似算法,比如LVS的sh算法,haproxy的source算法等

Tomcat集群的Session复制

tomcat的session复制分为两种,一种是全局式的(all-to-all),也就是Node实例的session发生变化之后,它会将这些变更复制到其他所有集群组的成员;另一种是局部式的,它会用到BackupManager、BackupManager实现只复制给一个Buckup Node,并且这个Node会部署相同的Web应用。

tomcat的session复制是基于IP组播(multicast)来完成的。简单的说就是需要进行集群的tomcat通过配置统一的组播IP和端口来确定一个集群组,当一个node的session发生变更的时候,它会向IP组播发送变更的数据,IP组播会将数据分发给所有组里的其他成员(node)。

官方配置方式如下图:

地址:http://tomcat.apache.org/tomcat-7.0-doc/cluster-howto.html

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

优点:

当后端tomcat宕机,用户session不丢失。

缺点:

1)使用组播将信息复制到多个tomcat节点,网络开销大

2)消耗更多内存和带宽

适用场景:tomcat官方推荐,集群比较小时采用此方案。

用缓存集中管理session

在单独的服务器或服务器集群上使用缓存技术,如Redis存储Session数据,集中管理所有的Session,所有的Web服务器都从这个存储介质中存取对应的Session,实现Session共享。

目前常用的Session集中管理方案有两种,一种是Memcache-Tomcat-Session,另一种是Spring Session。

Nginx+Tomcat会话保持N种方案,各有千秋!你选择对了吗?

优点:

1)可靠性高,减少Web服务器的资源开销

2)提高session数据安全性

缺点:

1)太依赖缓存服务器

2)需要额外的缓存服务器,成本也高

3)实现上有些复杂,配置较多

适用场景:Web服务器较多、要求高可用性的情况。

【编辑推荐】

  1. Nginx成为4月市占率最高的Web服务器
  2. 聊聊让面试官颤抖的Tomcat系统架构
  3. 高级运维篇:Docker构建Tomcat Web服务器与Tomcat如何优化
  4. 无服务器云安全:如何保护无服务器计算
  5. 懂点 Nginx 反向代理与负载均衡,是面试加分项没有之一
【责任编辑:武晓燕 TEL:(010)68476606】


点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Spring Boot 爬虫搜索轻松游

Spring Boot 爬虫搜索轻松游

全栈式开发之旅
共4章 | 美码师

30人订阅学习

Linux性能调优攻略

Linux性能调优攻略

性能调优规范
共15章 | 南非蚂蚁

146人订阅学习

VMware vSphere虚拟化常见故障

VMware vSphere虚拟化常见故障

搞定vSphere虚拟化
共18章 | 王春海

62人订阅学习

读 书 +更多

Visual Studio Team Systems软件工程实践

本书论述了软件开发价值增加的思维方式。这一思维方式构成了VSTS的基础,包括VSTS的指导思想,为什么这些指导思想会以某些方式表现,以及它...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客