首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache httpd,tomcat :负载平衡似乎在两个Tomcat之间工作,但是一个停止了,服务就死了。

Apache httpd,tomcat :负载平衡似乎在两个Tomcat之间工作,但是一个停止了,服务就死了。
EN

Server Fault用户
提问于 2015-12-09 10:43:42
回答 1查看 514关注 0票数 1

我正在做一项任务,在这个任务中,我必须负载平衡两个tomcat实例,这样它们之间也共享一个公共会话,当其中一个失败时,另一个可以处理这个任务。

第一个任务似乎可以工作,因为当Tomcat版本都在线时,似乎就没有问题了。

我不知道如何检测哪个用户来自哪个tomcat,所以我可以看到来自其他tomcat的用户是否在聊天中活动,然后会话id被正确地共享.

我面临的第二个问题是,如果一个tomcat失败了,另一个tomcat实例应该继续运行,并为正在发出的请求服务,但这并没有发生。一旦任何一个Apache实例发生故障,我就会得到一个503,服务不可用。请告诉我如何解决这个问题,并测试哪个用户来自哪个tomcat实例。所做的更改:站点启用/000-默认:

代码语言:javascript
复制
<Proxy balancer://mycluster>
    BalancerMember ajp://localhost:8010 route=jvmroute-first connectiontimeout=10
    BalancerMember ajp://localhost:8011 route=jvmroute-second connectiontimeout=10

   ProxySet stickysession=JSESSIONID

   Order Deny,Allow
   Deny from none
   Allow from all

</Proxy>

<VirtualHost *:80>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>

第一只猫的server.xml:

代码语言:javascript
复制
<Connector port="8080" proxyPort="80" protocol="HTTP/1.1" compression="force" compressionMinSize="1024" 
               connectionTimeout="20000"
               redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/>


<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
              compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"  sslProtocol="TLS"
                keystoreFile="keystore" keystorePass="password" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>

 <Connector port="8010" protocol="AJP/1.3" redirectPort="443" 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="jvmroute-first">
// No modifications within Engine
</Engine>

第二个tomcat实例:

代码语言:javascript
复制
<Connector port="8081" proxyPort="80" protocol="HTTP/1.1" compression="force" compressionMinSize="1024" 
               connectionTimeout="20000"
               redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/>


<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
              compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"  sslProtocol="TLS"
                keystoreFile="keystore.jks" keystorePass="password" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>
<Connector port="8011" protocol="AJP/1.3" redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>

为什么会发生这种事。任何想法线索。非常感谢。:-)

编辑

负载均衡器好像出了点问题,过了一会儿我就会出错,检查屏幕截图。

EN

回答 1

Server Fault用户

发布于 2015-12-09 12:38:46

这可能是因为您没有在Tomcat end上启用会话复制。由于在Apache上启用了粘性会话,所以请求总是基于JSESSIONID的检查进行路由。

使用故障转移在Tomcat实例中实现集群,以便在失败时将任何失败的请求重新路由到第二个tomcat服务器。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/741803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档