tutorial de clusterizacao e load balance de aplicacoes jee

Post on 04-Dec-2014

8.090 Views

Category:

Technology

15 Downloads

Preview:

Click to see full reader

DESCRIPTION

Tutorial de Clusterizacao e Load Balance de aplicacoes JEE

TRANSCRIPT

Clusterização e Load Balance com Jboss AS

Fábio Sartori

Arquiteto de Sistemas

www.fabiosartori.info

fabio@fabiosartori.info

Clusterização JBoss !! O que será visto ?

!! Definição de cluster

!! Definição de load balancer

!! Exemplos de aplicações

!! Configuração de um cluster com load balancer

Clusterização JBoss !! O que não será visto ?

!! Padrões de desenvolvimento

!! Customização de servidor

!! Tunning de AS e aplicações

!! Instalação do apache

Clusterização JBoss !! Definição

!! Um conjunto de instâncias de AS, agrupadas sob a forma de uma partição.

!! Logo !! Instância de JBoss = Nodo

!! Cluster = Partição

Clusterização JBoss

Partição “FSCluster”

Nodo Jboss 1

Nodo Jboss 2

Nodo Jboss 3

Clusterização JBoss !! O que é necessário para criar um cluster JBoss ?

!! Que uma ou mais instâncias ingressem em uma mesma partição.

!! Como é criada uma partição ?

!! Sempre que uma instância é inicializada com o serviço de cluster, a mesma verifica se a partição definida para ela já existe, caso sim, ela ingressa, caso contrário, a partição será criada.

!! Quando uma partição é removida ? !! Quando todas as instâncias que participam dela, forem

removidas (saírem do ar).

Clusterização JBoss !! Onde é configurado o serviço de cluster ?

!! Deploy/cluster-service.xml.

!! Como definir o nome da partição (cluster) ? !! Através do atributo jboss.partition.name que pode ser

definido na inicialização do servidor

Clusterização JBoss !! Como verificar informações sobre o cluster ?

!! Informações podem ser acessadas via jmx-console ou qualquer cliente jmx

!! Ex: !! http://localhost:8080/jmx-console/

!! Jboss:service=<NOME_DA_PARTICAO>

!! Verifique o atributo CurrentView

Clusterização JBoss

Load Balancer !! Serviço responsável por distribuir a carga entre os

nodos do cluster.

!! Serviços de balanceamento de carga devem sempre ser monitorados com atenção, pois, como eles centralizam as requisições, os mesmos são gargalos. PONTO DE ATENÇÃO !!!

Load Balancer !! Como é feito o balanceamento de carga ?

!! Através de algorítmos de balanceamento, entre eles: !!Round-Robin

!! Uma requisição para cada instância

!! First Available !! Precisa responder ! ??

Cenário Básico

Load Balancer

Cluster de Servidores de Aplicação

Cluster Banco de Dados

AS01

Apache

AS02

Apache

AS03

Apache

JBoss JBoss JBoss

Load Balancer

Cluster de Banco de dados

Storage

Exemplo de Cenário

Cenário do Tutorial

clr01

websrv

Apache

clr02

JBoss JBoss

Load Balancer

Cenário do Tutorial

Usuário

Ambiente !! Sistema Operacional

!! Linux Kernel 2.6.x.x !! CentOS 5 será utilizado neste tutorial

!! JVM !! 1.5.0_14-b03

!! Servidor de aplicações !! Jboss-4.2.2.GA

!! Load Balance !! Apache 2

!! Módulo mod_jk

Configurando o Sistema Operacional

!! Grupo

!! Usuário

!! Diretório para o ambiente java

Criando grupo no sistema operacional

!! Crie o grupo jsadmin

Criando usuário no sistema operacional

!! Crie o usuário jsadmin, no grupo jsadmin

Modificando a senha do usuário

!!Modificar a senha do usuário jsadmin

Criar diretório para o ambiente java

Instalando o Ambiente Java !! JVM

!! JBoss

!! Variáveis de ambiente java

!! Profile do usuário jsadmin

Instalando a JVM

Instalando JBoss

Instalando o Ambiente Java !! Concedendo permissões no diretório

Configurando variáveis de ambiente

!! Criar um arquivo java_profile.sh, dentro do diretório /opt/java

!! Este arquivo servirá como profile do ambiente java

Configurando variáveis de ambiente

Profile !! Configurando o profile do usuário jsadmin

!! Adicionar ao final do arquivo o conteúdo abaixo:

Configurando JBoss !! Com o usuário jsadmin, acessar o diretório $JDIR

!! Verifique os containers disponíveis

Criando o container !! Faça uma cópia 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

Configuração do Apache !! Deverá ser feita na máquina que fará o

balanceamento com o usuário root

!!Módulo mod_jk

Configuração do arquivo jk.conf !! No diretório <APACHE2_HOME>/conf.d

!! Criar o arquivo jk.conf

Configuração 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>

Configuração dos Workers !!Especifica onde estão os containers que serão

balanceados

Configuração do arquivo workers.properties

!! No diretório <APACHE2_HOME>/conf

!! Criar o arquivo workers.properties

Configuração 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

Configuração do uriworkermap.properties

!! Especifica os contextos que serão balanceados

Configuração do arquivo uriworkermap.properties

!! No diretório <APACHE2_HOME>/conf

!! Criar o arquivo uriworkermap.properties

Configuração do arquivo uriworkermap.properties

Configuração do Tomcat !! Container

!! Configurando o cluster

Configuração do Tomcat

$

•! Editar o o arquivo de configuração do tomcat

•! Adicione a sessão <Engine name="jboss.web”, o conteúdo abaixo:

Configuração do Tomcat

•! Ative o módulo jk

•! Adicione / Descomente o atributo UseJK

Ativando o JBoss

•! Conceda permissões no script run.sh

•! Ative o JBoss

Ativando o Apache

Hot Deploy FARM !! Uma aplicação pode ser disponibilizada para todo o

cluster (partition) automaticamente com o uso do Farming Deployment.

!! Como fazer Farming Deployment ?

!! Faça deploy no diretório farm/ de uma das instâncias do cluster (partition) e a aplicação será disponibilizada para automaticamente para os outros nós.

!! Em cluster, há como fazer um deploy single instance ? !! Sim, para isto, é só fazer deploy no diretório deploy/

Hot Deploy FARM

Aplicações WEB !! Quais são os ajustes necessários em uma aplicação

web tenha alta disponibilidade ? !! Ela precisa replicar o estado das sessões entre os

nodos.

!! Como configurar uma aplicação web para que a mesma replique sessões ? !! Utilize a tag <distributable/> no web.xml.

Aplicações WEB <web-app ....... >

<distributable/> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>

</web-app>

Aplicações WEB !! Como monitorar o estado das sessões ?

!! Através de algum cliente jmx ou do jmx-console

!! http://localhost:8080/jmx-console/

!!Clique no MBean jboss.cache:service=TomcatClusteringCache e execute a operação printDetails

Aplicações WEB

Exemplo !!Web

EJB3 !! O que é necessário 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 ?

!! Através de algum cliente jmx ou do jmx-console

!! http://localhost:8080/jmx-console/

!!Clique no MBean jboss:service=JNDIView

!! e execute a operação list

EJB3

EJB3

MDB !! O que é necessário 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 ???

top related