Introdução
A alta disponibilidade é um dos pilares para garantir que sistemas web permaneçam acessíveis mesmo em caso de falhas. No mundo Linux, uma das combinações mais poderosas para implementar alta disponibilidade é usar o NGINX com Keepalived, uma ferramenta que utiliza o protocolo VRRP (Virtual Router Redundancy Protocol) para failover automático entre servidores.
Imagine que seu site está hospedado em apenas um servidor e, por algum motivo, esse servidor falha. Seu site ficaria indisponível até que o problema fosse corrigido, o que pode levar minutos ou até horas — tempo suficiente para prejudicar seus negócios, a experiência dos seus usuários e até sua reputação online. É aí que entra o conceito de alta disponibilidade: montar uma estrutura capaz de detectar falhas rapidamente e assumir o serviço com outro servidor saudável, mantendo o site online sem interrupções perceptíveis.
Neste artigo, vamos ensinar passo a passo como configurar alta disponibilidade no Linux NGINX com Keepalived, garantindo resiliência e estabilidade para suas aplicações. O procedimento é voltado para distribuições como Oracle Linux, CentOS, RHEL e Ubuntu.
O que é Alta Disponibilidade utilizando NGINX com Keepalived?
Alta disponibilidade no Linux NGINX com Keepalived consiste em ter dois (ou mais) servidores NGINX monitorando continuamente um ao outro. Se o servidor principal (Master) falhar, o servidor secundário (Backup) assume automaticamente, usando o mesmo IP virtual, de forma transparente para os usuários finais.
Essa solução é baseada no protocolo VRRP, que foi originalmente projetado para permitir que vários roteadores compartilhem um IP virtual. O Keepalived implementa esse protocolo em ambientes Linux, monitorando a integridade de processos ou serviços (como o NGINX) e gerenciando a posse do IP virtual entre as máquinas participantes.
O NGINX, por ser leve, eficiente e amplamente utilizado como servidor web e proxy reverso, torna-se uma escolha natural para compor uma solução de alta disponibilidade robusta. Integrando o Keepalived, conseguimos adicionar uma camada de monitoramento e failover, onde falhas são detectadas em poucos segundos e a continuidade do serviço é garantida automaticamente.
O grande benefício dessa abordagem é a simplicidade e eficiência. Diferente de soluções de balanceamento de carga mais complexas e caras, a combinação de NGINX + Keepalived é de fácil implementação, altamente configurável e funciona muito bem tanto em pequenos ambientes quanto em estruturas corporativas maiores.
1. Pré-requisitos para Configuração do NGINX com Keepalived
Antes de começarmos, é importante garantir:
- Dois servidores Linux configurados (Master e Backup)
- NGINX instalado em ambos
- Acesso root ou sudo nos servidores
- Ambiente de rede configurado para permitir comunicação VRRP
Importante:
Antes de instalar o Keepalived, é essencial desabilitar o SELinux ou configurar suas permissões adequadamente, pois o SELinux pode bloquear a comunicação do Keepalived.
Para desabilitar temporariamente:
setenforce 0
Para desabilitar permanentemente, edite o arquivo /etc/selinux/config
e defina:
SELINUX=disabled
2. Instalando o Keepalived
Instale o Keepalived em todos os servidores onde você deseja configurar alta disponibilidade:
No Oracle Linux, CentOS ou RHEL:
dnf install keepalived
No Ubuntu:
apt install keepalived
Se você estiver usando Oracle Linux, também será necessário rodar o seguinte comando para permitir o Keepalived no SELinux:
semanage permissive -a keepalived_t
3. Criando o Script de Monitoramento do NGINX com Keepalived
Para que o Keepalived saiba se o NGINX está rodando, precisamos criar um pequeno script de verificação.
Em todos os servidores, crie o arquivo:
bashCopiarEditarvi /usr/local/bin/check_nginx.sh
E adicione o seguinte conteúdo:
#!/bin/sh
if [ -z "`/bin/pidof nginx`" ]; then
exit 1
fi
Depois, conceda permissão de execução:
chmod 755 /usr/local/bin/check_nginx.sh
Este script irá retornar erro caso o processo do NGINX esteja parado, acionando o failover.
4. Configurando o Keepalived no Servidor Master
Edite o arquivo de configuração do Keepalived:
vi /etc/keepalived/keepalived.conf
Insira o seguinte conteúdo:
global_defs {
router_id nginx01
script_user root
enable_script_security
notification_email {
admin@seusite.com
}
notification_email_from naoresponda@seusite.com
smtp_server mail.seusite.com
smtp_connect_timeout 30
}
vrrp_script check_nginx {
script "/usr/local/bin/check_nginx.sh"
interval 2
weight 50
}
vrrp_instance VI_1 {
state MASTER
interface ens192
virtual_router_id 51
priority 100
advert_int 1
track_script {
check_nginx
}
authentication {
auth_type PASS
auth_pass 3254
}
virtual_ipaddress {
172.16.41.100/24
}
}
5. Configurando o Keepalived no Servidor Backup
Repita o processo no servidor de Backup, alterando o estado para BACKUP
e reduzindo a prioridade:
vi /etc/keepalived/keepalived.conf
Conteúdo:
global_defs {
router_id nginx02
script_user root
enable_script_security
notification_email {
admin@seusite.com
}
notification_email_from naoresponda@seusite.com
smtp_server mail.seusite.com
smtp_connect_timeout 30
}
vrrp_script check_nginx {
script "/usr/local/bin/check_nginx.sh"
interval 2
weight 50
}
vrrp_instance VI_1 {
state BACKUP
interface ens192
virtual_router_id 51
priority 90
advert_int 1
track_script {
check_nginx
}
authentication {
auth_type PASS
auth_pass 3254
}
virtual_ipaddress {
172.16.41.100/24
}
}
6. Ajustando o Firewall
Para permitir o tráfego VRRP entre os servidores:
No CentOS/RHEL/Oracle Linux:
firewall-cmd --permanent --add-rich-rule="rule family='ipv4' destination address='224.0.0.18' protocol value='vrrp' accept"
firewall-cmd --reload
No Ubuntu:
ufw allow to 224.0.0.18
7. Iniciando o Keepalived
Agora, basta habilitar e iniciar o serviço em ambos os servidores:
systemctl enable --now keepalived
8. Monitorando o Ambiente
Você pode monitorar o funcionamento do Keepalived pelos logs do sistema:
No Ubuntu:
tail -f /var/log/syslog
No CentOS/Oracle Linux:
tail -f /var/log/messages
Considerações Finais sobre NGINX com Keepalived
Implementar alta disponibilidade no Linux NGINX com Keepalived é uma excelente estratégia para ambientes que precisam de alta confiabilidade e continuidade de serviço. Além disso, essa solução é relativamente simples de configurar e mantém os custos baixos, já que usa ferramentas gratuitas e open-source.
Seja para sites corporativos, sistemas internos ou grandes plataformas de e-commerce, garantir a alta disponibilidade é fundamental para proteger a imagem da empresa e oferecer uma boa experiência ao usuário.
Se você busca aumentar ainda mais a resiliência do seu ambiente, pode integrar esta solução com balanceadores de carga externos, clusters de banco de dados e sistemas de monitoramento avançado.
Referências:
Caso tenha alguma dúvida a respeito deste tópico sinta-se à vontade para entrar em contato