Alta Disponibilidade · 9 min read · Nov 29, 2025

Como Configurar Alta Disponibilidade do Nginx com Pacemaker, Corosync e Crmsh no Ubuntu 16.04

Neste tutorial, vou mostrar passo a passo como criar um Servidor Web Nginx em Cluster de Alta Disponibilidade com Pacemaker, Corosync e Crmsh. Vamos criar um Cluster Ativo-Passivo ou Cluster de Failover do servidor web Nginx usando Pacemaker no Ubuntu 16.04.

Pacemaker é um software de gerenciamento de cluster de código aberto que alcança a máxima alta disponibilidade dos seus serviços. É um gerenciador de cluster HA avançado e escalável desenvolvido pela ClusterLabs desde 2007.

O Corosync Cluster Engine é um projeto de código aberto derivado do projeto OpenAIS em 2008 e lançado sob a Licença BSD. É um sistema de comunicação em grupo com recursos adicionais para implementar Alta Disponibilidade dentro de aplicativos.

Existem várias aplicações disponíveis para a interface do Pacemaker e Crmsh é uma delas. É uma interface de linha de comando do Pacemaker para gerenciar a Pilha de Alta Disponibilidade do Pacemaker. Crmsh é escrito em python. Podemos criar, configurar e solucionar problemas da pilha HA do Pacemaker com a ferramenta de linha de comando Crmsh.

Pré-requisitos

  • Três Servidores Ubuntu 16.04 - web01 10.0.15.11
  • web02 10.0.15.12
  • web03 10.0.15.13
  • Um Endereço IP flutuante 10.0.15.15
  • Privilégios de Root

O que faremos?

  1. Mapeamento do Arquivo Hosts.
  2. Instalar e Configurar o Nginx.
  3. Instalar Pacemaker, Corosync e Crmsh.
  4. Configurar a Chave do Corosync.
  5. Iniciar Todos os Serviços.
  6. Criar e Configurar um Cluster.
  7. Testando.

Passo 1 - Mapeamento do Arquivo Hosts

Nota:
Execute os passos 1 - 3 em todos os três servidores ‘web01’, ‘web02’, ‘web03’.

Neste tutorial, estarei usando 3 servidores Ubuntu 16.04 e cada um deles tem um nome de host único: ‘web01’, ‘web02’ e ‘web03’. Cada servidor pode se conectar aos outros servidores pelo nome do host do servidor.

Para conseguir isso, edite o arquivo ‘/etc/hosts’ em todos os servidores com vim.

vim /etc/hosts

Cole a configuração do /etc/hosts abaixo.

10.0.15.11      web01  
10.0.15.12      web02  
10.0.15.13      web03  
10.0.15.15      ha-web.co

Salve o arquivo e saia do vim.

Em seguida, teste todos os servidores enviando pings para os outros servidores através de cada nome de host.

ping -c 3 web01  
ping -c 3 web02  
ping -c 3 web03

Ping Todos os Servidores

Passo 2 - Instalar e Configurar o Nginx

Agora começamos a criar a configuração de Alta Disponibilidade do servidor web Nginx criando o cluster de Failover com o Pacemaker. Precisamos instalar o Nginx em cada um dos nós do servidor primeiro.

Instale o Nginx com o comando apt abaixo.

apt install -y nginx

Quando a instalação terminar, substitua a página padrão do nginx por uma página única em cada servidor executando os comandos abaixo para que possamos identificar mais tarde qual servidor entregou uma página.

#Executar Comando em 'web01'  
echo '

web01 - hakase-labs

' > /var/www/html/index.html #Executar Comando em 'web02' echo '

web02 - hakase-labs

' > /var/www/html/index.html #Executar Comando em 'web03' echo '

web03 - hakase-labs

' > /var/www/html/index.html

Agora pare o servidor web.

systemctl stop nginx

A instalação e configuração do Nginx foram concluídas.

Instalar e Configurar Nginx no Ubuntu 16.04

Passo 3 - Instalar Pacemaker, Corosync e Crmsh

Pacemaker é um aplicativo de gerenciamento de cluster de código aberto. Corosync é um Motor de Cluster para Pacemaker, e Crmsh é uma ferramenta baseada em python para gerenciar um cluster Pacemaker. Todos esses aplicativos estão disponíveis no repositório do Ubuntu.

Instale Pacemaker, Corosync e crmsh com o comando apt abaixo.

apt install -y pacemaker corosync crmsh

Após a instalação, todos esses serviços estão sendo executados automaticamente no sistema. Pare-os com os comandos systemctl abaixo.

systemctl stop corosync  
systemctl stop pacemaker

A pilha de software que fornece a alta disponibilidade para o Nginx foi instalada.

Instalar Pacemaker, Corosync e Crmsh no Ubuntu 16.04

Passo 4 - Configurar Corosync

Nota:
Execute o passo 4 apenas no servidor ‘web01’.

Como não estamos usando pcsd para Ubuntu, precisamos configurar o Corosync manualmente. Vamos gerar a chave do Corosync para a autenticação do cluster e criar um novo arquivo de configuração do Corosync no servidor ‘web01’, em seguida, copiar a chave e a configuração para os outros servidores ‘web02’ e ‘web03’.

Antes de gerarmos a chave do Corosync, precisamos instalar o novo pacote ‘haveged’. Ele é usado para obter melhores números aleatórios para a geração da chave do Corosync.

Instale o haveged do repositório com o comando apt.

apt install -y haveged

Agora gere uma nova chave do Corosync com o comando abaixo.

corosync-keygen

Quando a geração da chave estiver completa, você pode ver a nova chave ‘authkey’ no diretório ‘/etc/corosync/‘.

ls -lah /etc/corosync/

Gerar Chave Corosync

Em seguida, vá para o diretório ‘/etc/corosync’ e faça backup do arquivo de configuração padrão ‘corosync.conf’.

cd /etc/corosync/  
mv corosync.conf corosync.conf.bekup

Depois, crie um novo arquivo de configuração ‘corosync.conf’ com vim.

vim corosync.conf

Cole a configuração abaixo nesse arquivo.

# Configuração do Protocolo Totem  
totem {  
  version: 2  
  cluster_name: hakase-cluster  
  transport: udpu  
   
# Configuração da interface para Corosync  
  interface {  
    ringnumber: 0  
    bindnetaddr: 10.0.15.0  
    broadcast: yes  
    mcastport: 5407  
  }  
}  
   
# Lista de Nós - Lista de Servidores  
nodelist {  
  node {  
    ring0_addr: web01  
  }  
  node {  
    ring0_addr: web02  
  }  
  node {  
    ring0_addr: web03  
  }  
}  
   
# Configuração de Quorum  
quorum {  
  provider: corosync_votequorum  
}  
   
# Configuração de Log do Corosync  
logging {  
  to_logfile: yes  
  logfile: /var/log/corosync/corosync.log  
  to_syslog: yes  
  timestamp: on  
}  
   
service {  
  name: pacemaker  
  ver: 0  
}

Salve o arquivo e saia do editor.

Em seguida, copie a chave de autenticação e o arquivo de configuração do servidor ‘web01’ para os servidores ‘web02’ e ‘web03’.

scp /etc/corosync/* root@web02:/etc/corosync/  
scp /etc/corosync/* root@web03:/etc/corosync/

Copiar Configuração do Corosync do nó web01 para os outros

Quando tudo estiver completo, vá para os servidores ‘web02’ e ‘web03’, e verifique os arquivos.

ssh root@web02  
cd /etc/corosync/  
ls -lah

Configuração do Corosync no nó web02

A configuração do Corosync foi concluída.

Passo 5 - Iniciar Todos os Serviços do Cluster

Nota:
Execute o passo 5 em todos os servidores.

Inicie a pilha de software do cluster HA, pacemaker e corosync, em todos os servidores. Em seguida, habilite para iniciar automaticamente na inicialização.

Inicie o Corosync e adicione para iniciar automaticamente na inicialização.

systemctl start corosync  
systemctl enable corosync

Agora inicie o pacemaker e habilite-o para iniciar na inicialização.

systemctl start pacemaker  
update-rc.d pacemaker defaults 20 01  
systemctl enable pacemaker

Todos os serviços foram iniciados, verifique todos os nós e certifique-se de que o status do servidor está ‘Online’ em todos eles.

crm status

Status do Nó do Cluster

Ou você pode verificar o status verificando os membros do Corosync com o comando corosync-cmapctl abaixo.

corosync-cmapctl | grep members

Você verá todos os Endereços IP dos servidores.

Lista de Membros do Corosync

Passo 6 - Criar e Configurar o Cluster

NOTA:
Execute o passo 6 apenas no servidor web01

Neste passo, configuraremos o Cluster Nginx Ativo-Passivo usando a ferramenta de linha de comando crmsh. Como não estamos usando um dispositivo STONITH, queremos desabilitar o STONITH e ignorar a política de Quorum em nosso cluster.

Execute os comandos crm abaixo para desabilitar ‘STONITH’ e Ignorar a política de Quorum.

crm configure property stonith-enabled=false  
crm configure property no-quorum-policy=ignore

Agora verifique o status do STONITH e a política de quorum com o comando crm abaixo.

crm configure show

Você verá o resultado abaixo.

Desabilitar STONITH e Ignorar a Política de Quorum

Em seguida, precisamos criar alguns novos recursos para o cluster. O Pacemaker suporta os seguintes tipos de Agentes de Recursos (RA).

  • LSB (Baseado em Padrão Linux) - Fornecido pela distribuição Linux. ex: ‘/etc/init.d/service’ script.
  • OCF (Open Cluster Framework) - Conjunto de ferramentas para computação em cluster. O projeto é parte da Linux Foundation.

Para nosso servidor web Nginx HA, precisamos criar dois recursos OCF: ‘virtual_ip’ para o IP flutuante e ‘webserver’ para o serviço nginx.

Crie um novo recurso ‘virtual_ip’ para a configuração do IP flutuante com o comando crm abaixo.

sudo crm configure primitive virtual_ip \  
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \  
cidr_netmask="32" op monitor interval="10s" \  
meta migration-threshold="10"

E para o ‘webserver’ do nginx, crie o recurso com o comando abaixo.

sudo crm configure primitive webserver \  
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \  
op start timeout="40s" interval="0" \  
op stop timeout="60s" interval="0" \  
op monitor interval="10s" timeout="60s" \  
meta migration-threshold="10"

Quando isso estiver feito, verifique os novos recursos ‘virtual_ip’ e ‘webserver’ com o comando abaixo. Certifique-se de que todos os recursos tenham o status ‘iniciado’.

crm resource status

Adicionar novos Recursos Virtual_ip e Webserver ao Cluster

Finalmente, precisamos adicionar um grupo para a nova configuração do serviço de IP de Failover. Queremos migrar o serviço ‘Nginx’ em um recurso ‘webserver’ com um IP flutuante em um recurso ‘virtual_ip’.

Já criamos o IP Flutuante e o Serviço, agora adicione esses recursos a um novo grupo chamado ‘hakase_balancing’ com o comando abaixo. Você pode escolher seu próprio nome de grupo aqui, apenas certifique-se de substituir o nome onde quer que seja usado.

sudo crm configure group hakase_balancing virtual_ip webserver

Um novo grupo de recursos com o nome ‘hakase_balancing’ foi definido. Você pode verificá-lo com o comando abaixo.

crm resource show

Você obterá um grupo chamado hakase_balancing com membros ‘virtual_ip’ e ‘webserver’.

Adicionar novo Recurso de Grupo para o Cluster

A configuração do cluster foi concluída.

Passo 7 - Testando

Testando o status do nó e o status do cluster.

crm status

Status do Nó do Cluster e Status dos Recursos

Temos 3 Nós com status ‘Online’.

Temos um grupo de recursos chamado ‘hakase_balancing’, e agora está rodando no nó ‘web01’.

Testando o servidor web Nginx a partir de um navegador web. Visite o endereço IP flutuante, o nome do meu servidor de teste é - ha-web.co. Use o nome que você escolheu para seu servidor aqui.

Todos os recursos estão no nó ‘web01’.

Testando o Cluster Ativo-Passivo ou Failover

Pare o cluster no servidor ‘web01’ executando o comando abaixo no nó ‘web01’.

crm cluster stop

Você obterá o resultado ‘ INFO: Serviços do cluster parados ‘.

Agora faça login no nó ‘web02’ e verifique o status do cluster.

crm status

Cluster de Alta Disponibilidade do Nginx no Ubuntu 16.04

Agora você obtém o resultado de que o nó ‘web01’ está ‘Offline’, e os recursos de virtual_ip e webserver foram transferidos para o nó ‘web02’.

Ao visitar novamente o IP flutuante ‘ ha-web.co ‘, você verá a página do web02.

A Alta Disponibilidade do Nginx com Pacemaker, Corosync e Crmsh no Ubuntu 16.04 foi instalada e testada com sucesso.

Referência

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.