gpt4 book ai didi

java - Apache 、汤姆猫 : Load-balancing not using common session ID's

转载 作者:行者123 更新时间:2023-11-28 22:18:16 24 4
gpt4 key购买 nike

我正在开发部署在 2 个 Tomcat 实例上的 Spring-MVC 应用程序。负载平衡和故障转移由前面的 Apache 实例使用 mod_jk 实现。现在,除了我们的 PUSH 技术,一切都运行良好。

我们使用的PUSH技术是基于Cometd的(Bayeux API规范),如果我登录,那么我登录到一台服务器,但是我看不到登录到第二台服务器的在线用户。我已经在使用 sticky sessions。我认为他们负责管理这件事。

Apache 配置:

worker .属性:

worker.list=loadbalancer
worker.list=jk-status
worker.jk-status.type=status
worker.jk-status.read_only=true

worker.list=jk-manager
worker.jk-manager.type=status

worker.server1.port=8010
worker.server1.host=localhost
worker.server1.lbfactor=1
worker.server1.type=ajp13


worker.server2.port=8011
worker.server2.host=localhost
worker.server2.type=ajp13
worker.server2.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=server1,server2

worker.loadbalancer.sticky_session=true
worker.myworker.sticky_session_force=True

启用站点/000 默认

Listen 443
<VirtualHost _default_:443>
ServerName www.domain.com
ServerAlias *.domain.com domain.com
JkMount /* loadbalancer
SSLEngine on
SSLCertificateFile /home/path/to/.crt
SSLCertificateKeyFile /home//path/to/.key
SSLCertificateChainFile /home/path/to/.ca-bundle
</VirtualHost>

apache2.conf :

LoadModule jk_module modules/mod_jk.so
JkWorkersFile /etc/apache2/workers.properties
JkLogFile /etc/apache2/mod_jk.log
JkMount /* loadbalancer

Tomcat 只有一个变化,即 jvmRoute。如有必要,我可以添加。请告诉我为什么会发生这种情况以及如何解决它。多谢。 :-)

TomcatFirst' server.xml :

<Server port="8005" shutdown="SHUTDOWN">
<Connector port="8443" enableLookups="true" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="200"
compression="off" sslProtocols="TLS" sslEnabledProtocols="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"
keystoreFile="/path/to/.keystore" keystorePass="PASSWORD" URIEncoding="utf-8"/>
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" URIEncoding="utf-8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1">
<Host name="www.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">

<Alias>domain.com</Alias>
</Engine>

TomcatSecond 的 server.xml :

 <Server port="8006" shutdown="SHUTDOWN">
<Connector port="8444" enableLookups="true" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="200"
compression="off" sslProtocols="TLS" sslEnabledProtocols="TLSv1+TLSv1.1+TLSv1.2"
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256,
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"
compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"
keystoreFile="/path/to/.keystore" keystorePass="PASSWORD" URIEncoding="utf-8"/>
<Connector port="8011" protocol="AJP/1.3" redirectPort="8444" URIEncoding="utf-8"
compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>
<Engine name="Catalina" defaultHost="localhost" jvmRoute="server2">
<Host name="www.domain.com" appBase="webapps"
unpackWARs="true" autoDeploy="true">

<Alias>domain.com</Alias>
</Engine>

编辑

刚发现一个新元素要添加到 web.xml 中作为 distributable .这会有帮助吗?尝试需要进行 2 次部署,这就是为什么我想我可能会问的原因。

最佳答案

你能像这样更改 worker 文件吗?

worker.list=loadbalancer,jk-status

worker.jk-status.type=status
worker.jk-status.read_only=true

worker.server1.port=8010
worker.server1.host=localhost
worker.server1.lbfactor=1
worker.server1.type=ajp13

worker.server2.port=8011
worker.server2.host=localhost
worker.server2.type=ajp13
worker.server2.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.sticky_session=true
worker.loadbalancer.balance_workers=server1,server2

JvmRoute 设置正确,但我在您的 server.xml 文件(引擎或主机级别)中找不到集群元素?

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>

您可能想在 Tomcat 中禁用 ssl 连接器并在您的网络服务器中启用它?

映射应该是这样的:

JkMount /appName     loadbalancer
JkMount /appName/* loadbalancer

JkMount /jkStatus jk-status

检查 http://example.com/jkstatus看到它,节点确实找到了彼此。

一旦设置了集群并且 DeltaManager(传播您的 session )开始工作, session ID 将以节点名称为后缀:ANYSESSIONID.server1

关于java - Apache 、汤姆猫 : Load-balancing not using common session ID's,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34871732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com