用阿里云的SLB rr分发,tomcat集群session为何同步不了

用阿里云的SLB rr分发,tomcat集群session为何同步不了,第1张

SLB是基于lvs来做的吧?你的算法是用rr来做,可能就不对了。rr是轮叫,最好用sh,可以做到源地址会话保持。也就是说,本来连接A的,就会一直连接A,不会跳到另一台去。这样,就不会有会话问题了。

在weblogicxml 中配置
<session-descriptor>
<session-param>
<param-name>TimeoutSecs</param-name>
<param-value>7200</param-value>
</session-param>
<session-param>
<param-name>CookieName</param-name>
<param-value>JSESSIONID1</param-value>
</session-param>
</session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>JSESSIONID1</param-value>
</session-param>
不同的应用设置不同的 CookieName 试试

通常情况下,Tomcat、Jetty等Servlet容器,会默认将Session保存在内存中。如果是单个服务器实例的应用,将Session保存在服务器内存中是一个非常好的方案。但是这种方案有一个缺点,就是不利于扩展。

1打开tomcat1\conf\ serverxml将<Cluster>部分的注释去掉。
再打开tomcat2\conf\ serverxml将<Cluster>部分的注释也去掉,
并将<Cluster>中<Receiver>的tcpListenPort的值改为4002。以避免与Tomcat1冲突。
2分别在2个tomcat的webapps\test中新建WEB-INF目录,在WEB-INF中添加webxml内容如下:
<distributable/>
主要是添加<distributable/>,distributable元素用来告诉servlet容器,程序将部署在分布式Web容器中。
重新启动tomcat1和tomcat2 访问
ps:
tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,
可以通过指令打开route add -net 224000 netmask 240000 dev eth0,如果需要服务器启动时即开通组播
需在/etc/sysconfig/static-routes文件内加入eht0 net 224000 netmask 240000。具体组播概念请查阅
CCNP相关内容。
可以通过netstate -g 来查看组播状态,也可以在route -e 命令中看到

Spring Session 是Spring家族中的一个子项目,它提供一组API和实现,用于管理用户的session信息,它把servlet容器实现的>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12635592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-27
下一篇 2023-05-27

发表评论

登录后才能评论

评论列表(0条)

保存