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 ???



Add a comment on Slide 1
If you have a SlideShare account, login to comment; else you can comment as a guest- Favorites & Groups
Showing 1-50 of 0 (more)