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 a comutação automática de falhas e a replicação síncrona sem a necessidade de armazenamento partilhado.
Para obter ajuda, 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 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: Descarregue o módulo de aplicação pré-configurado
kvm.safe.
3. Configuração
- Consola Web: Configure as pastas específicas que contêm os ficheiros KVM.
- Monitorização: Inicie a monitorização e proteção da aplicação KVM.
Limitações de Alta Disponibilidade SafeKit
| Limite / Requisito | Razão e Impacto | Alternativa Recomendada |
|---|---|---|
| Tamanho da replicação: alguns TBs | Tempo de resincronização após falha (passo 3): • Rede de 1 Gb/s ≈ 3 horas/TB • Rede de 10 Gb/s ≈ 1 hora/TB (dependendo do desempenho de escrita do disco) | • Utilizar armazenamento partilhado externo (mais caro, mais complexo). |
| Número de ficheiros: < 1.000.000 de ficheiros | • Desempenho do tempo de resincronização após uma falha (passo 3). • Tempo necessário para comparar cada ficheiro entre os dois nós. | • Coloque os vários ficheiros a replicar num disco rígido virtual/máquina virtual. • Apenas os ficheiros que representam o disco rígido virtual/máquina virtual serão replicados e resincronizados neste caso. |
| Capacidade de contingência: ≤ 32 máquinas virtuais | • Cada máquina virtual é executada num módulo mirror independente. • Máximo de 32 módulos mirror a funcionar no mesmo cluster. | • Utilizar um armazenamento externo partilhado e outra solução de agrupamento de máquinas virtuais (mais cara, mais complexa). |
| Arquitetura de rede: rede LAN/VLAN entre locais remotos | • Comutação automática de falha 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 elevados devem ser validados em relação à taxa de escrita da aplicação. | • Se os dois nós estiverem em subredes diferentes (comum na nuvem), utilize outras opções de reencaminhamento: um balanceador de carga, CLIs do fornecedor de nuvem, BGP ou redirecionamento de DNS. • Utilize soluções de cópia de segurança 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 Linux KVM sem Armazenamento Partilhado
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 dentro de uma ou mais máquinas virtuais.
- Máximo de 32 máquinas virtuais por anfitrião KVM.
- O total de dados replicados é limitado a alguns terabytes — para além disso, o tempo de resincronização torna-se significativo.
- Interconexão mínima de 1 Gb/s entre nós (10 Gb/s recomendado para resincronização mais rápida).
- A redundância de IP requer que ambos os nós estejam na mesma LAN ou LAN estendida (L2) — redes L3 com encaminhamento 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. Nota: a versão de avaliação gratuita inclui todas as funcionalidades SafeKit. No final do período de avaliação, pode ativar as chaves de licença permanentes sem desinstalar o pacote.
- Após a transferência 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 da firewall
- Defina a palavra-passe para a consola web e para o utilizador admin predefinido. Defina a mesma palavra-passe em todos os nós.
Instalação do módulo no Linux
- Faça o download do módulo kvm.safe.
O módulo é gratuito. Contém os ficheiros userconfig.xml e os scripts de reinicialização. - Coloque kvm.safe em /opt/safekit/Application_Modules/generic/.
Descarregar kvm.safe (Linux) >
Configuração passo a passo da solução SafeKit/KVM
⚠️ A configuração KVM é apresentada com uma máquina virtual denominada VM1 e contém a aplicação a reiniciar em caso de falha.
⚠️ Terá de 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 encontra-se no ficheiro /var/lib/libvirt/images/vm1.qcow2. Antes de configurar SafeKit, deve executar a seguinte configuração para colocar a máquina virtual num diretório específico da que será replicado pelo SafeKit.
No nó 1:
Parar a vm1:
virsh shutdown vm1Crie um diretório
vm1/:mkdir -p /var/lib/libvirt/images/vm1/Copie a imagem da vm1 para o novo local:
cp -a /var/lib/libvirt/images/vm1.qcow2 /var/lib/libvirt/images/vm1/
A imagem original vm1 pode ser eliminada assim que os testes com a nova localização forem bem-sucedidos.
Edite o ficheiro 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 ficheiro, para garantir a integridade dos dados em caso de falha:
<disk type='file' device='disk'> <driver name='qemu' type='qcow2' **cache='none'** />Feche o ficheiro de configuração vm1
Desativar o arranque automático da vm1:
virsh autostart vm1 --disableCrie um ficheiro de configuração
vm1.xmlpara vm1:virsh dumpxml vm1 > vm1.xml
No nó 2:
Copie o ficheiro de configuração
vm1.xmldo nó 1. Nota: sempre que a configuração vm1 for alterada no nó 1, deve reaplicar a nova configuração no nó 2.Crie a vm1, mas não a inicie:
virsh define vm1.xmlDesativar o arranque automático vm1:
virsh autostart vm1 --disableCrie o diretório para a localização da imagem:
mkdir -p /var/lib/libvirt/images/vm1/
2. Inicie a consola SafeKit
- Inicie a consola web num navegador, num dos nós do cluster, ligando-se a
http://localhost:9010. - Introduza
admincomo nome de utilizador e a palavra-passe definida durante a instalação.
Também é possível executar a consola num navegador, numa 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 a consola web, consulte 🛠️ 11. Proteção do serviço web SafeKit no Guia do Utilizador.

3. Configurar os endereços dos nós
- Introduza os endereços IP dos nós, prima a
Tab keypara verificar a conectividade e preencha os nomes dos nós. Se node1 ou node2 tiverem uma cor vermelha, verifique a conectividade do navegador a ambos os nós e verifique a firewall em ambos os nós para 🛠️ resolução de problemas. - Em seguida, clique em
Save and applypara guardar a configuração. - Verifique a mensagem
Success✅ em ambos os nós. - Se ocorrer uma
Failurede configuração ❌ num nó, abra o acordeão ▼ desse nó e reveja as mensagens. Tenha em atenção que pode utilizar a IA SafeKit 🤖 para obter assistência.
ℹ️ Se desejar, pode adicionar uma nova LAN and nodes (primeiro ➕) para criar um segundo heartbeat e uma rede de replicação dedicada.
ℹ️ Se clicar em Advanced configuration, o ficheiro cluster.xml é apresentado. Este ficheiro é preenchido automaticamente pela consola e implementado nos nós.

4. Selecione um módulo
- No
New module, clique no módulokvm.safe.
ℹ️ No banner azul no topo, node1 🛜 representa o nó de ligação da consola. Este nó reencaminha os pedidos para node2 quando necessário.
ℹ️ A consola procura por xxx.safe no diretório Application_Modules/generic/ no nó de ligação (node1) se tiver colocado um módulo lá durante a instalação.

5. Configure o módulo
- Escolha o arranque
Automaticdo módulo no arranque, sem demora. - Normalmente, tem uma única rede
Heartbeatna qual a replicação é feita. No entanto, pode definir uma rede privada, se necessário (adicionando uma LAN no passo 3). - Introduza em
VM_PATHo caminho raiz do diretório replicado (/var/lib/libvirt/images). - Introduza em
VM_NAMEo nome da máquina virtual (vm1).
Assumimos que os ficheiros VM1 estão em /var/lib/libvirt/images/vm1/ (ver pré-requisitos). Este diretório será replicado em tempo real pelo SafeKit.
ℹ️ Não é necessário configurar um endereço IP virtual. VM1 será reiniciada na KVM secundária com o seu endereço IP físico e este endereço IP será redirecionado.

6. Verificador personalizado para detetar avarias na 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 noutro.
- Clique em
Checkers / Custom(ver 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 reinícios sem sucesso em 24 horas, o módulo SafeKit kvm para no nó primário e ocorre uma comutação de contingência da VM para o nó secundário. - Se definir
stopstartemAction, haverá uma comutação automática para o outro nó KVM assim que a máquina virtual não estiver em execução.
ℹ️ Para manutenção, se quiser parar a máquina virtual, o verificador personalizado irá reiniciá-la automaticamente. Para evitar isso, pode suspender temporariamente o verificador 🖼️. Ou pode removê-lo, eliminando a linha de configuração na consola.

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

9. Guardar 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 ❌ num nó, abra o acordeão ▼ desse nó e reveja as mensagens. Tenha em atenção que pode utilizar 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 fizer a escolha errada, corre o risco de sincronizar dados desatualizados em ambos os nós.
⚠️ Também se assume 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.
⚠️ Utilize Start para arranques subsequentes: SafeKit mantém o servidor mais atualizado. Iniciar As primary é um arranque especial na primeira vez ou durante operações excecionais.

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 registo do módulo 🖼️ do nó 1.
- Clique no ícone de registo 🔍 do
node1para abrir o registo do módulo e procure mensagens de erro, como um verificador que deteta um erro e para o módulo. - Clique em
start_primno registo: as mensagens de saída do script são apresentadas à direita e os erros podem ser detetados, como VM1 iniciado incorretamente. - Utilize o SafeKit AI 🤖 para obter assistência com as mensagens de registo.
⚠️ Se o cluster estiver no estado WAIT (red) not uptodate, STOP (red) not uptodate, pare o nó WAIT e force o seu arranque como primário 🖼️.

13. Iniciar 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).
- Isto pode demorar algum tempo, dependendo do tamanho dos ficheiros a resincronizar nos diretórios replicados e da largura de banda da rede.
- Para ver o progresso da cópia, consulte o registo do módulo 🖼️ e os recursos de replicação 🖼️ do nó 2. Utilize a IA SafeKit 🤖 para obter assistência com as mensagens de registo.

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

15. Testes
- Pare o nó PRIM, percorrendo o menu contextual e clicando em
Stop. - Verifique se existe um failover no SECOND nó, que deverá ficar ALONE (verde).
- Verifique com as ferramentas KVM se
VM1está a ser 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 registo do módulo 🖼️ do nó 2.
- Clique no ícone de registo 🔍 do
node2para abrir o registo do módulo e procure mensagens de erro, como um verificador que deteta um erro e para o módulo. - Clique em
start_primno registo: as mensagens de saída do script são apresentadas à direita e os erros podem ser detetados, como VM1 iniciado incorretamente. - Utilize o SafeKit AI 🤖 para obter assistência com as mensagens de registo.
⚠️
- Se tudo estiver bem, inicie o node1, que irá ressincronizar os diretórios replicados do node2.
- Se as coisas correrem mal, pare node2 e force o nó 1 a iniciar como primário 🖼️, que será reiniciado com os seus dados localmente íntegros no momento da paragem.
ℹ️ Tenha em atenção que tem uma linha do 🖼️ 🕒 que pode ser útil para entender o que acontece no cluster.

16. Se necessário, configure um verificador de divisão de rede
- Consulte “Quais são os diferentes cenários em caso de isolamento de rede num cluster?” para saber se precisa de configurar um verificador de divisão de rede.
- Vá para a configuração do módulo e clique em
Checkers / Splitbrain(ver imagem) para editar os parâmetros do splitbrain. Save and applya nova configuração para a reimplantar em ambos os nós (o módulo deve estar parado em ambos os nós para guardar e aplicar).
Parâmetros :
Resource nameidentifica a testemunha com um nome de recurso:splitbrain.witness. Pode alterar este 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 para o IP do testemunha (um elemento robusto, normalmente um router).- Nota: pode definir vários IPs separados por espaços em branco. Tenha em atenção que os endereços IP devem ser acessíveis a partir de um nó, mas não do outro, em caso de isolamento de rede.

17. Replicar instantâneos
O diretório que contém os ficheiros XML da cópia de segurança é:
/var/lib/libvirt/qemu/snapshot/%VM_NAME%
onde VM_NAME é o nome da máquina virtual (vm1).
Nota: Se nenhuma cópia de segurança tiver sido criada, crie uma para gerar o diretório (caso contrário, a configuração SafeKit falhará).
Para o replicar:
Na configuração do módulo, clique em
Advanced Configuration(ver imagem) para editar ouserconfig.xml.Insira as linhas abaixo na secçã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 ficheiro userconfig.xml modificado em ambos os nós (o módulo deve ser parado em ambos os nós para guardar e aplicar).Crie instantâneos no nó PRIM, seja através do virt-manager ou de uma linha de comandos:
virsh snapshot-create-as vm1 snapshot-name
Nota: ao criar uma cópia de segurança através da linha de comandos, é necessário atualizar a visualização da cópia de segurança no virt-manager.
As cópias de segurança criadas no nó PRIM funcionam no nó 2 após a recuperação de falhas, mas não são listadas no nó 2.
Para importar uma cópia de segurança no nó 2, tem de executar o comando:
virsh snapshot-create --redefine vm1 /var/lib/libvirt/qemu/snapshot/vm1/snapshot-nameA linha de comando para listar todas as cópias de segurança da vm1 é:
virsh snapshot-list vm1

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

Demonstração de uma solução de alta disponibilidade ao nível da máquina virtual
Vídeo SafeKit: Agrupamento de Máquinas Virtuais 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 uma comutação de falha perfeita para as suas cargas de trabalho virtualizadas críticas. Embora esta demonstração utilize 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)
- 🎬 Configuração do cluster e dos módulos hyperv.safe (1:59)
- 🎬 Teste em direto: replicação de máquinas virtuais, migração e comutação automática 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 as funcionalidades, arquiteturas, vídeos, documentação e a versão de teste gratuita do SafeKit.
| Recurso | Descrição | Ligação |
|---|---|---|
| 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 infraestruturas críticas disponíveis. | Explore os casos de uso |
| Modelo de implementação | O SafeKit oferece alta disponibilidade sem a necessidade de uma SAN ou de armazenamento partilhado. | Explore o modelo de implementação |
| Estratégias de alta disponibilidade | Compare a alta disponibilidade para máquinas virtuais com a alta disponibilidade para aplicações. | Compare as duas estratégias |
| Especificações técnicas | Verifique os requisitos técnicos e as limitações dos clusters SafeKit. | Leia as especificações técnicas |
| Vídeos | Assista a demonstrações da configuração do SafeKit e da comutação automática de falha. | Assista aos vídeos técnicos |
| Arquitetura | Saiba como o cluster mirror replica ficheiros em tempo real e lida com a comutação de falhas. | Explore a arquitetura Mirror |
| Arquitetura | Saiba como o cluster farm equilibra o tráfego de rede e lida com a contingência. | 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, descarregue o SafeKit e aceda à versão de avaliação gratuita. | Aceda à documentação e à versão de teste gratuita |
| Módulos da aplicação | Utilize os módulos SafeKit pré-configurados para configurar alta disponibilidade para as suas aplicações. | Explore os módulos da aplicação |