Escolar Documentos
Profissional Documentos
Cultura Documentos
TribunaldeJustiadoEstadodeRoraima
WILDFLY 8.2
MODCLUSTER 1.3.0
Conceitos, Instalao e
Configurao
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
SUMRIO
1. Conceitos
1.2 Mdulos
2. Instalao
3. Configurao
3.1 Servidor Master
7
7
10
11
11
12
12
14
4. Modcluster
15
4.1 Pr-requisitos
15
4.2 Compilao
15
4.3 Instalao
16
5. Referncias
17
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
1. Conceitos
1.1 Modos de operao
O servidor de aplicao wildfly pode ser iniciado em 2 modos diferentes de
operao. O modo domnio gerenciado (managed domain) permite rodar e
gerenciar uma topologia multi-servidor. J no modo servidor independente
(standalone mode) apenas uma instncia utilizada.
No standalone mode possvel iniciar o servidor com diferentes profiles:
Standalone:
profile
padro.
Definido
no
arquivo
<standalone/configuration/standalone.xml> a configurao certificada
JEE 7 web profile com as tecnologias necessrias.
Standalone-ha:
Definido
no
arquivo
<standalone/configuration/standalone-ha.xml> a configurao do
standalone.xml com alta disponibilidade.
Standalone-full:
Definido
no
arquivo
<standalone/configuration/standalone-full.xml>
a
configurao
certificada JEE 7 full profile incluindo todas as tecnologias JEE 7
necessrias.
Standalone-full-ha:
Definido
no
arquivo
<standalone/configuration/standalone-full-ha.xml> a configurao do
standalone-full.xml com alta disponibilidade.
No
managed
domain
existe
apenas
o
arquivo
<domain/configuration/domain.xml> (padro) com o profile web e full, ambos
com e sem alta disponibilidade.
Para iniciar o servidor de aplicao fornecendo o profile como parmetro no
standalone mode:
$ ./bin/standalone.sh --server-config=standalone.xml
J no managed domain:
$ .bin/domain.sh --domain-config=domain.xml
1.2 Mdulos
Na verso anterior do servidor de aplicao, JBoss AS 7, os mdulos ficavam
todos espalhados dentro do diretrio <modules>. Conforme novos mdulos
iam sendo adicionados ficava difcil saber qual mdulo era nativo e qual havia
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
sido adicionado pelo usurio. Como soluo para este problema no Wildfly os
mdulos nativos ficam dentro do diretrio <modules/system/layers/base> e os
mdulos extras podem ser adicionados dentro de <modules> apenas, ficando
separados dos mdulos originais.
Um mdulo composto por um diretrio que o define, um subdiretrio
definindo o slot que por padro o main com os jars e um arquivo chamado
<module.xml> que descreve as dependncias do mdulo.
modules/br/jus/tjrr/aas (definio)
modules/br/jus/tjrr/aas/main (slot padro)
modules/br/jus/tjrr/aas/1.0 (slot 1.0)
<subsystem xmlns="urn:jboss:domain:ee:2.0">
<global-modules>
<module name="groovy-all"/>
</global-modules>
...
2. Instalao
Para instalar o servidor de aplicao basta extrair o zip ou tar.gz baixado do
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<module name="javax.transaction.api"/>
</dependencies>
</module>
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
3. Configurao
3.1 Servidor Master
Vamos editar o arquivo <domain/configuration/host.xml> para iniciar as
configuraes:
<?xml version='1.0' encoding='UTF-8'?>
<host name="producao28m" xmlns="urn:jboss:domain:2.2"> <!-- nome do servidor -->
<management>
...
</management>
<domain-controller>
<local/>
</domain-controller>
<interfaces>
<interface name="management">
<inet-address value="10.50.1.28"/> <!-- ip para expor a interface de gerenciamento
-->
</interface>
<interface name="public">
<inet-address value="10.50.1.28"/> <!-- ip para expor a interface pblica (aplicaes)
-->
</interface>
<interface name="unsecure">
<any-address/>
</interface>
</interfaces>
<jvms>
<jvm name="default"> <!-- configuraes de memria -->
<heap size="3g" max-size="3g"/>
<permgen size="256m" max-size="512m"/>
<jvm-options>
<option value="-server"/>
</jvm-options>
</jvm>
</jvms>
<servers directory-grouping="by-type"> <!-- necessrio para alterar o diretrio padro dos
logs -->
<server name="app-unicas-01" group="gp-app-unicas-01" auto-start="true"/> <!-grupo de aplicaes rodando na porta 8080 -->
<server name="app-replicadas" group="gp-app-replicadas" auto-start="true"> <!-grupo de aplicaes rodando na porta 8330 (8080 + 250 do offset) -->
<socket-bindings port-offset="250"/>
</server>
</servers>
</host>
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<server-groups>
<server-group name="gp-app-unicas-01" profile="full-ha"> <!-- definio do grupo gpapp-unicas-01 -->
<jvm name="default">
<heap size="1024m" max-size="2048m"/> <!-- definio de memria do grupo gpapp-unicas-01 -->
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
<server-group name="gp-app-unicas-02" profile="full-ha"> <!-- definio do grupo gpapp-unicas-02 -->
<jvm name="default">
<heap size="1024m" max-size="2048m"/> <!-- definio de memria do grupo gpapp-unicas-02 -->
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
<server-group name="gp-app-replicadas" profile="full-ha"> <!-- definio do grupo gpapp-replicados -->
<jvm name="default">
<heap size="1024m" max-size="2048m"/> <!-- definio de memria do grupo gpapp-replicados -->
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
</server-groups>
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<subsystem xmlns="urn:jboss:domain:messaging:2.0">
E
adicione
as
seguintes
filas
(envioEmailQueue,
acompanhamentoDocumentoQueue,
ocorrenciaFuncionarioQueue
e
loggerQueue):
<jms-queue name="envioEmailQueue">
<entry name="queue/envioEmail"/>
<entry name="java:jboss/exported/jms/queue/envioEmail"/>
</jms-queue>
<jms-queue name="acompanhamentoDocumentoQueue">
<entry name="queue/acompanhamentoDocumento"/>
<entry
name="java:jboss/exported/jms/queue/acompanhamentoDocumento"/>
</jms-queue>
<jms-queue name="ocorrenciaFuncionarioQueue">
<entry name="queue/ocorrenciaFuncionario"/>
<entry name="java:jboss/exported/jms/queue/ocorrenciaFuncionario"/>
</jms-queue>
<jms-queue name="loggerQueue">
<entry name="queue/logger"/>
<entry name="java:jboss/exported/jms/queue/logger"/>
</jms-queue>
10
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<authentication>
<login-module
code="br.jus.tjrr.aas.security.TJRRLoginModule" flag="required"
module="tjrr.aas-module">
<module-option name="throwValidateError"
value="true"/>
</login-module>
</authentication>
</security-domain>
Seguindo estes passos as aplicaes que utilizam o AAS s precisaro que o
agente do AAS esteja rodando no servidor, procedimento realizado com um
deploy do agente para o servidor de aplicao posteriormente.
11
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<load-metric type="cpu"/>
</dynamic-load-provider>
</mod-cluster-config>
1.
2.
3.
4.
5.
6.
7.
12
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
to="jboss.domain.config.dir"/>
</authentication>
<authorization map-groups-to-roles="false">
<properties path="mgmt-groups.properties" relativeto="jboss.domain.config.dir"/>
</authorization>
</security-realm>
<security-realm name="ApplicationRealm">
<authentication>
<local default-user="$local" allowed-users="*" skip-group-loading="true"/>
<properties path="application-users.properties" relativeto="jboss.domain.config.dir"/>
</authentication>
<authorization>
<properties path="application-roles.properties" relativeto="jboss.domain.config.dir"/>
</authorization>
</security-realm>
</security-realms>
<audit-log>
<formatters>
<json-formatter name="json-formatter"/>
</formatters>
<handlers>
<file-handler name="host-file" formatter="json-formatter" path="audit-log.log"
relative-to="jboss.domain.data.dir"/>
<file-handler name="server-file" formatter="json-formatter" path="audit-log.log"
relative-to="jboss.server.data.dir"/>
</handlers>
<logger log-boot="true" log-read-only="false" enabled="false">
<handlers>
<handler name="host-file"/>
</handlers>
</logger>
<server-logger log-boot="true" log-read-only="false" enabled="false">
<handlers>
<handler name="server-file"/>
</handlers>
</server-logger>
</audit-log>
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket interface="management" port="$
{jboss.management.native.port:9999}"/>
</native-interface>
</management-interfaces>
</management>
<domain-controller>
<remote
host="${jboss.domain.master.address}"
{jboss.domain.master.port:9999}" security-realm="ManagementRealm"/> <!-variveis para passar via script de inicializao para encontrar o master -->
</domain-controller>
port="$
definindo
13
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<interfaces>
<interface name="management">
<inet-address value="10.50.1.30"/> <!-- ip da mquina slave -->
</interface>
<interface name="public">
<inet-address value="10.50.1.30"/> <!-- ip da mquina slave -->
</interface>
<interface name="unsecure">
<any-address/>
</interface>
</interfaces>
<jvms>
<jvm name="default">
<heap size="3g" max-size="3g"/>
<permgen size="256m" max-size="512m"/>
<jvm-options>
<option value="-server"/>
</jvm-options>
</jvm>
</jvms>
<servers directory-grouping="by-type"> <!-- necessrio para alterar o diretrio padro dos
logs -->
<server name="app-unicas-02" group="gp-app-unicas-02" auto-start="true"> <!-grupo de aplicaes 2 rodando na porta 8230 (8080 + 150) -->
<socket-bindings port-offset="150"/>
</server>
<server name="app-replicadas" group="gp-app-replicadas" auto-start="true"> <!-grupo de aplicaes replicadas rodando na porta 8330 (8080 + 250) -->
<socket-bindings port-offset="250"/>
</server>
</servers>
</host>
14
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
4. Modcluster
Infelizmente a ltima verso disponvel do modcluster no site a 1.2.6.Final
que no compatvel com o apache 2.4 que est disponvel para a maior parte
das distribuies. Para fazer o modcluster funcionar no apache 2.4 necessrio
compilar os fontes da verso 1.3.0.Final e adicionar no apache seguindo os
prximos passos.
4.1 Pr-requisitos
Instalar as dependncias:
#
#
#
#
apt-get
apt-get
apt-get
apt-get
update
install -y autoconf libtool git apache2
remove apache2-threaded-dev
install -y apache2-prefork-dev
4.2 Compilao
Baixar o fonte da verso 1.3.0.Final:
$ git clone https://github.com/modcluster/mod_cluster.git
$ git checkout 1.3.0.Final
15
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
$ cd mod_cluster
Compilar os mdulos:
$
$
$
$
cd native/advertise
./buildconf
./configure --with-apxs=/usr/bin/apxs
make
$
$
$
$
cd ../mod_manager
./buildconf
./configure --with-apxs=/usr/bin/apxs
make
$
$
$
$
cd ../mod_proxy_cluster
./buildconf
./configure --with-apxs=/usr/bin/apxs
make
$
$
$
$
cd ../mod_cluster_slotmem
./buildconf
./configure --with-apxs=/usr/bin/apxs
make
4.3 Instalao
A instalao realizada copiando os mdulos gerado na etapa anterior para a
instalao do apache.
#
#
#
#
cp native/advertise/*.so /usr/lib/apache2/modules/
cp native/mod_manager/*.so /usr/lib/apache2/modules/
cp native/mod_proxy_cluster/*.so /usr/lib/apache2/modules/
cp native/mod_cluster_slotmem/*.so /usr/lib/apache2/modules/
advertise_module /usr/lib/apache2/modules/mod_advertise.so
manager_module /usr/lib/apache2/modules/mod_manager.so
proxy_cluster_module /usr/lib/apache2/modules/mod_proxy_cluster.so
slotmem_module /usr/lib/apache2/modules/mod_cluster_slotmem.so
Crie
um
link
simblico
para
o
</etc/apache2/modsavailable/proxy_cluster.load> dentro de </etc/apache2/mods-enabled> com o
nome <proxy_cluster.load>:
# ln -s /etc/apache2/mods-available/proxy_cluster.load /etc/apache2/modsenabled/proxy_cluster.load
16
PoderJudicirio
TribunaldeJustiadoEstadodeRoraima
<IfModule proxy_module>
Listen *:8080
Listen *:5588
ManagerBalancerName tjrr-ha-balancer
MemManagerFile /var/cache/mod_cluster
<VirtualHost *:8080>
<Location />
Order deny,allow
Allow from all
#Require all granted
</Location>
KeepAliveTimeout 900
MaxKeepAliveRequests 0
EnableMCPMReceive
ServerAdvertise Off
</VirtualHost>
<VirtualHost *:5588>
<Location /modcluster>
SetHandler mod_cluster-manager
AuthType Basic
AuthName "TJRR-Balancer"
AuthUserFile /etc/modclusterpassword
Require user tjadmin
</Location>
</VirtualHost>
</IfModule>
5. Referncias
1. https://jbossdivers.wordpress.com/2014/03/23/configurando-umambiente-wildfly-8-profissional/
2. https://jbossdivers.wordpress.com/2014/03/23/configurando-umambiente-wildfly-8-profissional-parte-2/
3. http://blog.alexis-hassler.com/2014/08/compiler-modcluster-pourapache24.html
4. https://jbossdivers.wordpress.com/2013/11/11/protegendo-o-mod-clustermanager/
17