Como configurar o failover para o JBoss AS 5?

1

Atualmente sou estagiário na minha empresa. Meu chefe basicamente quer que eu faça um failover de um JBoss AS para outro apenas para uma prova de conceito. O balanceamento de carga não é necessário, já que só é necessário mostrar 1 cliente conectado ao JBoss 1, executar um failover e o cliente se conectará automaticamente ao JBoss 2.

A partir de agora, posso agrupar o 2 JBoss AS usando um "ran.bat -c all" de diferentes terminais que executam o Windows. E agora, aqui estão minhas perguntas

1) O que devo fazer para configurar um failover para o JBoss

2) Qual é o aplicativo mais simples e rápido que eu deveria escrever para hospedá-lo no JBoss, para que o JBoss possa executar um failover de 1 JBoss para outro?

Quaisquer orientações seriam muito apreciadas e MUITOS agradecimentos antecipados.

Kevin

    
por Nivek 25.10.2010 / 04:18

2 respostas

1

Você precisa ter um apache ou está na frente do cluster.

Basicamente você usa mod_jk, mod_proxy_ajp ou mod_cluster para gerenciar o failover e o stickyness das sessões.

Agora vamos dizer que você tem 2 servidores jboss (192.168.1.2 e 192.168.1.3) e 1 apache 2.2.xe você quer usar mod_jk por simplicidade (se você quiser que 2 apaches façam HA na camada http você precisa de um balanceador de carga de algum tipo).

A primeira coisa que você faz é baixar mod_jk 1.2.30 , uma vez que oferece melhores recursos para a detecção de nós com nó falho. e coloque-o no diretório modules do apache server_root.

então você vai ao httpd.conf e adiciona:

LoadModule jk_module modules/mod_jk-1.2.30-httpd-2.2.3.so

A próxima coisa a fazer é criar um arquivo chamado workers.properties com o seguinte conteúdo

worker.list=loadbalancer,status
worker.template.port=8009
worker.template.type=ajp13
worker.template.ping_mode=A
worker.template.reply_timeout=90000
worker.template.socket_connect_timeout=10000
worker.template.connection_pool_size=150
worker.template.socket_keepalive=true

worker.node1.reference=worker.template
worker.node1.host=192.168.1.2

worker.node2.reference=worker.template
worker.node2.host=192.168.1.3

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
worker.loadbalancer.sticky_session=True

worker.status.type=status

Em seguida, no arquivo httpd.conf, você adiciona as seguintes linhas:

JkWorkersFile conf/workers.properties
JkWatchdogInterval 60
JkMount /* loadbalancer
JkLogFile logs/mod_jk.log

depois vá para a configuração do jboss para 192.168.1.2

no arquivo JBOSS_HOME / server / all / deploy / jbossweb.sar / server.xml

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">

e substitua ou modifique isso:

<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"
     redirectPort="8443" />

com isso:

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
emptySessionPath="true" enableLookups="false" redirectPort="8443"
maxThreads="200" connectionTimeout="600000" />

então vá para a configuração do jboss para 192.168.1.3

no arquivo JBOSS_HOME / server / all / deploy / jbossweb.sar / server.xml

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node2">

e substitua ou modifique isso:

<Connector protocol="AJP/1.3" port="8009" address="${jboss.bind.address}"
     redirectPort="8443" />

com isso:

<Connector port="8009" address="${jboss.bind.address}" protocol="AJP/1.3"
emptySessionPath="true" enableLookups="false" redirectPort="8443"
maxThreads="200" connectionTimeout="600000" />

Explicação: A alteração na tag de conector limita os threads no contêiner da Web para 200 (ou seja, é a quantidade máxima de solicitações simultâneas é capaz de gerenciar) o connectionTimeout garante que se o cliente fecha a conexão (isso é "fecha o navegador") o thread expira após 600 segundos sem uso.

Você pode encontrar tamanhos para esses parâmetros neste aplicativo de appspot criado pela equipe do jboss: lbconfig.appspot.com

CONSIDERAÇÕES DE SEGURANÇA: Proteja ou desabilite o console jmx e / ou o console da web excluindo os diretórios jmx-console.war e de gerenciamento da pasta deploy ou seguindo as instruções neste documento

Você pode encontrar mais informações sobre balanceamento de carga, mod_jk, mod_cluster no jboss wiki

    
por 26.10.2010 / 06:33
1

O Jboss não suporta http LB. Cada nó está escutando em sua própria porta. A sessão http é replicada / distribuída. Se seu chefe insistir, você pode usar o proxy do cliente HAJNDI Smart em vez de http. Simplesmente inicie um contexto de nomenclatura de seu aplicativo cliente para a porta HAJNDI (1101), procure o aplicativo EJB3 e chame qualquer método remoto. Quando o nó conectado estiver inoperante, o proxy inteligente saberá mudar.

    
por 27.08.2011 / 19:59