RHQ Server
Configurando Um Ambiente WildFly 8 Profissional – Parte 1
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:
- server-balancer1 –> CentOS 6.5, Apache 2.2.x
- server-balancer2 –> CentOS 6.5, Apache 2.2.x
- server-domain-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
- server-host1-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
- server-host2-widfly –> CentOS 6.5, WildFly 8.0.0.Final, Oracle JDK 1.7.x
- 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:
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
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
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
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:
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
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:
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:
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
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 $*" &
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:
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
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