Vous êtes sur la page 1sur 61

Clusterizao e Load Balance

com Jboss AS
Fbio Sartori
Arquiteto de Sistemas
www.fabiosartori.info
fabio@fabiosartori.info

Clusterizao JBoss
!! O que ser visto ?
!! Definio de cluster
!! Definio de load balancer
!! Exemplos de aplicaes
!! Configurao de um cluster com load balancer

Clusterizao JBoss
!! O que no ser visto ?
!! Padres de desenvolvimento
!! Customizao de servidor
!! Tunning de AS e aplicaes
!! Instalao do apache

Clusterizao JBoss
!! Definio
!! Um conjunto de instncias de AS, agrupadas sob a
forma de uma partio.

!! Logo
!! Instncia de JBoss = Nodo
!! Cluster = Partio

Clusterizao JBoss
Partio FSCluster

Nodo
Jboss 1

Nodo
Jboss 2

Nodo
Jboss 3

Clusterizao JBoss
!! O que necessrio para criar um cluster JBoss ?
!! Que uma ou mais instncias ingressem em uma mesma
partio.

!! Como criada uma partio ?


!! Sempre que uma instncia inicializada com o servio de

cluster, a mesma verifica se a partio definida para ela j


existe, caso sim, ela ingressa, caso contrrio, a partio
ser criada.

!! Quando uma partio removida ?


!! Quando todas as instncias que participam dela, forem
removidas (sarem do ar).

Clusterizao JBoss
!! Onde configurado o servio de cluster ?
!! Deploy/cluster-service.xml.

!! Como definir o nome da partio (cluster) ?


!! Atravs do atributo jboss.partition.name que pode ser
definido na inicializao do servidor

Clusterizao JBoss
!! Como verificar informaes sobre o cluster ?
!! Informaes podem ser acessadas via jmxconsole ou qualquer cliente jmx
!! Ex:

!! http://localhost:8080/jmx-console/
!! Jboss:service=<NOME_DA_PARTICAO>
!! Verifique o atributo CurrentView

Clusterizao JBoss

Load Balancer
!! Servio responsvel por distribuir a carga entre os
nodos do cluster.

!! Servios de balanceamento de carga devem

sempre ser monitorados com ateno, pois, como


eles centralizam as requisies, os mesmos so
gargalos. PONTO DE ATENO !!!

Load Balancer
!! Como feito o balanceamento de carga ?
!! Atravs de algortmos de balanceamento, entre eles:
!! Round-Robin
!! Uma requisio para cada instncia

!! First Available
!! Precisa responder ! ??

Cenrio Bsico
Load Balancer

Cluster de Servidores de Aplicao

Cluster Banco de Dados

Exemplo de Cenrio
Load Balancer

Apache

Apache

Apache

AS01

AS02

AS03

JBoss

JBoss

JBoss

Cluster de Banco de dados

Storage

Cenrio do Tutorial

Cenrio do Tutorial
Usurio

Load Balancer
Apache
websrv

clr01

clr02

JBoss

JBoss

Ambiente
!! Sistema Operacional
!! Linux Kernel 2.6.x.x
!! CentOS 5 ser utilizado neste tutorial

!! JVM
!! 1.5.0_14-b03

!! Servidor de aplicaes
!! Jboss-4.2.2.GA

!! Load Balance
!! Apache 2
!! Mdulo mod_jk

Configurando o Sistema
Operacional
!! Grupo
!! Usurio
!! Diretrio para o ambiente java

Criando grupo no sistema


operacional
!! Crie o grupo jsadmin

Criando usurio no sistema


operacional
!! Crie o usurio jsadmin, no grupo jsadmin

Modificando a senha do
usurio
!! Modificar a senha do usurio jsadmin

Criar diretrio para o ambiente


java

Instalando o Ambiente Java


!! JVM
!! JBoss
!! Variveis de ambiente java
!! Profile do usurio jsadmin

Instalando a JVM

Instalando JBoss

Instalando o Ambiente Java


!! Concedendo permisses no diretrio

Configurando variveis de
ambiente
!! Criar um arquivo java_profile.sh, dentro do
diretrio /opt/java

!! Este arquivo servir como profile do ambiente java

Configurando variveis de
ambiente

Profile
!! Configurando o profile do usurio jsadmin

!! Adicionar ao final do arquivo o contedo abaixo:

Configurando JBoss
!! Com o usurio jsadmin, acessar o diretrio $JDIR

!! Verifique os containers disponveis

Criando o container
!! Faa uma cpia do container all, com o nome de
cluster-fs

Configurando o nome do
Cluster e IP dos nodos
! Edite o arquivo $JBOSS_HOME/bin/
run.conf

! Adicione ao final do arquivo

Configurao do Apache
!! Dever ser feita na mquina que far o
balanceamento com o usurio root

!! Mdulo mod_jk

Configurao do arquivo jk.conf


!! No diretrio <APACHE2_HOME>/conf.d
!! Criar o arquivo jk.conf

Configurao do arquivo jk.conf


JkWorkersFile workers.properties
# Where to put jk logs
JkLogFile /var/log/apache2/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y]
# JkOptions indicates to send SSK KEY SIZE
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat
JkRequestLogFormat "%w %V %T
JkMountFile uriworkermap.properties
JkShmFile /var/log/apache2/jk.shm
<Location /jkstatus/>
JkMount status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>

Configurao dos Workers


!! Especifica onde esto os containers que sero
balanceados

Configurao do arquivo
workers.properties
!! No diretrio <APACHE2_HOME>/conf
!! Criar o arquivo workers.properties

Configurao do arquivo
workers.properties
#Definicao dos workers que serao usados para mapear as requisicoes
worker.list=loadbalancer,status
#Definicao no nodo node1
worker.node1.port=8009
worker.node1.host=clr01.fabiosartori.info
worker.node1.type=ajp13
#Nro de reqs para este nodo
worker.node1.lbfactor=1
worker.node1.cachesize=10
#Definicao no nodo node2
worker.node2.port=8009
worker.node2.host=clr02.fabiosartori.info
worker.node2.type=ajp13
worker.node2.lbfactor=1
worker.node2.cachesize=10
#Load-Balancer
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=node1,node2
#Sessao persistida em determinado servidor
worker.loadbalancer.sticky_session=1
#Worker de status para gerenciar o load balancer
worker.status.type=status

Configurao do
uriworkermap.properties
!! Especifica os contextos que sero balanceados

Configurao do arquivo
uriworkermap.properties
!! No diretrio <APACHE2_HOME>/conf
!! Criar o arquivo uriworkermap.properties

Configurao do arquivo
uriworkermap.properties

Configurao do Tomcat
!! Container
!! Configurando o cluster

Configurao do Tomcat
! Editar o o arquivo de configurao do
tomcat
$

! Adicione a sesso <Engine


name="jboss.web, o contedo abaixo:

Configurao do Tomcat
! Ative o mdulo jk

! Adicione / Descomente o atributo UseJK

Ativando o JBoss
! Conceda permisses no script run.sh

! Ative o JBoss

Ativando o Apache

Hot Deploy FARM


!! Uma aplicao pode ser disponibilizada para todo o
cluster (partition) automaticamente com o uso do
Farming Deployment.

!! Como fazer Farming Deployment ?


!! Faa deploy no diretrio farm/ de uma das instncias do

cluster (partition) e a aplicao ser disponibilizada para


automaticamente para os outros ns.

!! Em cluster, h como fazer um deploy single instance ?


!! Sim, para isto, s fazer deploy no diretrio deploy/

Hot Deploy FARM

Aplicaes WEB
!! Quais so os ajustes necessrios em uma aplicao
web tenha alta disponibilidade ?
!! Ela precisa replicar o estado das sesses entre os
nodos.

!! Como configurar uma aplicao web para que a


mesma replique sesses ?
!! Utilize a tag <distributable/> no web.xml.

Aplicaes WEB
<web-app ....... >
<distributable/>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>

Aplicaes WEB
!! Como monitorar o estado das sesses ?
!! Atravs de algum cliente jmx ou do jmx-console
!! http://localhost:8080/jmx-console/
!! Clique no MBean

jboss.cache:service=TomcatClusteringCache e execute a
operao printDetails

Aplicaes WEB

Exemplo
!! Web

EJB3
!! O que necessrio para clusterizar componentes

EJB3 ?
!! Basicamente, tudo o que voc precisa fazer anotar
o componente com @Clustered.

EJB3
@Stateful
@Clustered
public class StatefulBlaBean implements StatefulBla, Serializable {

.
.
.

@Stateless
@Clustered
public class StatelessBlaBean implements StatelessBla {
.
.
.
}

EJB3
!! Como verificar os componentes disponibilizados ?
!! Atravs de algum cliente jmx ou do jmx-console
!! http://localhost:8080/jmx-console/
!! Clique no MBean jboss:service=JNDIView
!! e execute a operao list

EJB3

EJB3

MDB
!! O que necessrio para clusterizar MDBs ?
!! Basicamente, tudo o que voc precisa fazer anotar
o componente com @Clustered.

!! A fila dever ser disponibilizada como singleton no


farm

MDB

Exemplo
!! MDB

Perguntas ???

Vous aimerez peut-être aussi