Slideshare.net (beta)

 

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

Tutorial de Clusterizacao e Load Balance de aplicacoes JEE

From kiosanim, 4 months ago

Tutorial de Clusterizacao e Load Balance de aplicacoes JEE

944 views  |  0 comments  |  0 favorites  |  55 downloads  |  2 embeds (Stats)
Embed
options

More Info

This slideshow is Public
Total Views: 944
on Slideshare: 931
from embeds: 13

Slideshow transcript

Slide 1: Clusterização e Load Balance com Jboss AS Fábio Sartori Arquiteto de Sistemas www.fabiosartori.info fabio@fabiosartori.info

Slide 2: 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

Slide 3: 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

Slide 4: 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

Slide 5: Clusterização JBoss Partição “FSCluster” Nodo Nodo Nodo Jboss 1 Jboss 2 Jboss 3

Slide 6: 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).

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

Slide 8: 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

Slide 9: Clusterização JBoss

Slide 10: 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 !!!

Slide 11: 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 ! ??

Slide 12: Cenário Básico Load Balancer Cluster de Servidores de Aplicação Cluster Banco de Dados

Slide 13: Exemplo de Cenário Load Balancer Apache Apache Apache AS01 AS02 AS03 JBoss JBoss JBoss Cluster de Banco de dados Storage

Slide 14: Cenário do Tutorial

Slide 15: Cenário do Tutorial Usuário Load Balancer Apache websrv clr01 clr02 JBoss JBoss

Slide 16: 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

Slide 17: Configurando o Sistema Operacional !! Grupo !! Usuário !! Diretório para o ambiente java

Slide 18: Criando grupo no sistema operacional !! Crie o grupo jsadmin

Slide 19: Criando usuário no sistema operacional !! Crie o usuário jsadmin, no grupo jsadmin

Slide 20: Modificando a senha do usuário !! Modificar a senha do usuário jsadmin

Slide 21: Criar diretório para o ambiente java

Slide 22: Instalando o Ambiente Java !! JVM !! JBoss !! Variáveis de ambiente java !! Profile do usuário jsadmin

Slide 23: Instalando a JVM

Slide 24: Instalando JBoss

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

Slide 26: 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

Slide 27: Configurando variáveis de ambiente

Slide 28: Profile !! Configurando o profile do usuário jsadmin !! Adicionar ao final do arquivo o conteúdo abaixo:

Slide 29: Configurando JBoss !! Com o usuário jsadmin, acessar o diretório $JDIR !! Verifique os containers disponíveis

Slide 30: Criando o container !! Faça uma cópia do container “all”, com o nome de cluster-fs

Slide 31: Configurando o nome do Cluster e IP dos nodos •! Edite o arquivo $JBOSS_HOME/bin/ run.conf •! Adicione ao final do arquivo

Slide 32: Configuração do Apache !! Deverá ser feita na máquina que fará o balanceamento com o usuário root !! Módulo mod_jk

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

Slide 34: 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>

Slide 35: Configuração dos Workers !! Especifica onde estão os containers que serão balanceados

Slide 36: Configuração do arquivo workers.properties !! No diretório <APACHE2_HOME>/conf !! Criar o arquivo workers.properties

Slide 37: 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

Slide 38: Configuração do uriworkermap.properties !! Especifica os contextos que serão balanceados

Slide 39: Configuração do arquivo uriworkermap.properties !! No diretório <APACHE2_HOME>/conf !! Criar o arquivo uriworkermap.properties

Slide 40: Configuração do arquivo uriworkermap.properties

Slide 41: Configuração do Tomcat !! Container !! Configurando o cluster

Slide 42: 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:

Slide 43: Configuração do Tomcat •! Ative o módulo jk •! Adicione / Descomente o atributo UseJK

Slide 44: Ativando o JBoss •! Conceda permissões no script run.sh •! Ative o JBoss

Slide 45: Ativando o Apache

Slide 46: 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/

Slide 47: Hot Deploy FARM

Slide 48: 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.

Slide 49: Aplicações WEB <web-app ....... > <distributable/> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>

Slide 50: 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

Slide 51: Aplicações WEB

Slide 52: Exemplo !! Web

Slide 53: EJB3 !! O que é necessário para clusterizar componentes EJB3 ? !! Basicamente, tudo o que você precisa fazer é anotar o componente com @Clustered.

Slide 54: EJB3 @Stateful @Clustered public class StatefulBlaBean implements StatefulBla, Serializable { . . . } @Stateless @Clustered public class StatelessBlaBean implements StatelessBla { . . . }

Slide 55: 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

Slide 56: EJB3

Slide 57: EJB3

Slide 58: 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

Slide 59: MDB

Slide 60: Exemplo !! MDB

Slide 61: Perguntas ???