HA no Apache: passo a passo com KeepAlived

Linux Utilidades Zabbix

No artigo de hoje, vamos configurar o serviço de HA no apache usando o pacote keepalived.

Esse procedimento é comumente usado para garantia da disponibilidade de serviços WEB como o Zabbix e o GLPI.

Para tanto, precisaremos configurar nosso IP VIP. O apache é quem vai fazer o papel de “balanceador” do nosso serviço, logo, precisamos baixar alguns pacotes e configurá-lo em cada servidor de “Frontend”.

Instalando o pacote Keepalived

Primeiro, instale o pacote keepalived em todos os nós do cluster HA:

# apt install keepalived
Do you want to continue? [Y/n] y

Agora configure o arquivo keepalived.conf para cada nó do nosso cluster HA, caso não exista, crie um.

Considerando que nosso ambiente terá dois nós, um master e outro slave, teremos o seguinte exemplo:

  • IP Frontend Master: 192.168.90.121
  • IP Frontend Slave: 192.168.90.122
  • IP Frontend VIP: 192.168.90.150 -> Este será o IP publicado para acesso dos nossos clientes WEB.

Configurando o ha no apache, nó Master

A configuração do keepalived será feita no servidor que será o master (principal, ativo) primeiramente:

# vi /etc/keepalived/keepalived.conf
vrrp_track_process chk_apache_apache2 {
process apache2
weight 10
}
 
vrrp_instance ZBX_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 244
advert_int 1
authentication {
auth_type PASS
auth_pass zabbix
}
 
track_process {
chk_apache_apache2
}
 
virtual_ipaddress {
192.168.90.150/24
}
}

Ainda no servidor HA1, vamos entender alguns desses parâmetros apresentados para o keepalived.conf:

  • Antes de mais nada, toda vez que você identificar o parâmetro apache2, mantenha dessa forma se estiver usando distribuições Debian Like, como no Ubuntu 22.04 proposto no planejamento da instalação.
    Por outro lado, caso tenha optado por distribuições baseadas no RedHat, você deverá trocar apache2 por httpd.
  • O parâmetro vrrp_instance irá nomear a sua instância VRRP. Esse nome deverá ser o mesmo para todos os nós do seu ha.
  • Já o parâmetro “State” vai definir se nosso nó será o servidor principal ou o secundário. Então como ainda estamos no HA1, mantenha como MASTER.
  • Verifique se o nome da sua interface está correto e faça o ajuste, caso sua interface não seja eth0, conforme a interface utilizada no meu ambiente.
  • A prioridade vai definir quem ganhará a eleição de master em caso de falha do servidor principal. Isso é útil quando seu ambiente tiver mais de dois nós HA.
  • O parâmetro auth_pass será chave de autenticação entre os nós. Precisa ser igual para todos os nós associados a esse ha.
  • Por fim, virtual_ipaddress é a configuração que ira criar uma interface secundário nos seus servidores de aplicação, fazendo com que este seja o IP do serviço zabbix disponível, independente de qual nó (master ou slave) esteja de pé. Lembre-se que configuramos esse IP no banco de dados zabbix, este precisar ser o mesmo IP autorizado no banco de dados.

Configurando o ha no apache, nó Backup

Agora vamos configurar o keepalived no servidor que nosso nó de backup na configuração de HA:

#vi /etc/keepalived/keepalived.conf 
vrrp_track_process chk_apache_apache2 {
process apache2
weight 10
}
 
vrrp_instance ZBX_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 243
advert_int 1
authentication {
auth_type PASS
auth_pass zabbix
}
 
track_process {
chk_apache_apache2
}
 
virtual_ipaddress {
192.168.90.150/24
}
}

Habilitando o serviço keepalived

Habilite os serviços do apache e keepalived, faça o restart do serviço apache2 em todos os seus servidores de frontend (HA1 e HA2) e valide se o serviço subiu corretamente.

#systemctl enable keepalived
#systemctl restart apache2
#systemctl status apache2
* apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-09-10 01:12:02 UTC; 9s ago

# systemctl restart keepalived
# systemctl status keepalived.service
* keepalived.service - Keepalive Daemon (LVS and VRRP)
     Active: active (running) since Fri 2023-09-11 01:42:56 UTC; 6s ago

Finalizando

Pronto, agora é só acessar o IP VIP via navegador para finalizar a configuração do nosso site via interface GUI.
No nosso exemplo, nosso IP VIP é o 192.168.90.150.

Para mais informações sobre como funciona o KeepAlived, deixarei como referência a página da RedHat.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.