Pesquisar SafeKit

Alta Disponibilidade Docker com SafeKit: Instale o Módulo mirror.safe para Failover

Guia de Instalação Rápida de Alta Disponibilidade para Docker

Este guia explica como configurar um cluster mirror para Docker 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 mirror.safe.

3. Configuração

  • Consola Web: Configure as pastas específicas que contêm os ficheiros Docker.
  • Monitorização: Inicie a monitorização e proteção da aplicação Docker.

Limitações de Alta Disponibilidade SafeKit

Limite / RequisitoRazão e ImpactoAlternativa Recomendada
Tamanho da replicação: alguns TBsTempo 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/Docker

A solução é descrita aqui: **💡 SafeKit: Software de Replicação de Dados em Tempo Real e Alta Disponibilidade Docker
**.

Instalação da solução SafeKit/Docker no Linux (mirror.safe)

Pré-requisitos

  • É necessário que a aplicação Docker que pretende reiniciar no SafeKit esteja instalada em 2 nós (máquinas virtuais ou servidores físicos).

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.

Descarregue SafeKit (Linux) >

Exemplo 1 com uma aplicação Docker Compose

Com uma aplicação Docker Compose, tem um ficheiro docker-compose.yml que descreve a aplicação e todos os seus contentores.

  • Primeiro, em ambos os servidores, instale a aplicação docker compose sem a iniciar: docker-compose -f docker-compose.yml up –no-start
  • Num servidor, para cada volume em docker-compose.yml, execute este comando: docker volume inspect volume_name
    Irá devolver os diretórios do anfitrião dos volumes do Docker (estes caminhos não são especificados no docker-compose.yml).
    Receberá uma lista de caminhos como /var/lib/docker/volumes/ <volume_name> /_data
  • Vá para a secção de configuração passo a passo e
    • implementar o módulo mirror.safe
    • defina um endereço IP virtual que será ativado em caso de falha
    • defina a lista de /var/lib/docker/volumes/ <volume_name> /_data como diretórios replicados
    • coloque respetivamente nos scripts start_prim e stop_prim: /usr/local/bin/docker-compose-f docker-compose.yml –no-ansi start e /usr/local/bin/docker-compose-f docker-compose.yml –no-ansi stop

Exemplo 2 com uma aplicação Docker que inicia um conjunto de contentores

Assumimos aqui uma aplicação Docker myappli, que inicia um conjunto de contentores.

  • Primeiro, em ambos os servidores, instale o myappli sem o iniciar
  • Num servidor, liste os volumes usados pelo myapply: ls /var/lib/docker/volumes
    Assim, obterá uma lista de caminhos como /var/lib/docker/volumes/ <volume_name> /_data
  • Vá para a secção de configuração passo a passo e
    • implementar o módulo mirror.safe
    • defina um endereço IP virtual que será ativado em caso de falha
    • defina a lista de /var/lib/docker/volumes/ <volume_name> /_data como diretórios replicados
    • coloque respetivamente nos scripts start_prim e stop_prim: /…/myappli start e /…/myappli stop

Exemplo 3 com uma imagem Docker simples

A configuração é apresentada no exemplo da imagem Docker do nginx (servidor web).

  • Criação de volumes Docker
    Em ambos os servidores, crie um volume Docker com o mesmo nome: docker volume create replicated_vol
    Obtenha o caminho do diretório onde o volume está armazenado no anfitrião: docker volume inspect replicated_vol
    (por exemplo: /var/lib/docker/storage/replicated_vol/_data)
  • Criação de contentores Docker
    Em ambos os servidores, crie um contentor Docker nginx que se ligue ao volume anterior: docker container create –name mynginx -v replicated_vol:/usr/share/nginx/html -p 9011:80 nginx
    Preencha o volume com um ficheiro index.html: docker cp index.html mynginx:/usr/share/nginx/html/index.html
  • Vá para a secção de configuração passo a passo e
    • implementar o módulo mirror.safe
    • defina um endereço IP virtual que será ativado em caso de falha
    • definir /var/lib/docker/storage/replicated_vol/_data como um diretório replicado
    • coloque respetivamente nos scripts start_prim e stop_prim: docker start mynginx e docker stop mynginx
    • Após a configuração SafeKit, teste o acesso a index.html com http://vitual-ip:9011

Configuração passo a passo da solução SafeKit/Docker

Pré-requisitos

  • Docker aplicação foi instalada em 2 nós.
  • 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 🛠️).

1. Inicie a consola SafeKit

  • Inicie a consola web num navegador, num dos nós do cluster, ligando-se a http://localhost:9010.
  • Introduza admin como 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.

Inicie a consola web SafeKit para configurar o cluster Docker

2. Configurar os endereços dos nós

  • Introduza os endereços IP dos nós, prima a Tab key para 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 apply para guardar a configuração.
  • Verifique a mensagem Success ✅ em ambos os nós.
  • Se ocorrer uma Failure de 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.

Introduza os nós do cluster da Docker

3. Selecione um módulo

  • No New module, clique no módulo mirror.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.

Escolha o módulo para Docker

4. Configure o módulo

  • No Module startup at boot, escolha o arranque automático do módulo no arranque sem atraso.
  • Em Macros/SERVICES, introduza os nomes dos serviços da sua aplicação, pela ordem de inicialização, separados por vírgulas. Consulte esta captura de ecrã para um exemplo visual dos serviços Milestone XProtect 🖼️.
  • Nas Heartbeat networks, deve ter uma única rede de pulsações na qual a replicação é feita. Se adicionou uma LAN privada no passo 2, pode configurar duas pulsações com o fluxo de replicação na LAN privada.
  • Em Virtual IP addresses, introduza um endereço IP virtual. Um endereço IP virtual é um endereço IP padrão na mesma rede IP (mesma sub-rede) que os endereços IP de ambos os nós.
    Os clientes da aplicação devem ser configurados com o endereço IP virtual (ou o nome DNS associado ao endereço IP virtual).
    O endereço IP virtual é automaticamente alterado em caso de falha.
  • Em Replicated directories, defina os caminhos dos diretórios a replicar. Verifique se eles existem em ambos os nós e contêm os dados da aplicação.
    A replicação de dados e de registos é essencial para uma base de dados.
    Pode criar diretórios replicados adicionais conforme necessário.
    Veja esta captura de ecrã para um exemplo visual da replicação SQL Milestone XProtect 🖼️.
  • No Checkers, poderá configurar os verificadores, se necessário, como monitorização de processos, verificadores personalizados, TCP, ping ou verificadores de divisão de rede.
    Por exemplo, se um nome de processo for exibido em Monitored processes/services, ele será monitorizado com uma ação de reinicialização em caso de falha. A configuração de um nome de processo incorreto fará com que o módulo pare logo após o seu início.

ℹ️ Se clicar em Advanced configuration, o ficheiro userconfig.xml é apresentado. Este ficheiro é preenchido automaticamente pela consola e implementado nos nós com os scripts de reinicialização.

ℹ️ Numa implementação em nuvem, não é necessário configurar um endereço IP virtual no SafeKit. O IP virtual é gerido ao nível do balanceador de carga da nuvem 🛠️

ℹ️ Ao aplicar a configuração SafeKit, o startup type dos serviços é automaticamente definido como Manual nos serviços Windows. Isto garante que os serviços não arrancam automaticamente quando o sistema é iniciado, mas são iniciados apenas quando o próprio módulo é iniciado (o mesmo se aplica no Linux).

Aceda às definições do módulo Docker

5. Editar os scripts (opcional)

  • Este passo é opcional e pode ser ignorado na maioria dos casos, uma vez que os scripts de reinicialização já estão pré-configurados para reiniciar os serviços definidos no passo anterior.
  • Então, clique diretamente em Next step.
  • start_prim.ps1 inicia todos os serviços na ordem especificada na lista SERVICES, enquanto stop_prim.ps1 para todos os serviços na ordem inversa.
  • Adicionalmente, start_prim.ps1 verifica o arranque de cada serviço e para o módulo se algum serviço não arrancar corretamente.

Aceda às definições do módulo Docker

6. Criptografia da comunicação (opcional)

  • Mantenha a encriptação da comunicação entre os nós.

Criptografia de comunicação do módulo Docker

7. Guardar e aplicar

  • Save and apply a configuração e os scripts em ambos os nós.

Guarde e aplique a configuração do módulo Docker

8. Verifique se a configuração foi bem-sucedida

  • Verifique a mensagem Success ✅ em ambos os nós e clique em Monitor modules.
  • Se ocorrer uma Failure de 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.

⚠️ No Linux, poderá obter um erro nesta etapa se os diretórios replicados forem pontos de montagem. 🛠️ Consulte o SK-0030 para resolver o problema.

Verifique o sucesso da configuração do módulo Docker

9. Inicie o nó com dados atualizados

  • Se o nó 1 tiver os diretórios replicados atualizados, 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 a aplicação Docker está parada no nó 1 para que SafeKit instale os mecanismos de replicação e, em seguida, inicie a aplicação 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.

Inicie como primário o nó Docker com os dados atualizados

10. Aguarde a transição para ALONE (verde)

  • O nó 1 deve atingir o estado ALONE (verde), o que significa que o IP virtual está definido e que o script start_prim foi executado no nó 1.

⚠️ Se ALONE (verde) não for atingido ou se a aplicação não for iniciada, analise o motivo com o registo do módulo 🖼️ do nó 1.

  • Clique no ícone de registo 🔍 do node1 para 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_prim no registo: as mensagens de saída do script são exibidas à direita e os erros podem ser detetados, como um serviço 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 🖼️.

O primeiro nó Docker inicia como primário e fica ALONE

11. Iniciar o nó 2

  • ⋯ Start o 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.

Inicie o nó 2 Docker

12. Verifique se o cluster está operacional

  • Verifique se o cluster está verde/verde com os serviços Docker a serem executados no nó PRIM e não no nó SECOND.

Apenas as alterações dentro dos ficheiros são replicadas em tempo real neste estado.

⚠️ Os componentes que são clientes dos serviços Docker devem ser configurados com o endereço IP virtual. A configuração pode ser feita com um nome DNS (se um nome DNS tiver sido criado e associado ao endereço IP virtual).

O nó Docker 2 é SECOND (verde)

13. 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).
  • E com Microsoft Management Console (MMC) no Windows ou com linhas de comando no Linux, verifique a comutação por falha dos serviços Docker (parados no nó 1 no script stop_prim e iniciados no nó 2 no script start_prim).

⚠️ Se ALONE (verde) não for atingido no node2 ou se a aplicação não for iniciada, analise o motivo com o registo do módulo 🖼️ do nó 2.

  • Clique no ícone de registo 🔍 do node2 para 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_prim no registo: as mensagens de saída do script são exibidas à direita e os erros podem ser detetados, como um serviço 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.

ℹ️ Encontre mais detalhes, juntamente com vídeos, no Treinamento Online SafeKit.

Parar o módulo Docker no servidor PRIM

14. Apoio

  • Para obter suporte, faça 2 Snapshots SafeKit (2 ficheiros .zip), uma para cada nó.

ℹ️ Mais informações sobre o apoio aqui.

Tire capturas de ecrã da Docker para obter suporte

Demonstração da solução mirror SafeKit

Vídeo SafeKit: Agrupamento a nível de aplicação (8:47)

Neste vídeo, descubra como SafeKit implementa um cluster de alta disponibilidade mirror sem a complexidade de uma SAN. Embora esta demonstração utilize Microsoft SQL Server, a solução funciona de forma idêntica para outras bases de dados e aplicações.

Capítulos

  1. 🎬 2 nós com SQL Server (0:32)
  2. 🎬 Configure o cluster e o módulo mirror.safe (3:58)
  3. 🎬 Iniciar e testar a replicação, migração e failover do SQL em caso de falha (4:17)

Implementação Passo a Passo

🔍 Explore o SafeKit

Encontre informações sobre as funcionalidades, arquiteturas, vídeos, documentação e a versão de teste gratuita do SafeKit.

RecursoDescriçãoLigação
Principais característicasSaiba por que o SafeKit é uma solução de alta disponibilidade simples e económica.Descubra as principais funcionalidades
Casos de usoSaiba como o SafeKit mantém as aplicações e infraestruturas críticas disponíveis.Explore os casos de uso
Modelo de implementaçãoO SafeKit oferece alta disponibilidade sem a necessidade de uma SAN ou de armazenamento partilhado.Explore o modelo de implementação
Estratégias de alta disponibilidadeCompare a alta disponibilidade para máquinas virtuais com a alta disponibilidade para aplicações.Compare as duas estratégias
Especificações técnicasVerifique os requisitos técnicos e as limitações dos clusters SafeKit.Leia as especificações técnicas
VídeosAssista a demonstrações da configuração do SafeKit e da comutação automática de falha.Assista aos vídeos técnicos
ArquiteturaSaiba como o cluster mirror replica ficheiros em tempo real e lida com a comutação de falhas.Explore a arquitetura Mirror
ArquiteturaSaiba como o cluster farm equilibra o tráfego de rede e lida com a contingência.Explore a arquitetura Farm
Comparação de produtosCompare o SafeKit com os clusters de alta disponibilidade tradicionais.Compare as soluções
Recursos técnicosEncontre 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çãoUtilize os módulos SafeKit pré-configurados para configurar alta disponibilidade para as suas aplicações.Explore os módulos da aplicação
SafeKit AI Chat SafeKit AI