segunda-feira, 23 de junho de 2014

Apache Web Service + JBoss Mod cluster (Loadbalance) + JBoss AS 7 no CentOS 6.5 - 64 bits


INTRODUÇÃO

explicamos detalhadamente a instalação do Apache Web Service (conhecido como "httpd") com o JBoss Mod Cluster já instalado. Nesse artigo, vamos explicar a configuração para o Apache Web Service "limpo", isto é, o httpd instalado no CentOS sem nenhum módulo adicional, em outras palavras, com a configuração padrão do httpd para o CentOS.



DESENVOLVIMENTO

Instalando e configurando o Apache Web Service (httpd).

Instalar os seguintes pacotes no CentOS 6.5 64 bits.

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

Depois disso, iniciar serviço do httpd com o comando:

service httpd start

Ou na interface gráfica dentro do CentOS, No menu "Sistema" > "Administração" > "Serviços", conforme mostra a figura a seguir:



Depois de iniciar o servidor httpd, o resultado no endereço http://127.0.0.1 (local) ou outro endereço que está configurado na interface de rede do CentOS, deve ser a página inicial do servidor httpd, conforme mostra a figura a seguir:





Depois de testar o servidor httpd, agora baixe (desligue) o httpd que vamos inserir módulos do projeto JBoss ModCluster para poder configurar o loadbalance (Balanceador de carga, isto é, de requisições HTTP).

Para isso, entre nesse site: http://mod-cluster.jboss.org/
faça o download da versão 1.2.6.Final para o sistema operacional linux-x86_64

Observação: Não baixe as versões que venha com o httpd incluído, pois estaremos usando o httpd fornecido dentro dos repositórios de pacotes .rpm do CentOS 6.5. Dá para notar que o tamanho do arquivo com o httpd é da ordem de megabytes, enquanto o arquivo só com os módulos é da ordem de kilobytes.

Ao baixar o arquivo, descompacte o arquivo *.tar.gz com o seguinte comando:

tar xvfz mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz 

Dentro do arquivo compactado, teremos 4 arquivos binários com a extensão *.so que são:

mod_advertise.so
mod_manager.so
mod_proxy_cluster.so
mod_slotmem.so

Esses são os 4 módulos que vão ser inseridos na pasta /etc/httpd/modules, então, deve-se copiar esses arquivos para esse diretório, tomando cuidado para que o dono e grupo dos arquivos sejam sempre root.
Caso contrário, ao iniciar o httpd, o mesmo reportará erros de permissão nos módulos e não conseguirá ser iniciado.

Agora vamos para o diretório  /etc/httpd/conf e edite o arquivo httpd.conf com os seguintes dados:

Comente a linha do módulo proxy_balancer_module para não entrar em conflito com o modulo de proxy do JBoss Cluster (mod_proxy_cluster) que estaremos incluindo:

#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so

Insira as seguintes linhas depois das outras linhas com o nome "LoadModule":

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


Inserir a seguinte linha depois da linha com o comando "Include conf.d/*.conf"

MemManagerFile /var/cache/mod_cluster

Por último, inserir o comando "IfModule" para o módulo "manager_module" conforme mostra código a seguir:

<IfModule manager_module>
   Listen 0.0.0.0:6666
   ManagerBalancerName mycluster
   <VirtualHost *:6666>
       <Location />
       Order deny,allow
       Deny from all
       Allow from all
  
       KeepAliveTimeout 300
       MaxKeepAliveRequests 0
       ServerAdvertise Off
       EnableMCPMReceiver Off
  
       <Location /mod_cluster_manager>
            SetHandler mod_cluster-manager
            Order deny,allow
            Deny from all
            Allow from all
       </Location>
   </VirtualHost>
</IfModule>


Depois disso, iniciar o servidor com o comando:

service httpd start

Observação: Nesse momento, é importante iniciar o servidor dessa maneira para que o mesmo possa imprimir no console os erros que possam ocorrer. Se iniciar pela interface gráfica e se tiver erros no arquivo httpd.conf, o servidor não iniciará e ficar com um alerta dizendo que está morto, ou a interface gráfica ficará travada. Também podemos olhar os logs no diretório /etc/httpd/logs mas o trabalho para chegar até ai e usar os velhos comandos como tail -f error.log seria muito demorado. Quando ocorre erros, o erro já foi reportado no próprio console, depois de executar o comando service httpd start.


Configurando o JBoss AS 7 para funcionar com o httpd + mod_cluster

Próximo passo é configurar o JBoss AS 7 para se conectar no httpd com o mod_cluster instalado. Para isso, altere o arquivo de configuração standalone-full-ha.xml da pasta $JBOSS_HOME/standalone/configuration conforme as configurações abaixo:

<subsystem xmlns="urn:jboss:domain:modcluster:1.1">
    <mod-cluster-config advertise-socket="modcluster" proxy-list="127.0.0.1:6666" connector="ajp">
         <dynamic-load-provider history="10" decay="2">
              <load-metric type="cpu" weight="2" capacity="1" />
              <load-metric type="sessions" capacity="512" />
         </dynamic-load-provider>
    </mod-cluster-config>
</subsystem>

<subsytem xmlns="urn:jboss.domain:web:1.2" default-virtual-server="default-host" instance-id="%{jboss.node.name}" native="false">
    <connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http" />
    <connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp" />
    <virtual-server name="default-host" enable-welcome-root="true" >
          <alias name="localhost" />
    </virtual-server>
</subsystem>

<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}" >
    <socket-binding name="ajp" port="8009" />
    <socket-binding name="http" port="8080" />

</socket-binding-group>

Depois disso, abrir navegador no endereço http://127.0.0.1, conforme mostra a figura seguir:



Note que a página inicial do httpd "sumiu", isto é, ficou no lugar da página inicial do JBoss AS 7. Isso mostra que o balanceador de carga (mod_cluster) + httpd (servidor web) estão funcionando juntos e corretamente!



CONCLUSÃO

Mostramos nesse artigo como configurar, instalar o JBoss ModCluster dentro do Apache Web Service e assim, funcionando junto com o servidor JBoss AS 7. Lembrando que podemos instanciar N servidores jboss para trabalhar com o mesmo servidor httpd, desta maneira, se um servidor jboss cair (for derrubado), o httpd com o mod_cluster instalado, detectará que uma instância do cluster de JBoss AS 7 caiu e não enviará mais requisições a essa instância.

Para realizar o acesso externo no CentOS, veja mais informações nesse link: http://tidahora.com.br/index.html/doku.php?id=instalando_o_mantis_no_centos_6. Esse artigo cita a instalação de um outro programa web como o Mantis (https://www.mantisbt.org/), mas cita a desativação do serviço SELINUX com a edição do arquivo /etc/selinux/config e pede para mudar a seguinte linha:

SELINUX = disabled

Para desabilitar o SELINUX. Depois, no menu "Sistema" > "Administração" > "Firewall" e configure o par porta/protocolo para o Firewall deixar fazer o acesso. Lembrando de clicar em "Aplicar" para as configurações possam estar valendo no sistema.
Por último, configurar o Iptables no linux para deixar realizar o acesso pelas portas necessárias. A configuração disso está fora do escopo desse artigo, podendo ser realizada pelo link http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html.
Ou como solução paliativa e para fins de desenvolvimento e testes, pode se desativar o serviço de Iptables no menu "Sistema" > "Administração" > "Serviços".


REFERÊNCIAS

http://jbossdivers.wordpress.com/2014/03/23/configurando-um-ambiente-wildfly-8-profissional/






quinta-feira, 5 de junho de 2014

Overclock de Notebook


INTRODUÇÃO

Nesse artigo vamos falar um pouco sobre overclock de notebook, de maneira a melhorar o desempenho e consequentemente, esticar a vida útil do produto. Caso contrário, teríamos que comprar outro notebook em um curso prazo de tempo. Para isso, vamos falar de algumas técnicas e modificações no notebook para melhorar o desempenho. E por último, é importante destacar que o overclock aplicado no notebook não visa necessariamente aumentar a frequência do processador para além da fabricada (1,8 GHz) e sim, aplicar técnicas que visam dissipar calor, melhorar throughput (fluxo, vazão, por unidade de tempo, usando qualquer medida, como por exemplo, bytes por segundo, etc) entre os dados que trafegam entre a CPU-Memória e outros.


DESENVOLVIMENTO

Todo semicondutor como CI, transistores, diodos e outros ao entrarem em funcionamento, gastam energia por unidade de tempo (Joules / segundo) que é chamada de potência. Quanto maior a potência dissipada, maior o calor dissipado pelo semicondutor.
O aquecimento em semicondutores como CI, transistores, diodos e outros, faz com que os elétrons ganhem energia extra para mudar de níveis de tensão, sem precisar do chaveamento lógico que ocorre durante o funcionamento da CPU. Com isso, o estado interno da CPU (Registradores, memória, etc) tem funcionamento instável o que pode levar a erros de cálculos e constantes travamentos. Por isso, precisamos dissipar esse calor, pois evitarmos seria impossível, pois se o semicondutor não dissipa calor, ele não está dissipando potência e consequentemente, não realiza trabalho e por último, não funciona.

Conforme a figura a seguir, vemos o notebook a sofrer overclock. Esse notebook tem 2 GB de ram (o máximo suportado), roda Ubuntu Linux 14.10 (se usar outro sistema operacional como Windows, o notebook não suportaria e ficaria extremamente lento), frequência de CPU de 1,8 GHz.



Como vemos na figura a seguir, mostramos as principais regiões que dissipam mais calor, como CPU, placa de vídeo (NVIDIA) e memória.




Na figura a seguir, destacamos as áreas que mais dissipam calor com a cor VERMELHA.
Essas regiões foram identificadas pelo aquecimento excessivo no notebook.



Para resolver o problema do aquecimento, precisaríamos abrir mais espaço de ventilação, pois os furos originais na memória são praticamente insuficientes! E também, é difícil para um projetista de produtos como notebook, pensa em desenhar (projetar) um notebook que possa resistir por longos tempos de uso e sobre uso severo (sistema operacional que usa toda a memória, frequência baixa da CPU, baixo throughput (fluxo, por unidade de tempo, bytes por segundos ou outras grandezas, de qualquer área) entre a CPU – Memória – Placa de Vídeo.
Esses furos foram realizados em sua maioria por uma furadeira de maneira a permitir maior passagem de ar entre os módulos de memória e placa de vídeo. Sem esses furos, foi constatado que a CPU ficava esperando a memória, pois ficava sempre em 99 % de uso, depois disso, houve melhor vazão (throughput) de dados entre CPU-Memória e consequentemente, a CPU dá uns picos de 100% e caí rapidamente para 5%, nisso eliminamos o gargalo (ponto de maior estrangulamento num fluxo de dados ou em qualquer outra área, como logística, química e outras.) de comunicação CPU-Memória.





Na próxima figura, vemos que a base (rodapé) que segura o notebook apoiado em uma mesa precisou ser serrado, pois o mesmo, atrapalhava a circulação de ar da CPU do notebook. É como se o ar quente ficasse “parado” e deixando a CPU mais quente ainda. Ou de forma análoga, é como um carro sem sistema de arrefecimento, aonde o motor vai esquentando, o ar quente em volta não “saí”, isto é, não se dissipa, e deixa o motor mais quente, até queimar o motor. No caso da CPU, isso leva ao travamento da mesma.





Na próxima figura, usamos uma mesa que possui ventoinhas para deixar o notebook mais frio. Esse acessório, também chamado de “cooler de notebook” é encontrado em praticamente todas as lojas de informática. Nisso, estamos ajudando o notebook a dissipar o calor, pois não adianta nada, ter boa circulação de ar (com os furos na parte da memória e placa de vídeo) e o ar não “circula”. Ai entra o papel da mesa para forçar a circulação de ar, de modo a eliminar o ar quente que foi dissipado do notebook.




Na próxima figura, mostramos o gráfico de uso da CPU que se mantém em 5 % com alguns picos de quase 80 %, mas depois “volta” aos 5% e baixo calor nas memórias, placa de vídeo e CPU.
Quando a CPU e memória ficavam quentes, isto é, temperaturas próximas a 60 graus celsius, a CPU ficava mais lenta e depois de um tempo e usando programas pesados como a IDE Eclipse Kepler para desenvolvimento em linguagem Java, a CPU travava.




CONCLUSÕES

Mostramos de maneira simples como melhorar o desempenho do computador enquanto não se tem “grana” para comprar o outro notebook. Além disso, fica claro que intervenções são necessárias para melhorar a circulação de ar no notebook. Para notebooks novos, isso violaria a garantia, mas para notebooks antigos (como esse do artigo), ganharia mais tempo de uso.


REFERÊNCIAS