Pesquisar

domingo, 22 de janeiro de 2012

Nginx configurado como LoadBalance

Estive estudando sobre o nginx uma importante ferramenta em qualquer empresa.

Como o Nginx tem inumeras utilidades, não somente com como front do apache, vou mostrar neste artigo apenas como fazer um loadbalance para conexões com o Apache.

A idéia é ter um proxy para evitar uma carga muito grande no apache. Podemos fazer o mesmo com aplicações java, utilizando o mesmo princípio.

Vou demonstrar aqui uma configuração muito simples usando CentOS com Nginx na frente do Apache.

Configurações do LAB que eu estou usando:

  • 1 maquina com Windows 7 como cliente.
  • 1 maquina com CentOS 6.2 (Servidor do Nginx);
    • hostname abaco1;
    • ip 192.168.0.24;
  • 2 maquinas com Ubuntu 11.04 + apache2;
    • hostname fogao1 e fogao2;
    • ip fogao1: 192.168.0.90;
    • ip fogao2: 192.168.0.91;


Mão na massa:

Supondo que você já tenha o CentOS 6.2 instalado na sua maquina, vamos baixar os devidos pacotes.


  • Primeiro vamos baixar o Repositório EPEL e instalar o repositório.


wget -c http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm


rpm -Uvh epel-release-6-5.noarch.rpm


  • Agora vamos atualizar os repositórios e os pacotes:
yum check-update

yum update

  • Feito isso vamos instalar o nginx e configura-lo;
yum install nginx -y (o yum vai instalar os pacotes do nginx e suas dependencias);

touch /etc/nginx/conf.d/site.conf


vim /etc/nginx/conf.d/site.conf


Veja a conf abaixo:

A linha upstream serve para criar o pool de maquinas que receberão as conexões.


upstream  batatinha  {
   server   fogao1;
   server   fogao2;
}

server {
   server_name www.batatinha.com.br;
   location / {
      proxy_pass  http://batatinha;
   }
}


A chave server é o vhost que aceitará o site www.batatinha.com.br e fará o proxy para a aplicação.
A Maneira como está configurado 50% das requisições irão para a fogao1 e 50% irão para a fogao2, caso seja necessário manter a conexão da sessão(utilizado por diversas aplicações que necessitem de login, etc.) coloque a linha ip_hash na chave upstream acima das linhas de server.


OBS: para que o servidor reconheça os nomes fogao1, fogao2 e o site eu adicionei seus ips no hosts das maquinas, caso não queiram colocar no hosts podem colocar os ips dos servidores que também funciona :D


Feito tudo isso faça o restart do nginx e vamos testar.

Para fazer o teste eu coloquei um HTML basico em cada uma das fogao.

Segue exemplo

Dentro do document root do apache da fogao1
<html>
<body>
<h1> FOGAO1 </h1>
</body>
</html>


Dentro do document root do apache da fogao2
<html>
<body>
<h1> FOGAO2 </h1>
</body>
</html>


Faça o Teste acesse www.batatinha.com.br, para que o teste funcione abra em 2 computadores diferentes.

Pronto load balance criado :D

Espero ter ajudado bastante com o Artigo. Por favor comentem e compartilhem o conhecimento!


Nenhum comentário:

Postar um comentário