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

Uma 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 nginx

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

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

Salve 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 -y

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

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

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

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

Finalmente, inicie o serviço keepalived e habilite-o para iniciar na reinicialização do sistema usando o seguinte comando:

systemctl start keepalived  
systemctl enable keepalived

Você também pode verificar o status do serviço keepalived usando o seguinte comando:

systemctl status keepalived

Você 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 show

Você 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' --permanent

Em seguida, recarregue o firewalld para aplicar as alterações:

firewall-cmd –reload

Verificar 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:

Página do Nginx no nó 1

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 nginx

Em seguida, faça login no Node2 e verifique o IP virtual usando o seguinte comando:

ip add show

Você 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:

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

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.