Alta Disponibilidade KVM com SafeKit: Instale o Módulo kvm.safe para Failover
Guia de Instalação Rápida de Alta Disponibilidade para KVM
Este guia explica como configurar um cluster mirror para KVM usando SafeKit, garantindo o failover automático e a replicação síncrona sem a necessidade de armazenamento compartilhado.
Para obter ajuda, você pode usar SafeKit AI 🤖.
1. Visão geral
- Arquitetura: utiliza um sistema de dois nós (primário/secundário).
- Proteção de dados: implementa a replicação síncrona em tempo real para perda zero de dados (RPO = 0).
2. Instalação
- Software: Instale o motor SafeKit em ambos os servidores.
- Módulo: Baixe o módulo de aplicativo pré-configurado
kvm.safe.
3. Configuração
- Console da Web: configure as pastas específicas que contêm os arquivos KVM.
- Monitoramento: Inicie o monitoramento e a proteção do aplicativo KVM.
Limitações SafeKit de Alta Disponibilidade
| Limite/Requisito | Motivo e Impacto | Alternativa recomendada |
|---|---|---|
| Tamanho da replicação: alguns TBs | Tempo de resincronização após falha (etapa 3): • Rede de 1 Gb/s ≈ 3 horas/TB • Rede de 10 Gb/s ≈ 1 hora/TB (dependendo do desempenho de gravação do disco) | • Usar armazenamento compartilhado externo (mais caro, mais complexo). |
| Contagem de arquivos: < 1.000.000 de arquivos | • Desempenho do tempo de resincronização após uma falha (etapa 3). • Tempo necessário para comparar cada arquivo entre os dois nós. | • Coloque os vários arquivos a serem replicados em um disco rígido virtual/máquina virtual. • Apenas os arquivos que representam o disco rígido virtual/máquina virtual serão replicados e resincronizados neste caso. |
| Capacidade de failover: ≤ 32 VMs | • Cada VM é executada em um módulo mirror independente. • Máximo de 32 módulos mirror em execução no mesmo cluster. | • Utilize um armazenamento compartilhado externo e outra solução de cluster de máquinas virtuais (mais cara e mais complexa). |
| Arquitetura de rede: rede LAN/VLAN entre locais remotos | • Failover automático do endereço IP virtual com 2 nós na mesma sub-rede. • Boa largura de banda para resincronização (passo 3). • Baixa latência para replicação síncrona: normalmente < 5 ms RTT; valores mais altos devem ser validados em relação à taxa de gravação do aplicativo. | • Se os dois nós estiverem em sub-redes diferentes (comum na nuvem), use outras opções de redirecionamento: um balanceador de carga, CLIs de provedor de nuvem, BGP ou redirecionamento de DNS. • Utilize soluções de backup com replicação assíncrona para redes com alta latência. |
Visão geral da solução SafeKit/KVM
A solução é descrita aqui: 💡 Alta Disponibilidade Simples de KVM Linux sem Armazenamento Compartilhado
Instalação da solução SafeKit/KVM no Linux (kvm.safe)
Pré-requisitos
- KVM instalado em 2 nós Linux.
- Aplicações críticas instaladas em uma ou mais máquinas virtuais.
- Máximo de 32 máquinas virtuais por host KVM.
- Os dados replicados totais são limitados a alguns terabytes — além disso, o tempo de resincronização torna-se significativo.
- Interconexão mínima de 1 Gb/s entre os nós (10 Gb/s recomendada para resincronização mais rápida).
- O failover de IP requer que ambos os nós estejam na mesma LAN ou LAN estendida (L2) — redes L3 roteadas não são suportadas (exceto com balanceadores de carga em nuvem 🛠️).
Instalação de pacotes no Linux
- Instale a versão gratuita do SafeKit em 2 nós Linux. Observação: a avaliação gratuita inclui todos os recursos SafeKit. Ao final da avaliação, você pode ativar chaves de licença permanentes sem desinstalar o pacote.
- Após o download do pacote safekit_xx.bin, execute-o para extrair o rpm e o script safekitinstall e, em seguida, execute o script safekitinstall
- Responda sim à configuração automática do firewall
- Defina a senha para o console da web e o usuário padrão admin. Defina a mesma senha em todos os nós.
Instalação do módulo no Linux
- Baixe o módulo kvm.safe.
O módulo é gratuito. Ele contém os arquivos userconfig.xml e os scripts de reinicialização. - Coloque kvm.safe em /opt/safekit/Application_Modules/generic/.
Configuração passo a passo da solução SafeKit/KVM
⚠️ A configuração KVM é apresentada com uma máquina virtual chamada VM1 e contém o aplicativo a ser reiniciado em caso de falha.
⚠️ Você terá que repetir esta configuração para todas as máquinas virtuais que deseja replicar e reiniciar.
1. Pré-requisitos
A imagem da máquina virtual VM1 está no arquivo /var/lib/libvirt/images/vm1.qcow2. Antes de configurar SafeKit, você deve executar a seguinte configuração para colocar a máquina virtual em um diretório específico da vm1 que será replicado pelo SafeKit.
No nó 1:
Parar vm1:
virsh shutdown vm1Crie um diretório
vm1/:mkdir -p /var/lib/libvirt/images/vm1/Copie a imagem vm1 para o novo local:
cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
A imagem original vm1 pode ser excluída assim que os testes com o novo local forem bem-sucedidos.
Edite o arquivo de configuração vm1:
EDITOR=vi virsh edit vm1
E altere a linha:
<source file='/var/lib/libvirt/images/vm1.qcow2'>
por:
<source file='/var/lib/libvirt/images/vm1/vm1.qcow2'>
Defina a opção de cache como “nenhuma” no mesmo arquivo, para garantir a integridade dos dados em caso de falha:
<disk type='file' device='disk'> <driver name='qemu' type='qcow2' **cache='none'** />Feche o arquivo de configuração vm1
Desativar o início automático da vm1:
virsh autostart vm1 --disableCrie um arquivo de configuração
vm1.xmlpara vm1:virsh dumpxml vm1 > vm1.xml
No nó 2:
Copie o arquivo de configuração
vm1.xmldo nó 1. Observação: sempre que a configuração vm1 for alterada no nó 1, você deverá reaplicar a nova configuração no nó 2.Crie vm1, mas não a inicie:
virsh define vm1.xmlDesativar o início automático vm1:
virsh autostart vm1 --disableCrie o diretório para o local da imagem:
mkdir -p /var/lib/libvirt/images/vm1/
2. Inicie o console SafeKit
- Inicie o console da web em um navegador em um nó do cluster, conectando-se a
http://localhost:9010. - Insira
admincomo nome de usuário e a senha definida durante a instalação.
Você também pode executar o console em um navegador em uma estação de trabalho externa ao cluster.
⚠️ A configuração do SafeKit é feita em ambos os nós a partir de um único navegador.
ℹ️ Para proteger o console da web, consulte 🛠️ 11. Protegendo o serviço da web SafeKit no Guia do Usuário.

3. Configurar endereços de nós
- Insira os endereços IP do nó, pressione a
Tab keypara verificar a conectividade e preencha os nomes dos nós. Se node1 ou node2 estiverem em vermelho, verifique a conectividade do navegador com ambos os nós e verifique o firewall em ambos os nós para 🛠️ solucionar problemas. - Em seguida, clique em
Save and applypara salvar a configuração. - Verifique a mensagem
Success✅ em ambos os nós. - Se ocorrer uma
Failurede configuração ❌ em um nó, abra o acordeão ▼ desse nó e revise as mensagens. Observe que você pode usar a IA SafeKit 🤖 para obter assistência.
ℹ️ Se desejar, você pode adicionar uma nova LAN and nodes (primeiro ➕) para criar um segundo heartbeat e uma rede de replicação dedicada.
ℹ️ Se você clicar em Advanced configuration, o arquivo cluster.xml será exibido. Este arquivo é preenchido automaticamente pelo console e implantado nos nós.

4. Selecione um módulo
- No
New module, clique no módulokvm.safe.
ℹ️ No banner azul na parte superior, 🛜 node1 representa o nó de conexão do console. Este nó retransmite solicitações para node2 quando necessário.
ℹ️ O console procura por xxx.safe no diretório Application_Modules/generic/ no nó de conexão (node1) se você colocou um módulo lá durante a instalação.

5. Configure o módulo
- Escolha o início
Automaticdo módulo na inicialização sem atraso. - Normalmente, você tem uma única rede
Heartbeatna qual a replicação é feita. Mas, você pode definir uma rede privada, se necessário (adicionando uma LAN na etapa 3). - Insira em
VM_PATHo caminho raiz do diretório replicado (/var/lib/libvirt/images). - Insira em
VM_NAMEo nome da máquina virtual (vm1).
Assumimos que os arquivos VM1 estão em /var/lib/libvirt/images/vm1/ (consulte os pré-requisitos). Este diretório será replicado em tempo real pelo SafeKit.
ℹ️ Você não precisa configurar um endereço IP virtual. VM1 será reiniciada no KVM secundário com seu endereço IP físico, e esse endereço IP será redirecionado.

6. Verificador personalizado para detetar o mau funcionamento da máquina virtual
O verificador personalizado verifica se a VM está em execução (com o comando ’virsh domstate’). Se a VM não estiver em execução, o verificador personalizado reinicia automaticamente a VM no mesmo nó KVM ou no outro.
- Clique em
Checkers / Custom(veja a imagem). Resource nameidentifica a máquina virtual com um nome de recurso no SafeKit:custom.VM_NAME_check.- Com
restartemAction, a VM é reiniciada no mesmo nó KVM. Após 3 reinicializações malsucedidas em 24 horas, o módulo SafeKit kvm para no nó primário e ocorre um failover da VM no nó secundário. - Se você definir
stopstartemAction, haverá um failover direto no outro nó KVM assim que a VM não estiver em execução.
ℹ️ Para manutenção, se você quiser parar a máquina virtual, o verificador personalizado a reiniciará automaticamente. Para evitar isso, você pode suspender temporariamente o verificador 🖼️. Ou você pode removê-lo excluindo a linha de configuração no console.

7. Editar scripts (opcional)
- Não edite os scripts.
8. Criptografia de comunicação (opcional)
- Mantenha a criptografia da comunicação entre os nós.

9. Salvar e aplicar
Save and applya configuração e os scripts em ambos os nós.

10. Verifique se a configuração foi bem-sucedida
- Verifique a mensagem
Success✅ em ambos os nós e clique emMonitor modules. - Se ocorrer uma
Failurede configuração ❌ em um nó, abra o acordeão ▼ desse nó e revise as mensagens. Observe que você pode usar a IA SafeKit 🤖 para obter assistência.

11. Inicie o nó com dados atualizados
- Se o nó 1 tiver o diretório replicado atualizado para
vm1/, selecione-o e ⋯Force start▶As primary.
Quando o nó 2 for iniciado, todos os dados serão copiados do nó 1 para o nó 2.
⚠️ Se você fizer a escolha errada, corre o risco de sincronizar dados desatualizados em ambos os nós.
⚠️ Também se presume que VM1 está parada no nó 1 para que SafeKit instale os mecanismos de replicação e, em seguida, inicie VM1 no script start_prim.
⚠️ Use Start para inícios subsequentes: SafeKit mantém o servidor mais atualizado. Iniciar As primary é um início especial na primeira vez ou durante operações excepcionais.

12. Aguarde a transição para ALONE (verde)
- O nó 1 deve atingir o estado ALONE (verde), o que significa que o script
start_primfoi executado no nó 1.
⚠️ Se ALONE (verde) não for atingido ou se VM1 não for iniciado, analise o motivo com o log do módulo 🖼️ do nó 1.
- Clique no ícone de log 🔍 do
node1para abrir o log do módulo e procure mensagens de erro, como um verificador que detecta um erro e interrompe o módulo. - Clique em
start_primno log: as mensagens de saída do script são exibidas à direita e os erros podem ser detectados, como VM1 iniciada incorretamente. - Use o SafeKit AI 🤖 para obter ajuda com as mensagens de log.
⚠️ Se o cluster estiver no estado WAIT (red) not uptodate, STOP (red) not uptodate, pare o nó WAIT e force o seu início como primário 🖼️.

13. Iniciar o nó 2
- ⋯
Starto nó 2 com o seu menu contextual. - Aguarde o SECOND estado (verde).
ℹ️
- O nó 2 permanece no SECOND estado (laranja) enquanto resincroniza os diretórios replicados (cópia do nó 1 para o nó 2).
- Isso pode levar algum tempo, dependendo do tamanho dos arquivos a serem resincronizados nos diretórios replicados e da largura de banda da rede.
- Para ver o progresso da cópia, consulte o log do módulo 🖼️ e os recursos de replicação 🖼️ do nó 2. Use o SafeKit AI 🤖 para obter assistência com as mensagens de log.

14. Verifique se o cluster está operacional
- Verifique se o cluster está verde/verde com
VM1em execução no nó PRIM e não em execução no nó SECOND.
Apenas as alterações dentro dos arquivos são replicadas em tempo real neste estado.

15. Testes
- Pare o nó PRIM rolando para baixo no menu contextual e clicando em
Stop. - Verifique se há um failover no SECOND nó, que deve ficar ALONE (verde).
- Verifique com as ferramentas KVM se
VM1está sendo executada no nó 2.
⚠️ Se ALONE (verde) não for atingido no node2 ou se VM1 não for iniciada, analise o motivo com o log do módulo 🖼️ do nó 2.
- Clique no ícone de log 🔍 do
node2para abrir o log do módulo e procure mensagens de erro, como um verificador detectando um erro e interrompendo o módulo. - Clique em
start_primno log: as mensagens de saída do script são exibidas à direita e os erros podem ser detectados, como VM1 iniciada incorretamente. - Use o SafeKit AI 🤖 para obter ajuda com as mensagens de log.
⚠️
- Se tudo estiver bem, inicie o node1, que irá ressincronizar os diretórios replicados do node2.
- Se as coisas derem errado, pare node2 e force o nó 1 a iniciar como primário 🖼️, que será reiniciado com seus dados localmente íntegros no momento da parada.
ℹ️ Observe que você tem uma 🖼️ linha do tempo 🕒 que pode ser útil para entender o que acontece no cluster.

16. Se necessário, configure um verificador de divisão de cluster
- Consulte “Quais são os diferentes cenários em caso de isolamento de rede em um cluster?” para saber se você precisa configurar um verificador de divisão de rede.
- Acesse a configuração do módulo e clique em
Checkers / Splitbrain(veja a imagem) para editar os parâmetros do splitbrain. Save and applya nova configuração para reimplementá-la em ambos os nós (o módulo deve ser interrompido em ambos os nós para salvar e aplicar).
Parâmetros :
Resource nameidentifica a testemunha com um nome de recurso:splitbrain.witness. Você pode alterar esse valor para identificar a testemunha.Witness addressé o argumento para um ping quando um nó passa de PRIM para ALONE ou de SECOND para ALONE. Altere este valor com o IP da testemunha (um elemento robusto, normalmente um roteador).- Observação: você pode definir vários IPs separados por espaços em branco. Observe que os endereços IP devem ser acessíveis a partir de um nó, mas não do outro, no caso de isolamento de rede.

17. Replicando snapshots
O diretório que contém os arquivos XML do snapshot é:
/var/lib/libvirt/qemu/snapshot/%VM_NAME%
onde VM_NAME é o nome da máquina virtual (vm1).
Observação: Se nenhum snapshot tiver sido criado, crie um para gerar o diretório (caso contrário, a configuração SafeKit falhará).
Para replicar:
Na configuração do módulo, clique em
Advanced Configuration(veja a imagem) para editaruserconfig.xml.Insira as linhas abaixo na seção
<rfs>do userconfig.xml:<replicated dir="/var/lib/libvirt/qemu/snapshot/%VM_NAME%" mode="read_only"> </replicated>Save and applya nova configuração para reimplantar o arquivo userconfig.xml modificado em ambos os nós (o módulo deve ser interrompido em ambos os nós para salvar e aplicar).Crie snapshots no nó PRIM, seja através do virt-manager ou de uma linha de comando:
virsh snapshot-create-as vm1 snapshot-name
Observação: ao criar um snapshot com uma linha de comando, você precisa atualizar a visualização do snapshot no virt-manager.
As capturas de tela criadas no nó PRIM ficam operacionais no nó 2 após o failover, mas não são listadas no nó 2.
Para importar um snapshot no nó 2, você deve executar o comando:
virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-nameO comando para listar todos os snapshots da vm1 é:
virsh snapshot-list vm1

18. Suporte
- Para obter suporte, faça 2
SnapshotsSafeKit (2 arquivos .zip), um para cada nó.
ℹ️ Mais informações sobre o suporte aqui.

Demonstração de uma solução de alta disponibilidade em nível de máquina virtual
Vídeo SafeKit: Agrupamento em cluster no nível da máquina virtual com Hyper-V (5:15)
Neste vídeo, descubra como SafeKit implementa alta disponibilidade para Hyper-V sem a complexidade de uma SAN. Aprenda a configurar a replicação de máquinas virtuais entre dois nós para garantir o failover contínuo para suas cargas de trabalho virtualizadas críticas. Embora esta demonstração use Hyper-V no Windows, a solução funciona de forma idêntica com KVM no Linux.
Capítulos
- 🎬 Visão geral da arquitetura: 2 nós Hyper-V e 2 máquinas virtuais (0:49)
- 🎬 Configurando o cluster e os módulos hyperv.safe (1:59)
- 🎬 Teste ao vivo: replicação de VM, migração e failover automático em caso de falha (2:26)
Implementação passo a passo
- 🛠️ Leia o guia para configurar um cluster mirror Hyper-V no Windows.
- 🛠️ Leia o guia para configurar um cluster mirror KVM no Linux.
🔍 Explore o SafeKit
Encontre informações sobre os recursos, as arquiteturas, os vídeos, a documentação e a avaliação gratuita do SafeKit.
| Recurso | Descrição | Link |
|---|---|---|
| Principais características | Saiba por que o SafeKit é uma solução de alta disponibilidade simples e econômica. | Descubra as principais funcionalidades |
| Casos de uso | Saiba como o SafeKit mantém as aplicações e a infraestrutura críticas disponíveis. | Explore os casos de uso |
| Modelo de implantação | O SafeKit oferece alta disponibilidade sem a necessidade de uma SAN ou armazenamento compartilhado. | Explore o modelo de implantação |
| Estratégias de alta disponibilidade | Compare a alta disponibilidade para máquinas virtuais com a alta disponibilidade para aplicativos. | Compare as duas estratégias |
| Especificações técnicas | Verifique os requisitos técnicos e as limitações dos clusters do SafeKit. | Leia as especificações técnicas |
| Vídeos | Assista a demonstrações da configuração do SafeKit e do failover automático. | Assista aos vídeos técnicos |
| Arquitetura | Saiba como o cluster mirror replica arquivos em tempo real e lida com o failover. | Explore a arquitetura Mirror |
| Arquitetura | Saiba como o cluster farm equilibra o tráfego de rede e lida com o failover. | Explore a arquitetura Farm |
| Comparação de produtos | Compare o SafeKit com os clusters de alta disponibilidade tradicionais. | Compare as soluções |
| Recursos técnicos | Encontre a documentação técnica, baixe o SafeKit e acesse a versão de teste gratuita. | Acesse a documentação e a versão de teste gratuita |
| Módulos de aplicação | Use os módulos pré-configurados do SafeKit para configurar alta disponibilidade para seus aplicativos. | Explore os módulos do aplicativo |