Introdução ao Domain Mode no JBoss AS 7.1.2 (JBoss EAP 6) – Parte 1

Postado em Atualizado em

Olá amigos,

Como prometido em posts anteriores hoje vamos falar um pouco sobre o Domain Mode no JBoss AS 7.1.2, vou tentar passar o que aprendi sobre essa forma de trabalho se alguém quiser complementar sinta-se a vontade nos comentários.

O JBoss AS 7 possui dos modelos de trabalho conhecidos como Standalone Mode e Domain Mode. No Standalone mode podemos trabalhar com uma única instância muito semelhante a versões anteriores do JBoss AS 5 e JBoss AS 6. Quem nunca inicou um profile all para a criação de instâncias em cluster?!  ou até mesmo utilizou o profile default para  aplicações que nao exigiam recursos distribuidos. Então para utilizar o Standalone mode basta iniciar o script JBOSS_HOME/standalone.sh no Linux ou JBOSS_HOME/standalone.bat no Windows. Agora você deve estar se perguntando se é possível criar um ambiente de alta disponibilidade utilizando o Standalone Mode. A resposta é SIM!!! É possível criar um ambiente com recursos clusterizados, replicação de sessão e tudo mais.  Se você já utilizou outras versões do JBoss deve estar pensando em utilizar o famoso Farm Deployment onde a aplicação era replicada para todos os nós do cluster. Sinto informar mas esse recurso não existe no Standalone Mode, você terá que realizar o deploy em todos os nós um por um. Isso não é um problema se for 3 ou 4 instâncias mas imagine se forem umas 20 instâncias. Ai você diz Fu%$#@! rsrs Uma solução para esse problema seria a utilização de ferramentas como o JON ou RHQ (são a mesma ferramenta) para realização de deploy em múltiplas instâncias o que acarretaria consumo de mais recursos e tempo. Para solucionar esse problema temos uma solução bem simples já embutida no servidor de aplicação o Domain Mode e é sobre isso que vamos aprender hoje.

Na minha opnião essa é a melhor novidade da versão JBoss AS 7. O Domain Mode permite iniciar várias instâncias e também oferece uma maneira centralizada de gerenciamento dos recursos facilitando e muito a vida do administrador de instâncias JBoss. O Domain Mode pode ser visto como uma unidade de instâncias que compartilham recursos e configurações e são administradas por um processo chamado Domain Controller. Veja abaixo um exemplo de Domain Mode.

Então vamos as explicações sobre toda essa estrutura:

Domain Controller: Ele é quem controla o gerenciamento do domain. Nele estão as configurações que são compartilhadas entre as instâncias que estão nesse domain.

Process Controller: Apesar de não estar representado na figura, o Process Controller é de grande importância pois ele é responsável pela criação das instâncias e também do Host Controller que vamos falar a seguir. O Process Controller nao deve ser confundido com uma instância, ele é simplesmente um processo na JVM.

Host Controller: Como Domain Controller o Host Controller  também coordena as instâncias do domain. Ele é o responsável por fazer algo semelhando ao Farm Deployment(nao existe nessa versão), ou seja ele distribui o arquivo deployado para todas as instâncias do domain.

Servers: São as instâncias em si, onde estão as aplicações deployadas. Um ponto importante é que cada server é  um processo Java.

Para iniciar o JBoss AS 7 de modo domain execute o script JBOSS_HOME/domain.sh no Linux ou JBOSS_HOME/domain.bat no Windows.

Quando iniciamos o JBoss em Domain Mode na configuração default temos no minimo 4 processos. Um Host Controler, um Process Controller e dois Servers. Veja a configuração default do arquivo host.xml onde estão definidos os Server Groups e sua instâncias:

<servers>
  <server name="server-one" group="main-server-group">
   <!-- Remote JPDA debugging for a specific server
   <jvm name="default">
      <jvm-options>
       <option value="-Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"/>
      </jvm-options>
    </jvm>-->
  </server>
  <server name="server-two" group="main-server-group" auto-start="true">
    <!-- server-two avoids port conflicts by incrementing the ports in the default
    socket-group declared in the server-group -->
    <socket-bindings port-offset="150"/>
  </server>
  <server name="server-three" group="other-server-group" auto-start="false">
    <!-- server-three avoids port conflicts by incrementing the ports in
    the default socket-group declared in the server-group -->
    <socket-bindings port-offset="250"/>
  </server>
</servers>

Por default toda instância definida será iniciada,  podemos alterar esse comportamento utilizando a flag auto-start=”false” como está definido no server-three. Baixe a Visual VM e veja os processos que foram iniciados:

Process Controller

Host Controller

Server One

Server Two

Se você prestou atenção deve estar se pergutando onde está o processo do Domain Controller. Nesse caso ele é representado pelo Host Controller mas isso pode variar conforme a arquitetura do domain. Na próxima parte vamos ver como isso funciona.

Para finalizar altere a flag auto-start=”false” para  auto-start=”true” da instância server-three reinicie o JBoss e verifique os processos novamente. Note que agora temos 5 processos e nao 4 como antes.

Server Three

Na próxima parte veremos mais conceitos relacionados ao Domain Mode, formas de configurações e outras arquiteturas.

Quero fazer um agradecimento especial ao Samuel Tauil que ministrou o curso JBoss Application Administration I (JB248) na Red Hat Brasil a alguns meses atrás.  Tudo que estou passando aqui hoje aprendi nesse curso. Foi muito bom🙂 Eu recomendo a todos.

Vlw Samuca.

Espero que tenham gostado.

Abraços

2 comentários em “Introdução ao Domain Mode no JBoss AS 7.1.2 (JBoss EAP 6) – Parte 1

    Ricardo disse:
    4 de julho de 2013 às 17:10

    Boa tarde, Maurício

    Estive na Savant, fazendo o treinamento de Jboss 7. Poderia tirar uma dúvida, estou pensando em realizar o treinamendo JB248, só que aqui na empresa utilizamos a versão 7.1.1.Final da comunidade, você acha que muda muita coisa, vou conseguir aplicar as mesmas configurações. Pois o treinamento que realizamos na Savant com você..tudo funciona naquele ambiente (tudo no mesmo server), mas quando coloco as instâncias em outro server, não conecta no master.

      Mauricio Magnani Jr respondido:
      8 de julho de 2013 às 23:08

      Oi Ricardo,

      Desculpe a demora em responder estava viajando. Não muda nada não pode ficar tranquilo o JB248 é basicamente uma evolução do JBoss AS 7.1.1 vai valer a pena. Bom nisso eu posso te ajudar. Vc disse que não conecta né… acho que na apostila esqueci de dizer que é necessário a criação de um usuário para que as instâncias se conectem remotamente… vou fazer um post aqui no Blog falando sobre isso para poder te ajudar.

      Abs

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s