Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java tomcat中的会话复制和集群?_Java_Tomcat_Cluster Computing_Load Balancing_Session Replication - Fatal编程技术网

Java tomcat中的会话复制和集群?

Java tomcat中的会话复制和集群?,java,tomcat,cluster-computing,load-balancing,session-replication,Java,Tomcat,Cluster Computing,Load Balancing,Session Replication,我已经配置了HttpServer2.2,以实现java应用程序的负载平衡和集群 但是负载平衡工作正常,集群(会话复制)不起作用 HttpServer中的我的worker.properties将 workers.java_home=C:/Program Files/Java/jdk1.6.0_25 #worker.list=worker1,worker2 worker.list=balancer worker.worker1.port=8009 worker.worker1.host=loca

我已经配置了
HttpServer2.2
,以实现java应用程序的
负载平衡
集群

但是
负载平衡
工作正常,
集群(会话复制)
不起作用

HttpServer
中的我的
worker.properties

workers.java_home=C:/Program Files/Java/jdk1.6.0_25

#worker.list=worker1,worker2
worker.list=balancer

worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

worker.worker2.port=8019
worker.worker2.host=192.168.100.84
worker.worker2.type=ajp13
worker.worker2.lbfactor=1

worker.balancer.type=lb
worker.balancer.balance_workers=worker1,worker2
worker.balancer.method=B
# Specifies whether requests with SESSION ID's 
# should be routed back to the same #Tomcat worker.
worker.balancer.sticky_session =True
httpd.conf

<IfModule jk_module>

JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info

JkMount /CustomerChat_V1.02.00 balancer
JkMount /CustomerChat_V1.02.00/* balance

</IfModule>
在我的
server.xml
中,对于
tomcattwo

       <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                  address="192.168.0.1"
                  port="4100"
                  autoBind="100"
                  selectorTimeout="5000"
                  maxThreads="6" />

但还是有问题

当我关闭
tomcatone
时,新请求将自动转到
tomcattwo
。但是,
tomcattwo
不知道应用程序的当前用户状态和存储的会话对象

希望我们的stack成员能在这方面帮助我


非常感谢您的回答。

一些评论/建议

  • 您提到的配置纯粹是负载平衡。我假设您在HttpServer后面使用Tomcat(在Tomcat中使用AJP连接器)
  • HttpServer将只将请求转发到Tomcat服务器。它本身不维护用户的会话
  • 会话是在Tomcat中维护的,因此您应该为会话集群配置Tomcat
  • 有关Tomcat集群,请参阅Tomcat版本特定文档。这里是链接
  • 一旦Tomcat服务器被适当地集群,会话将被复制,并且每个服务器将识别其他服务器用户的会话
编辑:

在您的配置中,您提到

worker.balancer.sticky_session =True

这将使HttpServer将所有请求发送到第一次创建会话的tomcat(会话被固定在该服务器上,因此命名为sticky session)。这违背了会话集群的目的。请将此设置为false

谢谢你的回复。。。我尝试了你的答案并更新了我的问题。请检查并让我知道是否有修改。请检查两台服务器的启动日志,并查看是否有任何群集设置相关日志。我觉得您所做的任何配置都是正确的。所有其他资源都告诉我保留
worker.balancer.sticky\u session=True
,还有其他建议吗?
worker.balancer.sticky_session =True