load balancing nginx

Muitas vezes temos aplicações web que demandão alto desempenho e alta disponibilidade. Por isso não é possível que estejam em apenas um servidor, aonde em caso de falha o site vai ficar indisponível até reinstalar todo o sistema. Se você tiver o sistema distribuído em varias maquinas, no caso de falha de uma você apenas vai perder performance enquanto restabelece a maquina parada.

Usar o nginx para gerenciar um cluster de aplicações e uma solução, simples e que demanda pouco processamento e ao mesmo tempo eficiente. Abaixo temos o exemplo de virtualhost fazendo o cluster, e uma versão simplificada, contendo apenas oque precisa ser alterado. Uma vantagem da configuração abaixo é que o nginx vai verificar se os servidores escravos estão online, evitando que os usuários recebam mensagem de indisponível no caso de falha de uma das maquinas do cluster.

 

http {
#na linha abaixo damos um nome para o conjunto de maquinas, que no caso se chama backend
upstream backend {
#seta a quantidade de memoria para manter a zona de balanceamento.
zone backend 64k;
# Com o parametro least_conn o nginx vai procurar o server menos ocupado e enviar as requisições
#Sem ele é feito o padrão que divide igualmente, se o parametro for ip_hash ele vai vincular cada ip a um servidor para evitar problemas de perda de secção.
least_conn;

#abaixo o endereço de cada servidor
server backend1.example.com:80;
server backend2.example.com:80;
server backend3.example.com:80;
server backend4.example.com:80;
}

server {
server_name exemplo.nanobot.com.br;

location / {
#setamos aqui que o / do site vai ser encaminhado para o conjunto de servidores com nome backend
proxy_pass http://backend;
#vai ser checado se a maquina esta de pé, a cada 10 segundos, o servidor é considerado
#offline se falhar 3 vezes e vai voltar a ser usado se funcionar 2 vezes seguidas.
#o uri diz em qual url vai ser feita a checagem
health_check interval=10 fails=3 passes=2 uri=/some/path;
}
}
}

About The Author
admin Anakin Pendragon