首页 > 应用开发 > IT综合 > cas 集群tomcat session组播复制
cas 集群tomcat session组播复制
这个方案相对比较简单容易测试,但是性能不太好,在生产应用当tomcat服务器数量不是很多的进候可以一试,如果多了就改为memcached-session-manager方式吧。
假设tomcat1:192.168.1.100:8080
tomcat2:192.168.1.101:8080
nginx 192.168.1.103:80 域名cas.test.com 进行负载均衡tomcat1,tomcat2
cas的组播集群修改步骤:
1.修改cas.properties中的host.name,这个值可以保证产生的ticket是全局唯一的 ;
2.修改web.xml 增加
3.ticket的外部存储,可以应用jpa,ehcache,memcache等方法参考相关的文章;
4.修改ticketGrantingTicketCookieGenerator.xml 文件中
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" />
为
p:cookieMaxAge="-1"
p:cookieName="CASTGC"
p:cookiePath="/cas" p:cookieDomain="cas.test.com"/>
5.修改warnCookieGenerator.xml文件中的
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />
为
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" p:cookieDomain="cas.test.com"/>
进行4,5两步的修改为了让tomcat1产生的cookie能够被tomcat2所读取。
6.tomcat session复制,关于tomcat的session复制集群。
关于以组播的方式构建tomcat集群,则tomcat的server.xml的配置如下:
将
改为
并在下面
<!--
-->
增加如下配置:
<!--
notifyListenersOnReplication="true"/> 这种是all to all 的复制-->
<!-- 这种是主从式的复制 -->
notifyListenersOnReplication="true"
mapSendOptions="6"/>
port="45564"
frequency="500"
dropTime="3000"/>
<!--如果auto值报错,则将值改为运行tomcat的机器ip地址 -->
port="4001"
autoBind="100"
selectorTimeout="5000"
maxThreads="6"/>
<!-- 静态成员配置
-->
< !--
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/> -->
每个tomcat中都需要配置,但是需要保证jvmRoute值不同。对于tomcat运行在windows系统上,则配置至此完毕,将tomcat运行即可看到相关的组播信息。但是如果tomcat是运行在linux系统,则需要进行如下的设置,因为linux默认是不开启组播服务的,可以通过
1. /sbin/ifconfig -a 查看相应的服务器的网卡是否支持组播,如果输出 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
则表示网卡支持组播,如果不支持,则需要重新编译linux内核重新安装系统,这个我们就不考虑了。
2.如果从第一步,可知网卡支持组播,则执行如下命令(这个命令的执行需要root账号来执行):
/sbin/route add –net 224.0.0.0 netmask 240.0.0.0 dev eth0
这样linux配置至此完毕,运行tomcat可看到相关的组播信息。
转载于:
http://blog.csdn.net/zhurhyme/article/details/39298419
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29959940/viewspace-1301255/ ,如需转载,请注明出处,否则将追究法律责任。