Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Projeto Soft...
Tela cheia Sugerir um artigo

Adriel Lucas: Configurando um Cluster de Tomcat com Balanceamento de Carga – Parte 2

15 de Outubro de 2011, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 47 vezes


Configuração do Cluster de Tomcat

Levarei em consideração que você já tenha duas instancias do tomcat, o apache e o java instalados no seu servidor. Segue abaixo a descrição do ambiente que será utilizado nesse pequeno projeto, vale lembrar que é apenas um projeto de teste:
-Duas instancias de máquinas virtuais no virtualbox;
- Cada VM com 512MB de RAM e 8GB de HD;
- Cada VM com o sistema Operacional CentOS 5.7 (Final);
Obs.: essa configuração poderá ser realizada em qualquer servidor Linux.

Requisitos:

Para realizar a replicação de sessões entre os nós do cluster alguns pontos devem ser verificados:
- todos os atributos de sessão devem implementar java.io.Serializable;
- Ter no arquivo web.xml da aplicação o atributo <distributable/> ou definir um propriedade na configuração do contexto da aplicação no arquivo server.xml;
- configurar o balanceador de carga com a opção sticky session ativa, para manter as requisições de um mesmo usuário do sistema indo para um mesmo nó do cluster, exceto quando falhar este nó.

Iniciando a Configuração:

A Configuração dos tomcat’s para o cluster é realizada a partir da edição do arquivo server.xml, localizado na pasta conf (<diretório do tomcat>/conf/server.xml) de cada tomcat. O que deve ser feito é descomentar toda a tag cluster e acrescentar a configuração adequando os parâmetros ao ambiente de hospedagem. Logo abaixo a configuração do cluster:

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

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>  

Em cada tomcat temos a mesma tag cluster com uma pequena diferença na configuração:
Tag Menbership
Tag Receiver
Tomcat A
Tomcat B
Tomcat A
Tomcat B
address=”224.0.0.4”
address=”224.0.0.4”
address=”auto”
address=”auto”
port=”45564”
port=”45564”
port=”4000”
port=”4000”

Agora temos que identificar cada nó no mesmo arquivo “server.xml”. No tomcat A e no tomcat B será preciso fazer algumas alterações para os nós poderem se comunicar:

TOMCAT A
Onde tem:
Coloque:
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<Engine name="Catalina" defaultHost="localhost" jvmRoute=”node01”>

TOMCAT B
Onde tem:
Coloque:
<Server port="8005" shutdown="SHUTDOWN">
<Server port="9005" shutdown="SHUTDOWN">
<Connector port="8080" ...
<Connector port="9080"…
<Connector port="8006" protocol="AJP/1.3" redirectPort="8443" />
<Connector port="9006" protocol="AJP/1.3" redirectPort="8443" />
<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
<Engine name="Catalina" defaultHost="localhost" jvmRoute=”node02”>
OBS.: As alterações estão destacadas em negrito, porém essas alterações são um exemplo de configuração não necessariamente terá que utilizar estes mesmo valores pode ser feito com outros valores.

Depois de fazer essas configurações, basta só iniciar os tomcat’s que os mesmos começarão a replicar suas sessões, ou seja, começarão a trabalhar em cluster.
Para iniciar os tomcats basta entrar no diretório Bin/ dentro de cada tomcat e executar o seguinte comando:
#sh startup.sh
No próximos posts irei mostrar como configurar o balanceador de carga e fazer os testes com uma simples página .jsp. 



Fonte: http://feedproxy.google.com/~r/AdrielLucas/~3/sgZlZiBovsU/configurando-um-cluster-de-tomcat-com_15.html

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.