Arquitetura do Sistema de Backup
Esta página visa documentar a arquitetura, componentes, interface e fluxo de dados do *servidor de backup*, de forma a garantir que o sistema atenda os requerimentos especificados. Tal documentação atua como um guia para os desenvolvedores, testers e stakeholder durante todo o ciclo de vida do sistema. É importante destacar que certos termos foram mantidos em inglês devido a dificuldade de achar uma tradução adequada, bem como a maior facilidade de busca por tais conceitos utilizando-se de seus nomes em inglês.
Visão geral e Objetivo
O laboratório, onde o EAPn se hospeda, abriga um servidor de backup, responsável por garantir a integridade dos dados do servidor de produção. Sua janela de execução ocorre todos os dias às 08:00 da manhã, via script.
Topologia e Arquitetura
Fluxo de Dados
O fluxo de dados segue 3 etapas: Servidor de Produção -> Dev2 -> Servidor de Backup (fazer um diagrama depois)
(ver como citar o NFS)
- O servidor de produção faz a extração de seus banco de dados, compacta os arquivos em LZMA e os envia para o servidor intermediário.
- O servidor dev2 atua como zona de transferência, recebendo os arquivos e armazenando temporariamente num diretório compartilhado. Arquitetado dessa forma, o processo de leitura dos backup's não consome poder de processamento do servidor de produção.
- Todo dia, às 8h da manhã, o servidor de backup liga sozinho, conecta-se ao dev2, via mapeamento de rede, utilizando-se do protocolo NFS(/nfs/backup), extraindo os dados para si. Os arquivos são gravados no sistema ZFS, espelhando os dados em 3 discos simultaneamente e protegendo contra bit-roting.
Camadas de Rede e Protocolos
Transporte Local: Montagem de diretório via rede usando NFS + AutoFS(montagem sob demanda)
Sincronização: Rsync da parte do servidor de backup(?)
Gerenciamento: Acesso remoto via SSH
Armazenamento
Tecnologia: ZFS (Zettabyte File System)
Nome da pool: "dados"
Topologia: Espelhamento triplo (mirror-0). O ZFS grava o mesmo arquivo simultaneamente em 3 HD's. Se um ou dois discos queimarem, os dados permanecem intactos.
Lógica de Automação
Runbook de Manutenção e Troubleshooting
Comandos Úteis ao Administrador
Acesso ao Servidor:
$ ssh eapn@150.162.57.10
Como não há comando fsck(comando no linux para verificar e reparar inconsistências nos arquivos) para o ZFS, precisamos utilizar o scrub. Esse subcomando é um verificador de consistência dinâmica. Ele roda de plano de fundo em um mounted live filesystem.
Sintaxe para conferência da integridade de dados("dados" é o nome da pool do nosso sistema de backups):
$ zpool scrub nome_da_pool
Confira o andamento do comando anterior e a saúde do sistema:
$ zpool status -v nome_da_pool
Conferência do log diário do servidor:
$ tail -n 15 /home/eapn/syncwithdev2.log
Listagem das datas em que o script rodou (É possivel alterar a quantidade de dias ao mudar o número após "-n"):
$ grep "starting script" /home/eapn/syncwithdev2.log | tail -n 10
Conferência de erros:
$ grep -iE "error|failed|denied" /home/eapn/syncwithdev2.log | tail -n 10