NGINX, KeepAlived · 6 min read · Nov 08, 2025
Como Configurar NGINX Altamente Disponível com KeepAlived no CentOS 8

Nginx é um servidor web gratuito, de código aberto e um dos mais populares do mundo. Ele também pode ser usado como um proxy reverso, balanceador de carga e cache HTTP. A alta disponibilidade permite que uma aplicação redirecione o trabalho para outro sistema em caso de falha. Existem diferentes tecnologias disponíveis para configurar um sistema altamente disponível.
Keepalived é um daemon de sistema que monitora serviços ou sistemas continuamente e alcança alta disponibilidade em caso de falha. Se um nó estiver fora do ar, o segundo nó fornecerá os recursos.
Neste tutorial, vou mostrar como configurar um servidor web Nginx altamente disponível com KeepAlived no CentOS 8.
Pré-requisitos
- Dois servidores rodando CentOS 8, um para o nó mestre e um para o nó de backup.
- Uma senha de root configurada no seu servidor.
Instalar Nginx em Ambos os Nós
Primeiro, você precisará instalar o pacote Nginx em ambos os nós. Você pode instalá-lo usando o seguinte comando:
dnf install nginx -yUma vez que o Nginx tenha sido instalado em ambos os nós, inicie o serviço Nginx e habilite-o para iniciar na reinicialização do sistema:
systemctl start nginx
systemctl enable nginxUma vez que você tenha terminado, pode prosseguir para o próximo passo.
Criar Arquivo Index.html em Ambos os Nós
Em seguida, você precisará criar um arquivo index.html personalizado em ambos os nós para identificar cada nó.
No primeiro nó, crie um arquivo index.html com o seguinte comando:
echo "Este é Meu Primeiro Nó do Servidor Web NGINX
" | tee /usr/share/nginx/html/index.htmlNo segundo nó, crie um arquivo index.html com o seguinte comando:
echo "Este é Meu Segundo Nó do Servidor Web NGINX
" | tee /usr/share/nginx/html/index.htmlSalve e feche o arquivo quando terminar.
Instalar e Configurar Keepalived
Em seguida, você precisará instalar o Keepalived em ambos os nós. Por padrão, o pacote Keepalived está disponível no repositório padrão do CentOS 8. Você pode instalá-lo executando o seguinte comando:
dnf install keepalived -yUma vez que o pacote keepalived esteja instalado em ambos os nós, você precisará editar o arquivo de configuração padrão do keepalived em ambos os nós.
No primeiro nó, edite o arquivo keepalived.conf:
nano /etc/keepalived/keepalived.confRemova o conteúdo padrão e adicione o seguinte conteúdo:
global_defs {
# Identificador do processo Keepalived
router_id nginx
}
# Script para verificar se o Nginx está rodando ou não
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Interface virtual - A prioridade especifica a ordem em que a interface designada deve assumir em caso de failover
vrrp_instance VI_01 {
state MASTER
interface eth0
virtual_router_id 151
priority 110
# O endereço IP virtual compartilhado entre os dois Servidores Web NGINX que flutuarão
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Salve e feche o arquivo quando terminar.
No segundo nó, edite o arquivo keepalived.conf:
nano /etc/keepalived/keepalived.confRemova o conteúdo padrão e adicione o seguinte conteúdo:
global_defs {
# Identificador do processo Keepalived
router_id nginx
}
# Script para verificar se o Nginx está rodando ou não
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Interface virtual - A prioridade especifica a ordem em que a interface designada deve assumir em caso de failover
vrrp_instance VI_01 {
state BACKUP
interface eth0
virtual_router_id 151
priority 100
# O endereço IP virtual compartilhado entre os dois Servidores Web NGINX que flutuarão
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Salve e feche o arquivo e, em seguida, você precisará criar um script para verificar se o serviço Nginx está rodando ou não. Você pode criá-lo usando o seguinte comando:
Nota: Apenas substitua MASTER por BACKUP e 110 por 100 no arquivo de configuração acima.
nano /bin/check_nginx.shAdicione as seguintes linhas:
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
exit 1
fi
Salve e feche o arquivo e, em seguida, defina as permissões adequadas com o seguinte comando:
chmod 755 /bin/check_nginx.shFinalmente, inicie o serviço keepalived e habilite-o para iniciar na reinicialização do sistema usando o seguinte comando:
systemctl start keepalived
systemctl enable keepalivedVocê também pode verificar o status do serviço keepalived usando o seguinte comando:
systemctl status keepalivedVocê deve obter a seguinte saída:
? keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-04-08 04:24:22 EDT; 5s ago
Process: 3141 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 3142 (keepalived)
Tasks: 2 (limit: 12524)
Memory: 2.1M
CGroup: /system.slice/keepalived.service
??3142 /usr/sbin/keepalived -D
??3143 /usr/sbin/keepalived -D
Apr 08 04:24:22 node1 Keepalived_vrrp[3143]: (VI_01) Mudando a prioridade efetiva de 110 para 160
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Recebendo tempo limite de anúncio
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Entrando no ESTADO MASTER
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) configurando VIPs.
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Enviando ARP gratuito em eth0 para 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Enviando/enfileirando ARPs gratuitos em eth0 para 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Enviando ARP gratuito em eth0 para 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Enviando ARP gratuito em eth0 para 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Enviando ARP gratuito em eth0 para 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Enviando ARP gratuito em eth0 para 192.168.1.10
Você também pode verificar o status do endereço IP virtual no nó Master usando o seguinte comando:
ip add showVocê deve ver o endereço IP virtual 192.168.1.10 na seguinte saída:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet 45.58.32.155/24 brd 45.58.32.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
Uma vez que você tenha terminado, pode prosseguir para o próximo passo.
Configurar Firewall em Ambos os Nós
Em seguida, você precisará permitir a porta 80 e permitir VRRP em ambos os nós. Você pode fazer isso usando o seguinte comando:
firewall-cmd --permanent --add-service=http
firebase-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanentEm seguida, recarregue o firewalld para aplicar as alterações:
firewall-cmd –reloadVerificar Keepalived
Neste ponto, o Nginx e o Keepalived estão instalados e configurados. É hora de testar se a alta disponibilidade do Nginx funciona ou não.
Abra seu navegador web e acesse a URL http://seu-ip-virtual. Você deve ver a seguinte página:

Agora, pare o serviço Nginx no nó Master e teste se o IP virtual é transferido do Nó 1 para o Nó 2.
No nó Master, pare o serviço Nginx usando o seguinte comando:
systemctl stop nginxEm seguida, faça login no Node2 e verifique o IP virtual usando o seguinte comando:
ip add showVocê deve ver seu IP Virtual na seguinte saída:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet 45.58.38.55/24 brd 45.58.38.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
Agora, acesse seu servidor web Nginx usando a URL http://seu-ip-virtual. Você deve ver a página do Nó2:

Conclusão
Parabéns! você configurou com sucesso um servidor Nginx altamente disponível com Keepalived. Espero que agora você tenha conhecimento suficiente para configurar um servidor Nginx altamente disponível em um ambiente de produção.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.