RHQ Server

Configurando Um Ambiente WildFly 8 Profissional – Parte 1

Postado em Atualizado em

Olá meus amigos,

A muito tempo eu não escrevo pois a vida anda muito corrida. Com o lançamento do WildFly 8 surgiram algumas novidades no nosso servidor de aplicação preferido 🙂  Java EE 7, Segurança baseada em RBCA, Novo servidor Web são algumas das novidades mas o objetivo aqui hoje é ser bem prático. Para conhecer as novas funcionalidades aconselho a leitura do link: http://wildfly.org/about/ .

Vou separar esse tutorial por partes para ficar melhor organizado.

O que vamos utilizar?

  • WildFly 8.0.0.Final
  • Oracle JDK 1.7.x
  • CentOS 6.5 ( 6 Servidores )
  • Postgres 9.x
  • Apache 2.2.x
  • RHQ 4.10.0

Para deixar bem claro a estrutura que vamos criar ou associar os softwares ao servidores:

  1. server-balancer1 –> CentOS 6.5, Apache 2.2.x
  2. server-balancer2 –> CentOS 6.5, Apache 2.2.x
  3. server-domain-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
  4. server-host1-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
  5. server-host2-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
  6. server-rhq –> CentOS 6.5, Oracle JDK 1.7.x,Postgres 9.x

Apenas por curiosidade para esse tutorial utilizei os servidores da Digital Ocean  pois os valores são bem em conta e meu ThinkPad  não suportaria virtualizar essa quantidade de máquinas.

Instalando JDK

Navegue até o site da Oracle  e realize o download do jdk-7u51-linux-x64.rpm:

Link: http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html?ssSourceSiteId=otnpt

01-Blog

A instalação é bem simples. Utilizando o terminal execute os procedimentos abaixo nos servidores server-domain-widfly, server-host1-widfly, server-host2-widfly e server-rhq:

rpm -Uvh jdk-7u51-linux-x64.rpm
alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 200000
alternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 200000
alternatives --install /usr/bin/javac javac /usr/java/latest/bin/javac 200000
alternatives --install /usr/bin/jar jar /usr/java/latest/bin/jar 200000

Para verificar se foi instalado corretamente execute: java -version

03-blog

Instalando WildFly 8

Faça o download do arquivo wildfly-8.0.0.Final.zip:

Link: http://download.jboss.org/wildfly/8.0.0.Final/wildfly-8.0.0.Final.zip

04-blog

A instalação do WildFly 8 é bem simples, basta descompactar. Claro que existem outras fatores envolvidores como boas práticas, script de serviço, criação de grupos entre outras coisas. Sendo assim execute os procedimentos abaixo nos servidores server-domain-widfly, server-host1-widfly, server-host2-widfly:

unzip wildfly-8.0.0.Final.zip -d /opt/
ln -s /opt/wildfly-8.0.0.Final /opt/wildfly
groupadd wildfly
useradd -s /bin/bash -d /home/wildfly -m -g wildfly wildfly
chown -R wildfly:wildfly /opt/wildfly-8.0.0.Final
chown -h wildfly:wildfly /opt/wildfly

Edite o arquivo /etc/sudoers e adicione a seguinte permissão para o usuário wildfly. Lembrando que a policita de sudoers pode variar conforme a politica de segurança de cada sysadmin. Nesse caso estou adicionando total permissão:

wildfly ALL=(ALL) NOPASSWD:ALL

Agore altere o password o usuário wildfly e realize o login. A partir desse momentos vamos utilziar a permissão de sudo para realizar qualquer tarefa que exija permissão administrativa:

passwd wildfly
su wildfly

O proximo passo é configurar o script de serviço. Felizmente o wildfly já nos fornece um exemplo. Execute os comandos abaixo:

sudo cp /opt/wildfly/bin/init.d/wildfly-init-redhat.sh /etc/init.d/wildfly
sudo chkconfig --add /etc/init.d/wildfly
sudo chkconfig --level 3 /etc/init.d/wildfly
sudo cp /opt/wildfly/bin/init.d/wildfly.conf /etc/default/

Realize o teste no script de serviço, execute:

sudo service wildfly start

O seguinte erro ocorrerá:

Starting wildfly: chown: missing operand after `/var/run/wildfly'
Try `chown --help' for more information.

Isso aconteceu por que o script /etc/wildfly utiliza um parâmetro chamado JBOSS_USER que está comentado no arquivo padrão em /etc/default/wildfly.conf. Edite-o e remova o comentário ( # ) da linha JBOSS_USER=wildfly, deixando essa linha configurada.

Execute novamente:

sudo service wildfly start

Observe o log /opt/wildfly/standalone/log/server.log. o WildFly foi iniciado corretamente:  WildFly 8.0.0.Final “WildFly” started in 10717ms

05-blog

Instalando Apache Web Server e Mod Cluster

Instalar o Apache Web Server no CentOS 6.5 é uma tarefa bem simples pois vamos utilizar o gerenciador de pacotes yum. Sendo assim execute os procedimentos abaixo nos servidores server-balancer1 e server-balancer2:

yum install httpd httpd-devel apr-devel openssl-devel mod_ssl -y

Vamos verificar se o Apache Web Server está funcionando. Execute:

service httpd start

Abra seu navegador preferido e digite o IP do servidor em que o Apache foi instalado. A seguinte página de sucesso será exibida:

06-blog

Durante a inicialização o erro abaixo foi exibido:

Starting httpd: httpd: apr_sockaddr_info_get() failed for server-balancer1
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

Ou seja ele não conseguiu resolver o nome do servidor. Você pode adicionar o IP / Nome  do servidor em /etc/hosts ou editar o arquivo /etc/httpd/conf/httpd.conf e alterar o valor do parâmetro ServerName para localhost ( remova também o comentário ‘#’). Reinicie o Apache e perceba que o problema foi resolvido.

O proximo passo é realizar o download do Mod_Cluster. Para quem desconhece, o Mod_Cluster é um componente de balanceamento de carga inteligente desenvolvido pelo Red Hat. A configuração do Mod_Cluster é realizada em duas frentes: Apache Web Server e WildFly. Nessa parte vamos configurar a parte do Web Server.

Faça o download o Mod Cluster 1.2.6.Final.

Link: http://downloads.jboss.org/mod_cluster//1.2.6.Final/linux-x86_64/mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz

07-blog

Descompacte e copie os módulos do Mod_Cluster para o diretório modules do Apache Web Server:

wget http://downloads.jboss.org/mod_cluster//1.2.6.Final/linux-x86_64/mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz
tar -zxvf mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz
cp mod_advertise.so /etc/httpd/modules/
cp mod_manager.so /etc/httpd/modules/
cp mod_proxy_cluster.so /etc/httpd/modules/
cp mod_slotmem.so /etc/httpd/modules/

Agora edite o arquivo /etc/httpd/conf/httpd.conf e comente a linha LoadModule proxy_balancer_module modules/mod_proxy_balancer.so , para não ocorrer um conflito com mod_proxy_cluster.so:

#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

Em /etc/httpd/conf.d/ crie o arquivo mod_cluster.conf e adicione as configurações abaixo:

######################################################################################
#Configurações Adicionadas por Mauricio Magnani - mmagnani@redhat.com - 22/03/2014

LoadModule slotmem_module modules/mod_slotmem.so
LoadModule manager_module modules/mod_manager.so
LoadModule proxy_cluster_module modules/mod_proxy_cluster.so
LoadModule advertise_module modules/mod_advertise.so

MemManagerFile /var/cache/mod_cluster

Maxcontext 100
Maxnode 100
Maxhost 100

<VirtualHost *:80>

<Directory />
Order deny,allow
Allow from all
</Directory>

<Location /mod_cluster_manager>
SetHandler mod_cluster-manager
#Order deny,allow
#Deny from all
#Allow from all
AuthType Basic
AuthName "MCM"
AuthUserFile /etc/modclusterpassword
Require user admin
</Location>

KeepAliveTimeout 60
MaxKeepAliveRequests 0
ServerAdvertise Off
EnableMCPMReceive Off

</VirtualHost>

O arquivo de configuração acima atende basicamente um ambiente onde estamos utilizando UNICAST.

Os  parâmetros  Maxcontext, Maxnode e Maxhost foram adicionados por segurança para que nós possamos ter mais contextos / aplicações disponiveis em nosso ambiente já que por padrão é limitado a 20.

Observe também os parâmetros AuthType, AuthName  e AuthUserFile, eles foram adicionados visando estabelecer o minimo de segurança para o painel mod_cluster_manager em que contextos podem ser habilitados e desabilitados além de fornecer outras métricas. É muito importante nunca deixar esse painel aberto. Sendo assim o passo final é criar o usuário “admin” e password para esse painel.

Execute:

htpasswd -c /etc/modclusterpassword admin

Reinicie o Apache Web Server a abra o contexto mod_cluster_manager utilizando o navegador e se tudo estiver correto a página abaixo será exibida:

08-blog

Lembrando que os procedimentos realizados nessa parte deverão ser feito nos Dois servidores pois nessa arquitetura serão utilizado Dois Apaches.

Instalando Postgresql e  RHQ Server

Estamos instalando o Postgresql para armazenar as tabelas e métricas dos nossos servidores WildFly atrávés do RHQ Server. Os procedimentos abaixo devem ser realizados no servidor server-rhq.

Link: http://yum.postgresql.org/9.2/redhat/rhel-6.5-x86_64/

rpm -Uvh http://yum.postgresql.org/9.2/redhat/rhel-6.5-x86_64/pgdg-redhat92-9.2-7.noarch.rpm
yum install postgresql92 postgresql92-server postgresql92-contrib -y
su - postgres -c /usr/pgsql-9.2/bin/initdb

Edite o arquivo /var/lib/pgsql/9.2/data/postgresql.conf e altere o parâmetro listen_addresses e port como abaixo:

# - Connection Settings -
listen_addresses = '162.243.172.56' # what IP address(es) to listen on;
port = 5432 # (change requires restart)

Edite também o arquivo /var/lib/pgsql/9.2/data/pg_hba.conf adicionando o parâmetro abaixo:

# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0 0.0.0.0 md5

Reinicie o Postgresql para validar as alterações:

service postgresql-9.2 restart

Agora realize o login e crie o usuário e database para armazenar as métricas:

su postgres
createdb rhq
psql rhq
CREATE ROLE rhq WITH SUPERUSER LOGIN PASSWORD 'rhq';

Faça um pequeno teste para garantir que o usuário jon realmente tem acesso ao db rhq:

psql -h 162.243.172.56 -U rhq rhq

Finalizamos assim a configuração do Postgresql. Um ajuste mais fino das configurações pode ser vista no link abaixo:

Link: https://access.redhat.com/site/documentation/en-US/Red_Hat_JBoss_Operations_Network/3.2/html/Installation_Guide/setting-up-dbs.html#setting-postgres-settings

O proximo passo é realizar a instalação do RHQ Server. O servidor de monitoramente RHQ Server ( JON – versão enterprise ) é muito mais que um servidor para monitorar instâncias JBoss / WildFly, é uma plataforma completa de monitoramente que engloda desde file system, interfaces de rede, até envio SNMP traps para outras plataformas.

Faça o download do RHQ Server rhq-server-4.10.0.zip.

Link: http://sourceforge.net/projects/rhq/files/rhq/rhq-4.10/rhq-server-4.10.0.zip/download

09-blog

Execute os procedimentos abaixo:

unzip rhq-server-4.10.0.zip -d /opt/
ln -s /opt/rhq-server-4.10.0 /opt/rhq
groupadd rhq
useradd -s /bin/bash -d /home/rhq -m -g rhq rhq
chown -R rhq:rhq /opt/rhq-server-4.10.0
chown -h rhq:rhq /opt/rhq

O RHQ Server 4.10 oferece um script chamado rhqctl que é a maneiro mais simples de realizar a configuração inicial da instalação. Execute:

./rhq/bin/rhqctl install

O seguinte erro ocorrerá:

There is no JVM available.
Please set RHQ_JAVA_HOME or RHQ_JAVA_EXE_FILE_PATH appropriately.

Devemos definir o valor da variável RHQ_JAVA_HOME. Apenas para realizarmos a instalação na linha de comando execute:

export RHQ_JAVA_HOME=/usr/java/latest

Execute novamente o script rhqctl e siga as instruçãoes como abaixo:

[root@server-rhq opt]# ./rhq/bin/rhqctl install
22:39:10,459 INFO [org.jboss.modules] JBoss Modules version 1.2.0.CR1
The [jboss.bind.address] property is required but not set in [rhq-server.properties].
Do you want to set [jboss.bind.address] value now?
yes|no: yes
jboss.bind.address: 0.0.0.0
Is [0.0.0.0] correct?
yes|no: yes

Um novo erro ocorreu. Edito o arquivo /etc/hosts e adicione a configuração com o IP / Hostname:

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain
162.243.172.56 server-rhq

Para evitar mais problemas remova o arquivo /opt/rhq-data.

Edite também o arquivo /opt/rhq/bin/rhq-server.properties deixando a configuração da postgresql como abaixo:

# PostgreSQL database
rhq.server.database.connection-url=jdbc:postgresql://162.243.172.56:5432/rhq
rhq.server.database.user-name=rhq
rhq.server.database.password=34dd4e5bd20222b8
rhq.server.database.type-mapping=PostgreSQL
rhq.server.database.server-name=162.243.172.56
rhq.server.database.port=5432
rhq.server.database.db-name=rhq
hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
rhq.server.quartz.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate

O password pode deve ser encriptado utilizando o script /opt/rhq/bin/rhq-encode-password.sh.

[root@server-rhq opt]# ./rhq/bin/rhq-encode-password.sh
22:50:57,172 INFO [org.jboss.modules] JBoss Modules version 1.2.0.CR1
Password: rhq
22:51:01,240 INFO [org.rhq.enterprise.server.installer.Installer] *** Encoded password for rhq-server.properties:
22:51:01,241 INFO [org.rhq.enterprise.server.installer.Installer] *** rhq.server.database.password=34dd4e5bd20222b8
[root@server-rhq opt]# vim /opt/rhq/bin/rhq-server.properties

Execute novamente o script ./rhq/bin/rhqctl install e observe que o RHQ Server foi instalado corretamente:

[install] [echo] DONE! Agent version 4.10.0 (build number=fe32169) has been installed to /opt
22:59:37,854 INFO [org.rhq.server.control.command.Install] The agent installer finished running with exit value 0
22:59:37,854 INFO [org.rhq.server.control.command.Install] Configuring the RHQ agent with default configuration file: /opt/rhq-agent/conf/agent-configuration.xml
22:59:37,928 INFO [org.rhq.server.control.command.Install] Finished configuring the agent
Trying to stop the RHQ Server...
RHQ Server (pid=4188) is stopping..e

Crie o script de serviço para o RHQ Server:

cp /opt/rhq/bin/rhqctl /etc/init.d/rhq

Adicione a variável RHQ_SERVER_HOME:

RHQ_SERVER_HOME=/opt/rhq

No topo do arquivo /etc/init.d/rhq abaixo de #!/bin/sh adicione as seguintes linhas:

#chkconfig: 2345 95 20
#description: RHQ Server 4.10
#processname: standalone.sh

Abaixo de das linhas acima configure um usuário “non-root” para iniciar o processo que em nosso caso é o rhq:

su - rhq -c "/etc/init.d/rhq $*" &amp;

Salve o arquivo e execute os comandos abaixo para terminar a configuração do serviço:

chkconfig --add rhq
chkconfig rhq --list
chkconfig --level 5 rhq on

Edite o arquivo /etc/sudoers e adicione a seguinte permissão para o usuário rhq.

rhq ALL=(ALL) NOPASSWD:ALL

Agore altere o password o usuário rhq e realize o login. A partir desse momentos vamos utilziar a permissão de sudo para realizar qualquer tarefa que exija permissão administrativa:

passwd rhq
su rhq

Alter as permissões dos arquivos rhq:

sudo chown -R rhq:rhq /opt/rhq*

Inicie o serviço:

sudo service rhq start
Trying to start the RHQ Server...
RHQ Server (pid 6307 ) is starting
Starting RHQ Agent...
RHQ Agent (pid 6474 ) is ✔running

Abra seu navegador com a url: IP DO SERVIDOR:7080. Se conseguir ver a página abaixo é por que a instalação foi realizada com sucesso:

10-blog

Terminamos a parte de instalação dos nossos servidores. Na proxima parte vamos iniciar a configuração de todos esses softwares para que eles trabalhem em conjunto.

Um grande abraço

— Mauricio Magnani Jr

Obs: Se encontrarem erros de pt BR me avisem pois fiz meio que na madruga rs.

Instalando RHQ Server 4.2 no CentOS 5.6

Postado em Atualizado em

Olá, Hoje vamos aprender o básico de  como  instalar e configurar o RHQ Server.  Para que ainda não sabe o que é o RHQ Server, veja o execelente slide, da palestra RHQ: Gerenciamento Efetivo de Servidores JBoss – Rafael Soares que foi realizada do JBoss In Bossa 2011.

Primeiramente devemos realizar o download do RHQ Server, no seguinte endereço: http://www.rhq-project.org/display/RHQ/Download , baixe a versão 4.2.

Agora utilizando o terminal descompacte e inicie o RHQ Server.

unzip rhq-server-4.2.0.zip
cd rhq-server-4.2.0/bin/
./rhq-server.sh start

Caso visualize no terminal algo pareçido com Trying to start the RHQ Server… RHQ Server (pid 18053) is starting, siginifica que a instalação do RHQ Server iniciou com sucesso.

Agora abra o browser de sua preferência e acesse o seguinte endereço: http://seu-ip:7080/ , deverá visualizar a tela abaixo, clique em Clique aqui para continuar a instalação.

Logo após preencha os dados conforme solicitado.

Agora clique em Instalar Servidor! . Você verá a tela abaixo, apenas aguarde.

Logo após a instalação do RHQ Server estará finalizada. Agora vá em http://Seu-Ip:7080/Login.do , para realizar o login. Por default o login e senha estão configurados como rhqadmin .
Agora deve-se instalar um agent.  O Agent provê a comunicação da Plataforma ( S.O ), com o RHQ Server.

Em http://Seu-Ip:7080/agentupdate/download , baixe o  rhq-enterprise-agent-4.2.0.jar, que é o nosso agent de fato e deverá ser instalado.  Para isso siga os comandos abaixo:

cd /opt/
java -jar rhq-enterprise-agent-4.2.0.jar --install
cd rhq-agent/bin/
./rhq-agent.sh

Você deverá responder algumas perguntas conforme solicitado, se ficar na duvida siga as sugestões da instalação.
A Instalação deverá estar finalizada. Agora realize login novamente e realize a importação inicial da plataforma que o Agent expôs. Existem inumeros pluguins e a interface do RHQ é bem intuitiva. Não se esqueça de alterar a senha default do rhqadmin, e crie grupos e usuários conforme necessidade.

Na seguinte url: http://rhq-project.org/display/RHQ/Videos , você encontra alguns demos de funcionalidade do RHQ / Jopr 2 .

Espera que seja util.

Abraços!

Ps: Foi utilizado o PostgreSQL 9.0