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.
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