在集群中部署多个服务器如何解决SESSION问题?

peter8015 2015-10-22 11:45:31
例如:2台centos server,各部署一个tomcat,访问时会出什么的问题?(比如session问题),有什么样的解决方案?如果用阿里云的ECS,如果能屏蔽这样的问题?谢谢!

...全文
6107 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
ychunyang 2017-01-18
  • 打赏
  • 举报
回复
一般用Nginx做反向代理,不建议用IPHASH,因为同一网段的请求很容造成同一台机器的大量负载,起不到负载均衡,Nginx的策略有很多种,建议用粘着(sticky)策略,不过需要在装Nginx时联合编译nginx-sticky-module-1.1.tar.gz,至于多台服务器的session共享问题,现在流行memcache集群,可以采用粘着或非粘着,无所谓。
ryuugu_rena 2017-01-11
  • 打赏
  • 举报
回复
用redis和memcache存放session
qq_28210551 2017-01-05
  • 打赏
  • 举报
回复
用数据库或者redis这类
skgary 2017-01-03
  • 打赏
  • 举报
回复
引用 12 楼 Yaphets_VJ 的回复:
[quote=引用 6 楼 skgary 的回复:] [quote=引用 楼主 zhb8015 的回复:] 例如:2台centos server,各部署一个tomcat,访问时会出什么的问题?(比如session问题),有什么样的解决方案?如果用阿里云的ECS,如果能屏蔽这样的问题?谢谢!
按cookie值进行转发即可。 不建议做session共享[/quote] 人家客户端禁用cookie 你怎么办[/quote] session 和cookie之间的关系 ,你还是了解一下再想怎么办。 我认为 你压根不用管客户端禁用session的事情。
Yaphets_VJ 2016-12-26
  • 打赏
  • 举报
回复
引用 6 楼 skgary 的回复:
[quote=引用 楼主 zhb8015 的回复:] 例如:2台centos server,各部署一个tomcat,访问时会出什么的问题?(比如session问题),有什么样的解决方案?如果用阿里云的ECS,如果能屏蔽这样的问题?谢谢!
按cookie值进行转发即可。 不建议做session共享[/quote] 人家客户端禁用cookie 你怎么办
reyoreyoreyo 2016-10-17
  • 打赏
  • 举报
回复
你也可以看看这个 关于 tomcat 集群中 session 共享的三种方法 http://www.cnblogs.com/interdrp/p/4056525.html
reyoreyoreyo 2016-10-17
  • 打赏
  • 举报
回复
关于spring session redis共享session的跨子域的处理 http://www.cnblogs.com/interdrp/p/5596563.html
sxiaobei 2016-07-06
  • 打赏
  • 举报
回复
实现session共享用gemfire现在12306就是这么做的
  • 打赏
  • 举报
回复
简单点的就是nginx upstream的时候,做hash,将不同请求发送到不同的web服务器处理。 最理想的是,搭建redis或者memcache,代码上在session上层做一层实现,看你是什么语言什么框架,具体可以搜索一下,跟具体使用的框架有关系,比如shiro本身结合了session,分布式session就必须扩展在shiro的session继承上。
0o心梦无痕o0 2016-03-31
  • 打赏
  • 举报
回复
这个是做负载均衡最基本的问题,有很多种解决方案, 第一个是用Session Sticky技术,保证有相同的SessionID请求都映射到同一台服务器上。 第二个是用Session Replication技术,就是同步你的Session信息,同一个sesssion信息每一个台服务器都保留数据。 第三个就是Session数据集中存储,常用的是memcache和redis的KV存储器。 总结起来就是将存放session机台服务器都能够看的见,摸得着。可以想想现实生活中遇到类似的问题是怎么解决的,程序架构中就是这样解决的。
hwbox 2016-01-15
  • 打赏
  • 举报
回复
一般都是用状态服务器吧,把session放到memcached里,如果量大就做memcached群集,可以在程序里自己做hash分散保存,也可以实时的根据memcached的压力调整放置位置,如把sessionID的头位置为memcached的服务器号什么的,如果再考虑memcached就可以考虑在程序中实现不命中就访问后备服务器的情况,复杂点的,你可以在程序里分散后备,自己做个类似raid5的冗余群集。我是用asp.net的,所以只要实现.net的session虚拟类就行了。linux下的不明白。
skgary 2016-01-15
  • 打赏
  • 举报
回复
引用 楼主 zhb8015 的回复:
例如:2台centos server,各部署一个tomcat,访问时会出什么的问题?(比如session问题),有什么样的解决方案?如果用阿里云的ECS,如果能屏蔽这样的问题?谢谢!
按cookie值进行转发即可。 不建议做session共享
加油馒头 2015-12-02
  • 打赏
  • 举报
回复
引用 楼主 zhb8015 的回复:
例如:2台centos server,各部署一个tomcat,访问时会出什么的问题?(比如session问题),有什么样的解决方案?如果用阿里云的ECS,如果能屏蔽这样的问题?谢谢!
楼主,用nginx分发,下面的每台机器都要安装tomcat?然后同时需要部署多次Web应用? nginx 这是分发IP的作用?
加油馒头 2015-12-02
  • 打赏
  • 举报
回复
引用 2 楼 sinat_27650399 的回复:
(1)tomcat做到无状态 (2)1做不到的话,那么就把session放在集中式缓存里面 redis 或者 memcache之类
现在是不是普遍按照2这么处理会话的?
  • 打赏
  • 举报
回复
(1)tomcat做到无状态 (2)1做不到的话,那么就把session放在集中式缓存里面 redis 或者 memcache之类
a402125249 2015-10-22
  • 打赏
  • 举报
回复
IPHASH

25,984

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧