Recuperação de Desastre na Nuvem
7. Migrando para a Nuvem em um Cenário de Desastre¶
Esta é a seção que você espera nunca precisar usar, mas que, se o pior acontecer, será a mais valiosa de toda a wiki. Um cenário de desastre implica a perda total e irrecuperável do seu hardware de servidor físico. Neste caso, nossos backups off-site no Google Cloud Storage (GCS) são nossa única linha de defesa para reconstruir nossa infraestrutura e restaurar nossos serviços.
Este guia é um procedimento passo a passo para executar uma migração de emergência para o Google Cloud Platform (GCP), transformando seus backups em uma infraestrutura funcional na nuvem. O objetivo é restaurar os serviços críticos o mais rápido possível, de forma automatizada e consistente.
Pré-requisitos para o Sucesso
Este plano de recuperação depende inteiramente da execução bem-sucedida e consistente das seguintes estratégias de backup, detalhadas em seções anteriores:
1. Backups Off-site para GCS: O script de sincronização com rclone deve estar funcionando corretamente, enviando os backups para o GCS.
2. Infraestrutura como Código (IaC): Seus playbooks Ansible, Docker Compose, configurações do Traefik e, crucialmente, os templates Terraform para este plano de recuperação devem estar versionados em um repositório Git acessível (ex: GitHub).
3. Chaves e Senhas: As senhas de criptografia do rclone e as chaves de API devem estar armazenadas de forma segura em um gerenciador de senhas que você possa acessar sem o seu home server.
Fase 1: Preparação do Ambiente de Recuperação¶
Nesta fase, usaremos uma máquina local (seu laptop, por exemplo) para orquestrar a criação da nova infraestrutura na GCP.
-
Instale as Ferramentas Necessárias:
- Google Cloud SDK (
gcloud): Para autenticar e interagir com sua conta GCP. - Terraform: Para provisionar a infraestrutura a partir de código.
rclone: Para baixar e descriptografar seus backups do GCS.- Git: Para clonar seu repositório de IaC.
- Google Cloud SDK (
-
Autenticação e Configuração:
- Autentique-se no GCP:
gcloud auth login - Configure o projeto padrão:
gcloud config set project <seu-id-de-projeto-gcp> - Clone seu repositório
home-server:git clone <url-do-seu-repo-git> - Configure o
rclonena sua máquina local com as mesmas configurações do host Proxmox, incluindo o remote criptografado e as senhas. Verifique se você consegue listar os arquivos no bucket:rclone lsd gcs_backup_crypt:
- Autentique-se no GCP:
Fase 2: Provisionamento da Infraestrutura com Terraform¶
Nesta fase, executaremos os scripts Terraform para construir a espinha dorsal da nossa nova casa na nuvem. Usaremos o Google Kubernetes Engine (GKE) como substituto para o Proxmox + Docker, pois ele oferece uma plataforma mais robusta e gerenciada para orquestração de containers.
Navegue até o diretório terraform/gcp_disaster_recovery no seu repositório clonado.
Estrutura dos Arquivos Terraform (Exemplo):
main.tf: Define o provedor GCP e a configuração principal.vpc.tf: Cria a rede VPC, sub-redes e regras de firewall.gke.tf: Provisiona um cluster GKE com um pool de nós.storage.tf: Cria os Persistent Disks (substitutos dos datasets ZFS) que serão usados pelos nossos serviços.iam.tf: Configura as contas de serviço e permissões necessárias para o GKE interagir com outros serviços GCP.variables.tf: Define as variáveis (nome do projeto, região, etc.).
Ações:
-
Inicialize o Terraform:
-
Planeje a Infraestrutura: O Terraform irá mostrar todos os recursos que serão criados. Revise-os cuidadosamente.
-
Aplique a Configuração: Este comando irá de fato criar os recursos na sua conta GCP. Isso pode levar vários minutos.
Ao final deste processo, você terá um cluster GKE funcional, discos persistentes vazios e a rede necessária para começar a restaurar os serviços.
Fase 3: Restauração dos Dados¶
Agora, precisamos popular os Persistent Disks com os dados dos nossos backups.
-
Crie uma VM de "Trabalho" Temporária: Provisione uma pequena VM no GCE (Google Compute Engine) dentro da mesma VPC que o cluster GKE. Esta VM servirá como uma ponte para mover os dados.
-
Anexe os Discos e Formate-os: Anexe os Persistent Disks criados pelo Terraform a esta VM de trabalho. Formate-os com um sistema de arquivos (ex:
ext4). -
Baixe e Descriptografe os Backups: Na VM de trabalho (que também precisa ter o
rcloneinstalado e configurado), use orclonepara baixar os dados do GCS para os discos montados. -
Desanexe os Discos: Após a conclusão da sincronização, desanexe os Persistent Disks da VM de trabalho. Os dados agora estão prontos para serem usados pelo GKE.
Fase 4: Deploy dos Serviços no GKE¶
Com a infraestrutura e os dados no lugar, é hora de subir os serviços.
-
Converta Docker Compose para Manifestos Kubernetes: Para cada uma das suas stacks (produtividade, automação, etc.), você precisará de um conjunto de manifestos Kubernetes (
.yaml) que definem os Deployments, Services, PersistentVolumeClaims e Ingresses.- PersistentVolumeClaim (PVC): Declara a necessidade de armazenamento e se conecta a um dos Persistent Disks que restauramos.
- Deployment: Define o container a ser executado, similar ao
serviceno Docker Compose. Ele montará o PVC para ter acesso aos dados. - Service: Expõe o Deployment dentro do cluster.
- Ingress: Expõe o Service para o mundo exterior, gerenciado por um Ingress Controller (como o Traefik, que também pode ser instalado no GKE).
Você pode usar uma ferramenta como o Kompose para uma conversão inicial, mas provavelmente precisará de ajustes manuais:
-
Aplique os Manifestos ao Cluster GKE: Autentique seu
kubectlno novo cluster GKE:Em seguida, para cada serviço, aplique seus manifestos:
-
Instale o Traefik como Ingress Controller: Siga a documentação oficial do Traefik para instalá-lo no GKE usando Helm. Configure-o para usar o Let's Encrypt para certificados SSL, assim como no ambiente local.
Fase 5: Finalização e Validação¶
-
Atualize o DNS no Cloudflare: O GKE provisionará um Load Balancer externo com um endereço IP público para o Traefik. Pegue este IP e atualize os registros DNS no Cloudflare para que seus subdomínios (ex:
nextcloud.seudominio.com) apontem para este novo IP. -
Teste Todos os Serviços: Acesse cada um dos seus serviços e verifique se eles estão funcionando como esperado e se todos os dados foram restaurados corretamente.
Este processo transforma um evento catastrófico em um procedimento de recuperação gerenciável e previsível. Embora complexo, ele é a prova final da resiliência da sua arquitetura, garantindo que sua infraestrutura digital possa sobreviver até mesmo à perda completa do seu hardware físico.