Apache httpd, Tomcat: o balanceamento de carga parece funcionar entre dois tomcat, mas um pára e o serviço morre

1

Estou trabalhando em uma tarefa em que tenho que balancear as duas instâncias do tomcat, de modo que elas compartilhem uma sessão comum também entre si e, quando uma fica inativa, a outra pode lidar com a tarefa.

A primeira tarefa parece funcionar como quando as duas versões do Tomcat estão online, então parece não haver problema.

Eu não sei como detectar qual usuário é de qual tomcat, então posso ver se um usuário de outro tomcat está no bate-papo, então o id de sessão está compartilhado corretamente.

O segundo problema que estou enfrentando é que, se um tomcat for desativado, a outra instância do tomcat deverá continuar executando e atender às solicitações sendo feitas, mas isso não está acontecendo. Assim que qualquer instância do tomcat do Apache ficar inativa, recebo um serviço 503, não disponível. Por favor, deixe-me saber como posso corrigir este problema e testar qual usuário é de qual instância do tomcat. Alterações feitas: sites-enabled / 000-default:

<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>

Primeiro server.xml do tomcat:

<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>

Segunda instância do tomcat:

<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"
/>

Por que isso está acontecendo? Alguma idéia, pistas. Muito obrigado. : -)

Editar

Parece haver algo errado com o balanceador de carga, pois recebo o Err depois de algum tempo, verifique a captura de tela

    
por We are Borg 09.12.2015 / 11:43

1 resposta

0

Isso pode acontecer porque você não tem a replicação de sessão ativada no final do Tomcat. Como a sessão persistente é ativada no Apache, as solicitações são sempre roteadas com base na verificação de JSESSIONID.

Implemente o cluster em instâncias do Tomcat com Failover para que qualquer solicitação com falha seja reencaminhada para o segundo servidor do tomcat em caso de falha.

    
por 09.12.2015 / 13:38