Entrar ou criar conta

ULC Lab · implementação reproduzível

Laboratório: Cluster de Alta Disponibilidade com Pacemaker e Corosync para Serviço Apache HTTPD

Você terá um cluster de alta disponibilidade funcional, capaz de manter o serviço Apache HTTPD disponível mesmo após falha de um nó. Tempo estimado: 2 a 3 horas.

Alta disponibilidade de serviços Linux com Pacemaker e Corosync
Ligado ao treinamento Alta disponibilidade de serviços Linux com Pacemaker e Corosync
ULC-LAB-INFR-0002 · Status de validaçãoNão validado pela Upnetix: roteiro derivado da documentação oficial, para você executar e validar
Duração estimada
120 min
Passos
13
Validações
4
Versões da documentação consultada
Pacemaker a versão estável atual · Corosync a versão estável atual · Apache HTTPD a versão estável atual · crmsh a versão estável atual
Objetivo

O objetivo é construir, do zero, um cluster de alta disponibilidade usando Pacemaker e Corosync, protegendo um serviço Apache HTTPD. Você vai entender como os componentes se integram, como configurar o cluster, adicionar recursos e simular falhas para validar a resiliência. O laboratório é executável em máquinas virtuais comuns, sem necessidade de hardware dedicado.

Topologia

Dois nós Linux (node1 e node2) conectados em rede privada (192.168.56.0/24). Ambos acessam um endereço IP virtual (192.168.56.100) que será migrado automaticamente em caso de falha. O serviço Apache HTTPD será protegido pelo cluster.

           +-------------------+
           |   Cliente/Teste  |
           +--------+--------+
                    |
            192.168.56.100 (IP Virtual)
                    |
          +---------+---------+
          |                   |
+---------+-----+     +-------+-------+
|  node1        |     |   node2       |
|192.168.56.101 |     |192.168.56.102 |
+---------------+     +---------------+

Equipamentos e software

ItemRequisito, licença ou versão
Máquina Virtual (node1)1 vCPU, 1GB RAM, 1 interface de rede, Linux compatível (Debian 11+, Ubuntu 20.04+, CentOS 8+, Rocky 8+)
Máquina Virtual (node2)1 vCPU, 1GB RAM, 1 interface de rede, Linux compatível (mesmas versões acima)
PacemakerGPLv2 · a versão estável atual
CorosyncBSD · a versão estável atual
Apache HTTPDApache-2.0 · a versão estável atual
crmshGPLv2 · a versão estável atual

Roteiro

  1. Preparar as máquinas virtuais

    Garanta que ambas as VMs estão na mesma rede privada, com IPs fixos (node1: 192.168.56.101, node2: 192.168.56.102).

    O que você deve ver: Ambas as VMs se pingam mutuamente.

  2. Configurar nomes e hosts

    Edite /etc/hosts em ambos os nós para garantir resolução de nomes.

    echo '192.168.56.101 node1' | sudo tee -a /etc/hosts
    echo '192.168.56.102 node2' | sudo tee -a /etc/hosts

    O que você deve ver: Ambos os nós resolvem node1 e node2 por nome.

  3. Instalar Pacemaker, Corosync e Apache

    Instale os pacotes necessários em ambos os nós.

    sudo apt update && sudo apt install pacemaker corosync crmsh apache2 -y

    O que você deve ver: Pacotes instalados sem erro.

  4. Habilitar e iniciar serviços

    Garanta que Pacemaker e Corosync estão habilitados para iniciar automaticamente.

    sudo systemctl enable corosync pacemaker
    sudo systemctl start corosync pacemaker

    O que você deve ver: Serviços ativos e em execução.

  5. Configurar Corosync

    Edite /etc/corosync/corosync.conf em ambos os nós. Use o modo unicast para redes comuns.

    Consulte a documentação oficial para gerar corosync.conf adequado ao seu ambiente.

    O que você deve ver: Arquivo corosync.conf idêntico nos dois nós.

  6. Sincronizar chave de autenticação do Corosync

    Gere a chave com corosync-keygen em um nó e copie para o outro.

    sudo corosync-keygen
    sudo scp /etc/corosync/authkey node2:/etc/corosync/

    O que você deve ver: Chave idêntica em ambos os nós.

  7. Reiniciar Corosync e Pacemaker

    Reinicie os serviços para aplicar as configurações.

    sudo systemctl restart corosync pacemaker

    O que você deve ver: Cluster inicializa sem erros.

  8. Verificar status do cluster

    Use crm status para ver se ambos os nós aparecem online.

    sudo crm status

    O que você deve ver: Ambos os nós listados como online.

  9. Adicionar recurso IP flutuante

    Crie o recurso de IP virtual que será migrado em caso de falha.

    sudo crm configure primitive ClusterIP ocf:heartbeat:IPaddr2 params ip=192.168.56.100 cidr_netmask=24 op monitor interval=30s

    O que você deve ver: Recurso ClusterIP criado e atribuído a um dos nós.

  10. Adicionar recurso Apache HTTPD

    Crie o recurso para o serviço Apache.

    sudo crm configure primitive WebServer ocf:heartbeat:apache params configfile=/etc/apache2/apache2.conf op monitor interval=30s

    O que você deve ver: Recurso WebServer criado e atribuído ao mesmo nó do IP virtual.

  11. Criar grupo de recursos

    Agrupe IP e Apache para garantir que migrem juntos.

    sudo crm configure group WebGroup ClusterIP WebServer

    O que você deve ver: Grupo WebGroup criado.

  12. Testar acesso ao serviço

    Acesse http://192.168.56.100 de uma máquina cliente.

    O que você deve ver: Página padrão do Apache exibida.

  13. Simular falha de nó

    Desligue o nó ativo e observe a migração automática dos recursos.

    sudo shutdown now (no nó ativo)

    O que você deve ver: Após alguns segundos, o serviço Apache responde pelo IP virtual no nó restante.

Como saber que funcionou

TesteComandoCritério
Verificar status do clustersudo crm statusAmbos os nós online, recursos atribuídos corretamente.
Acessar serviço via IP virtualcurl http://192.168.56.100Receber resposta HTTP 200 e conteúdo da página padrão do Apache.
Simular falha e checar failoversudo shutdown now (no nó ativo), depois crm status no nó restanteRecursos migrados para o nó sobrevivente, serviço disponível.
Verificar logs do Corosync e Pacemakersudo journalctl -u corosync -u pacemakerSem erros críticos, eventos de failover registrados.

Troubleshooting

SintomaCausa provávelCorreção
Nó não aparece online no clusterConfiguração incorreta do corosync.conf ou chave de autenticação diferenteRevisar corosync.conf e garantir authkey idêntica nos dois nós
IP virtual não sobe em nenhum nóRecurso mal configurado ou conflito de IP na redeVerificar parâmetros do recurso ClusterIP e checar se o IP está livre
Apache não inicia via clusterCaminho do configfile incorreto ou Apache não instaladoCorrigir parâmetro configfile e garantir Apache instalado
Recursos não migram após falhaTimeouts de monitoramento insuficientes ou problemas de fencingAjustar intervalos de monitoramento e revisar logs para mensagens de fencing

Segurança e hardening

  • Proteja o arquivo /etc/corosync/authkey (permissão 400, root)
  • Use rede privada dedicada para comunicação do cluster
  • Desabilite serviços desnecessários nos nós do cluster
  • Aplique atualizações de segurança do sistema operacional
  • Restrinja acesso SSH apenas a administradores

Checklist final

Referências

  1. Pacemaker Documentation · ClusterLabs (Pacemaker) (clusterlabs.org)
  2. Corosync Documentation · Corosync.github (corosync.github.io)
  3. LINBIT HA Cluster Guide · LINBIT (DRBD) (docs.linbit.com)
Verificação editorial
Publicado
09/09/2026
Última revisão
09/09/2026
Versão do conteúdo
1.0
Referências
3 oficiais
Revisão técnica
redação e revisão por IA, URLs conferidas na publicação
Status
Atual
Encontrou um erro? Escreva para comercial@upnetix.com.br com o endereço da página. A revisão semestral por IA nunca altera comandos ou configurações sem passar pela fila de revisão.