浏览 14879 次
精华帖 (0) :: 良好帖 (1) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-07-22
在httpd.conf 文件最后加 ProxyPass / balancer://myWebapp/ ProxyPassReverse / balancer://myWebapp/ <Proxy balancer://myWebapp> BalancerMember ajp://192.168.2.13:8009 route=8080 BalancerMember ajp://192.168.2.14:8009 smax=10 route=8080 </Proxy> 功能已实现。 两台tomcat服务器为tomcat5.5.17在server.xml中把<Cluster >......</Cluster>部分去掉注释修改了<Engine...../>为<Engine name="Catalina" defaultHost="APP02" jvmRoute="web1"> 同时在conf目录加入了jk2.properties文件内容为channelSocket.port=8009 另一台则改为<Engine name="Catalina" defaultHost="APP01" jvmRoute="web"> 也同时在conf目录加入了jk2.properties文件内容为channelSocket.port=8009 在应用程序的web.xml里加入了<distributable/> 在启动三台服务器后,在两台tomcat日志文件头部都出现如下信息: Jul 22, 2006 11:44:58 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /opt/jdk1.5/jre/lib/i386/server:/opt/jdk1.5/jre/lib/i386:/opt/jdk1.5/jre/../lib/i386 Jul 22, 2006 11:44:58 AM org.apache.coyote.http11.Http11BaseProtocol init INFO: Initializing Coyote HTTP/1.1 on http-8098 Jul 22, 2006 11:44:58 AM org.apache.catalina.startup.Catalina load INFO: Initialization processed in 901 ms Jul 22, 2006 11:44:58 AM org.apache.catalina.core.StandardService start INFO: Starting service Catalina Jul 22, 2006 11:44:58 AM org.apache.catalina.core.StandardEngine start INFO: Starting Servlet Engine: Apache Tomcat/5.5.17 Jul 22, 2006 11:44:58 AM org.apache.catalina.core.StandardHost start INFO: XML validation disabled Jul 22, 2006 11:44:58 AM org.apache.catalina.cluster.tcp.SimpleTcpCluster start INFO: Cluster is about to start Jul 22, 2006 11:44:58 AM org.apache.catalina.cluster.tcp.ReplicationTransmitter start INFO: Start ClusterSender at cluster Catalina:type=Cluster,host=app02 with name Catalina:type=ClusterSender,host=app02 Jul 22, 2006 11:44:58 AM org.apache.catalina.cluster.mcast.McastService start INFO: Sleeping for 2000 milliseconds to establish cluster membership Jul 22, 2006 11:45:00 AM org.apache.catalina.cluster.mcast.McastService registerMBean INFO: membership mbean registered (Catalina:type=ClusterMembership,host=app02) Jul 22, 2006 11:45:00 AM org.apache.catalina.cluster.deploy.FarmWarDeployer start INFO: Cluster FarmWarDeployer started. log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig). log4j:WARN Please initialize the log4j system properly. 07-22 11:45:01.747 INFO [ContextLoader.java:174] Root WebApplicationContext: initialization started 07-22 11:45:01.753 INFO [ApplicationContext.java:646] Loading Spring root WebApplicationContext 07-22 11:45:01.843 INFO [XmlBeanDefinitionReader.java:163] Loading XML bean definitions from ServletContext resource [/WEB-INF/applicationContext.xml] 再往下也都是正常的起动信息,没有错误。 不知道这里面没有错误信息是否表明Cluster已经起作用了。但是在访问网站时登陆时就是验证码不正确,如果你把记住密码 勾上 当重新打开IE后就可以进入网站的个人主页,这时当你再点击任何连接提交,就会转到你还没有登陆要求你登陆的页面。这说明session没有同步呀! 多多帮助小弟,给点帮助吧! 我弄了好长时间都没有弄好,谢谢各位了~~先!! 不知道,是服务器问题,还是tomcat问题,或是程序问题! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2006-07-22
不客气一点阿,从你的描述来看,你的配置可以说是乱七八糟。说明你对apache2.2和tomcat如何做session sticky的load balance可以说是一知半解。
建议你好好阅读一下apache2.2的load balance文档,还有tomcat cluster的相关文档。 我这里不详细给你讲解了,简单提一下要点: 要session sticky,其原理是tomcat实例response的时候,在session id后面附上了一个自己实例的标示(route),那么客户端浏览器再后续请求的时候,会把sessionid送过来,同时也带上了这个标示(route),apache会从sessionid这个HTTP HEAD里面拿到这个标示,决定将请求转发给后面哪个tomcat实例。因此要点就是: 1、tomcat实例要在response的时候标示自己,通过server.xml里面的jvmRoute参数 2、apache要从request里面拿出来route信息,从哪个HEAD里面拿?通过stickysession参数来指定 3、apache怎么转发?通过route参数来指定。 例如: ProxyPass / balancer://mycluster stickysession=JSESSIONID BalancerMember http://1.2.3.4:8009 route=clone1 BalancerMember http://1.2.3.5:8009 route=clone2 在相应的tomcat实例clone1里面jvmRoute参数配置“clone1”,在clone2;里面配置clone2。 最后想提醒一点:apache2.2的load balance的session sticky性能并不好,因为他这是在七层协议级别进行请求的分发。我测试的结果表明,并不很稳定。 对于tomcat群集来说,最好就是SNA(Share Nothing Architecture),应用程序压根就不用session,这样才能无限扩展。 |
|
返回顶楼 | |
发表时间:2006-07-22
谢谢你的回复,你的简单提点让我收获很大。我会努力学习的。嘿嘿,以后有问题再请时还请多批评并指教!
谢谢 |
|
返回顶楼 | |
发表时间:2006-07-23
mod_jk这个早就该淘汰了, 用modajp
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so ProxyPass /admin balancer://tomcatcluster/admin lbmethod=byrequests stickysession=JSESSIONID nofailover=Off timeout=5 maxattempts=3 ProxyPassReverse /admin balancer://tomcatcluster/admin <Proxy balancer://tomcatcluster> BalancerMember ajp://localhost:8009 route=web1 BalancerMember ajp://localhost:10009 smax=10 route=web2 BalancerMember ajp://localhost:11009 route=web3 BalancerMember ajp://localhost:12009 smax=10 route=web4 </Proxy> |
|
返回顶楼 | |