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?
- Mapeamento do Arquivo Hosts.
- Instalar e Configurar o Nginx.
- Instalar Pacemaker, Corosync e Crmsh.
- Configurar a Chave do Corosync.
- Iniciar Todos os Serviços.
- Criar e Configurar um Cluster.
- 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/hostsCole 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.coSalve 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
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 nginxQuando 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.htmlAgora pare o servidor web.
systemctl stop nginxA instalação e configuração do Nginx foram concluídas.

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 crmshApó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 pacemakerA pilha de software que fornece a alta disponibilidade para o Nginx foi instalada.

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 havegedAgora gere uma nova chave do Corosync com o comando abaixo.
corosync-keygenQuando a geração da chave estiver completa, você pode ver a nova chave ‘authkey’ no diretório ‘/etc/corosync/‘.
ls -lah /etc/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.bekupDepois, crie um novo arquivo de configuração ‘corosync.conf’ com vim.
vim corosync.confCole 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/
Quando tudo estiver completo, vá para os servidores ‘web02’ e ‘web03’, e verifique os arquivos.
ssh root@web02
cd /etc/corosync/
ls -lah
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 corosyncAgora inicie o pacemaker e habilite-o para iniciar na inicialização.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemakerTodos 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
Ou você pode verificar o status verificando os membros do Corosync com o comando corosync-cmapctl abaixo.
corosync-cmapctl | grep membersVocê verá todos os Endereços IP dos servidores.

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=ignoreAgora verifique o status do STONITH e a política de quorum com o comando crm abaixo.
crm configure showVocê verá o resultado abaixo.

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
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 webserverUm novo grupo de recursos com o nome ‘hakase_balancing’ foi definido. Você pode verificá-lo com o comando abaixo.
crm resource showVocê obterá um grupo chamado hakase_balancing com membros ‘virtual_ip’ e ‘webserver’.

A configuração do cluster foi concluída.
Passo 7 - Testando
Testando o status do nó e o status do cluster.
crm status
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 stopVocê obterá o resultado ‘ INFO: Serviços do cluster parados ‘.
Agora faça login no nó ‘web02’ e verifique o status do cluster.
crm status
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
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.