Configurando Domain Mode no EAP 6 – RHEL/CentOS/Fedora

Domain Mode é uma das principais features do Enterprise Application Platform (EAP), pois permite o gerenciamento de toda a configuração das instâncias de um único ponto, no caso o arquivo domain.xml através do Domain Controller. Toda as instâncias gerenciadas pelo Domain Controller são chamadas de Host Controllers e podem ter suas configurações alteradas dependendo da necessidade. Podemos utilizar grupos de instâncias, assim podemos definir grupos instâncias que estão em diferentes hosts. 

domain

Obs: Vale lembrar que a utilizando Domain Mode não quer dizer que o ambiente está em Cluster, mas que todos os Host Controllers do ambiente estão compartilhando a configuração do Domain Controller.

Quando utilizamos Domain Mode três processos separados são iniciados:

  • Process Controller: responsável por gerenciar e start/restartar os processos;
  • Host Controller: um dos Host Controllers é o Domain Controller e os outros são slaves;
  • Server Instance: instância do servidor de aplicação;

Instalação

Instalação do JDK: https://serjaum.wordpress.com/2013/04/21/instalando-oracle-jdk6/

Instalação do EAP6: https://serjaum.wordpress.com/2013/04/21/instalando-eap-6/

Hosts

Neste exemplo utilizei duas máquinas virtuais com os respectivos IPs:

Nome da máquina: host1
IP: 192.168.122.1

Nome da máquina: host2
IP: 192.168.122.2

Obs: utilizei o KVM como hypervisor, que por padrão configura a comunicação entre todos as máquinas virtuais.

Dica: Se estiver utilizando o VirtualBox, segue >>> aqui <<< um tutorial que ensina como configurar a comunicação entre as máquinas envolvidas.

Precisamos fazer com que as máquinas host1 e host2 consigam se conectar entre si através do hostname.

Adicione no arquivo /etc/hosts os nomes das duas máquinas com seus respectivos IPs:

# vim /etc/hosts

192.168.122.1 host1
192.168.122.2 host2

Obs: faça a mesma alteração no host2

Desabilitando o Firewall

O próximo passo é desabilitar o firewall. Como root, execute o seguinte comando em ambas as máquinas:

# service iptables stop 

O comando acima desabilita o firewall.

# chkconfig iptables off 

O comando acima garante que o firewall não será ativado nos próximos boots.

Desabilitando o SELinux

Como root, altere nas duas máquinas o parâmetro SELINUX=enforcing para SELINUX=disabled

# vim /etc/sysconfig/selinux

Para confirmar que as duas máquinas estão se conectando entre si, tente executar o comando ping passando como parâmetro o IP da outra máquina.

No terminal da host1, digite:

$ ping host2

Execute o mesmo na host2.

Por questões didáticas, vamos alterar as instâncias da máquina host2, no arquivo host.xml:

Antes: 

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

Depois: 

<servers>
<server name="server-four" group="main-server-group" auto-start="true">
<socket-bindings port-offset="400"/>
</server>
<server name="server-five" group="main-server-group" auto-start="true">
<socket-bindings port-offset="500"/>
</server>
</servers>

Percebam que adicionei um port-offset nas instâncias para não termos conflitos de portas. Então, para acessarmos o instância server-four temos que apontar o browser para a URL:

http://host2:8440

Para acessarmos o server-five:

http://host2:8580

Domain Controller (host1)

Na máquina host1 aponte o terminal para o diretório /opt/jboss-eap-6.0/bin e execute o seguinte comando:

$ ./add-user.sh

[user1@host1 bin]$ ./add-user.sh

What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a

Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : master
Password : 123456
Re-enter Password :
About to add user ‘master’ for realm ‘ManagementRealm’
Is this correct yes/no? yes
Added user ‘master’ to file ‘/opt/jboss-eap-6.0/standalone/configuration/mgmt-users.properties’
Added user ‘master’ to file ‘/opt/jboss-eap-6.0/domain/configuration/mgmt-users.properties’
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value=”MTIzNDU2″ />

Iniciar o Domain Controller

Na máquina host1 aponte o terminal para o diretório /opt/jboss-eap-6.0/bin e execute o seguinte comando:

./domain.sh -b host1 -bmanagement host1

Com o EAP no ar, aponte o browser para a seguinte URL:

http://host1:9990

Username : master
Password : 123456

Na máquina host1 aponte o terminal para o diretório /opt/jboss-eap-6.0/bin e execute o seguinte comando:

[user1@host1 bin]$ ./add-user.sh

What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a

Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : slave
Password : 123456
Re-enter Password :
About to add user ‘slave’ for realm ‘ManagementRealm’
Is this correct yes/no? yes
Added user ‘slave’ to file ‘/opt/jboss-eap-6.0/standalone/configuration/mgmt-users.properties’
Added user ‘slave’ to file ‘/opt/jboss-eap-6.0/domain/configuration/mgmt-users.properties’
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret value=”MTIzNDU2″ />

Obs: o usuário “slave” será utilizado para se conectar ao master através do host2, portanto devemos definir o nome “slave” para o host2. Tal tarefa será descrita adiante.

Host Controller (host2)

Remova o arquivo /opt/jboss-eap-6.0/domain/configuration/domain.xml, pois a configuração do host1 será utilizada pelo host2. Esta é a ideia quando se monta um grupo de servidores: ter um grupo de servidores compartilhando uma única configuração, nessa caso o arquivo domain.xml do host1.

$ rm domain.xml

Altere o arquivo /opt/jboss-eap-6.0/domain/configuration/host.xml

Linha 3 aprox.)

<host name=”slave” xmlns=”urn:jboss:domain:1.3″>

Linha 36 aprox.)

<domain-controller>
<remote host=”host1″ port=”9999″ security-realm=”ManagementRealm”/>
</domain-controller>

Lembram do usuário “slave” criado na primeira máquina através do add-user.sh? Precisamos converter a senha 123456 para Base64. Há diversas maneiras para codificar uma senha, vamos utilizar o link http://www.base64online.com tal tarefa. O resultado é o seguinte:

MTIzNDU2

Obs: em versões mais novas do EAP 6, como esta que estamos utilizando, esta tarefa não é necessária, pois a senha já é convertida automaticamente assim que criamos algum usuário:

To represent the user add the following to the server-identities definition <secret value=”MTIzNDU2” />

Depois de codificar a senha para Base64, precisamos adicioná-la dentro da tag <server-identities> do arquivo host.xml do host2:

Linha 8 aprox.)

<security-realm name=”ManagementRealm”>
<server-identities>
<secret value=”MTIzNDU2” />
</server-identities>

Iniciar o Host Controller

./domain.sh -b host2 -bmanagement host2

No próximo post ensinarei como montar um cluster utilizando algumas instâncias do EAP6.



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