求教Apache+Tomcat集群的Session复制方法

smh821025 发布于 2013/08/22 12:47
阅读 2K+
收藏 8
本人使用的是ajp的方式进行的集群操作,一切都已配置好,但是没有实现session复制,在网上查找过,应该是需要在Apache下进行参数修改,哪位朋友做过这个功能,请教下,谢谢
加载中
1
金贞花
金贞花
用Memcached统一管理
0
Beyond-Bit
Beyond-Bit
1.打开tomcat1\conf\ server.xml将<Cluster>部分的注释去掉。


再打开tomcat2\conf\ server.xml将<Cluster>部分的注释也去掉,

并将<Cluster>中<Receiver>的tcpListenPort的值改为4002。以避免与Tomcat1冲突。

2.分别在2个tomcat的webapps\test中新建WEB-INF目录,在WEB-INF中添加web.xml内容如下:


<distributable/>

主要是添加<distributable/>,distributable元素用来告诉servlet容器,程序将部署在分布式Web容器中。


重新启动tomcat1和tomcat2. 访问



ps:

tomcat的session同步功能需要用到组播,windows默认情况下是开通组播服务的,但是linux默认情况下并没有开通,
可以通过指令打开route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0,如果需要服务器启动时即开通组播
需在/etc/sysconfig/static-routes文件内加入eht0 net 224.0.0.0 netmask 240.0.0.0。具体组播概念请查阅
CCNP相关内容。 
可以通过netstate -g 来查看组播状态,也可以在route -e 命令中看到


0
smh821025
smh821025
二楼的朋友给的方法都已经做过了
0
smh821025
smh821025

引用来自“红薯”的答案

红薯大哥给的文章不错,不过没有解决我的问题。

这些东西我都已经配过了,我这边现在的问题是,两个应用放到了两个tomat的webapp下,然后通过apache登录,但是每次进入的话,都会被弹出到登陆页面,因为是session复制没有做。

apache配置文件里面有httpd.conf配置文件,我的配置如下:

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !

ProxyRequests Off
ProxyPass /xxx balancer://mycluster stickysession=STICK_PORT_TOKEN nofailover=On

ProxyPassReverse /xxx balancer://mycluster
<Proxy balancer://mycluster>
     BalancerMember ajp://192.168.1.101:8009/xxx/  loadfactor=1
     BalancerMember ajp://192.168.1.102:8009/xxx/  loadfactor=1
</Proxy>
我看了一些文章,应该是
stickysession=STICK_PORT_TOKEN
这句话有问题,这个属于是单个节点的操作,不进行session复制,如果是复制节点的话,应该是replicated session,但是apache里面写这个的话,会报错,所以我想知道这块应该怎么改动?


0
smh821025
smh821025

引用来自“Gelopa”的答案

用Memcached统一管理
是个方法,正在看,另外想问下,如果不用memcached类似的第三方软件,就不能做session的复制么,我指的是不对系统应用本身进行修改。
金贞花
金贞花
这个就和应用没关系呀
0
南湖船老大
南湖船老大

引用来自“smh821025”的答案

引用来自“Gelopa”的答案

用Memcached统一管理
是个方法,正在看,另外想问下,如果不用memcached类似的第三方软件,就不能做session的复制么,我指的是不对系统应用本身进行修改。

你的思路没错的,前厂就是tomcat+apache实现的session复制,不过我不是实施者。

到了现在2013年,还是推荐memcache来管理

0
smh821025
smh821025

引用来自“南湖船老大”的答案

引用来自“smh821025”的答案

引用来自“Gelopa”的答案

用Memcached统一管理
是个方法,正在看,另外想问下,如果不用memcached类似的第三方软件,就不能做session的复制么,我指的是不对系统应用本身进行修改。

你的思路没错的,前厂就是tomcat+apache实现的session复制,不过我不是实施者。

到了现在2013年,还是推荐memcache来管理

感谢上面的朋友们给予的启发,现在使用了memcached,但是配置后却在本机可以用telnet访问,但是子节点的却无法访问。

具体说下我的管理模式吧

主节点:apache  memcached

子节点1:tomcat

子节点2:tomcat

本身使用的集群方式是tomcat的ajp方式,现在已经引入了memcached,而且启动了11211端口,并在每个tomcat的context文件中引入了

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
 memcachedNodes="n1:192.168.1.150:11211"  
    sticky="false"  
    sessionBackupAsync="false"  
    lockingMode="uriPattern:/path1|/path2"  
    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
    transcoderFactoryClass="de.javakaffee.web.msm.serializer
.javolution.JavolutionTranscoderFactory"
    />
这段话 。192.168.1.150是主节点的IP,所需要的jar包已经放入了tomcat的lib下,下图为lib下的文件:

但是启动了apache和tomcat以后,并且把memcache启动后,会出现如下错误:

我现在在主节点上用telnet 192.168.1.150 11211或telnet 127.0.0.1 11211命令都可以实现自连,但是在子节点上用telnet 192.168.1.150 11211这个命令却报

Trying 192.168.1.150...
telnet: connect to address 192.168.1.150: Connection refused
telnet: Unable to connect to remote host: Connection refused
这个错误,但是去掉了11211就可以连了,我用netstat -np发现11211端口是开放的,这里很奇怪,感觉和这个有一定的关系,希望有经验的朋友帮分析下,谢了,在线急等。


0
smh821025
smh821025

引用来自“Gelopa”的答案

用Memcached统一管理
谢谢朋友的提议,已经搞定了,欣喜中.............
金贞花
金贞花
..........
返回顶部
顶部