Usando tar e rsync para alta disponibilidade

13

Tenho servidores em nuvem do Ubuntu em execução, aos quais não tenho acesso direto, mas com o ssh. Estou usando 'tar' para clonar ou ter alta disponibilidade deste servidor. Eu segui o tutorial do link [link text] [1]. Eu tentei isso instalando um novo servidor da mesma versão. Quando eu extraí o tar (tar -xvpzf ~ / clone.tgz C /) no destino (new), no final ele está terminando com o seguinte resultado similar ao abaixo (não sei se é erro).

tar: var/run: time stamp 2010-11-09 17:09:11 is 7335.159880406 s in the future
tar: var/spool/postfix/usr/lib/zoneinfo: time stamp 2010-11-09 17:08:26 is 7290.159730037 s in the future
tar: var/lib: time stamp 2010-11-09 17:27:51 is 8455.159349527 s in the future
tar: usr/bin: time stamp 2010-11-09 17:28:02 is 8466.159254097 s in the future
tar: usr/share/sgml: time stamp 2010-11-09 17:27:47 is 8451.158909506 s in the future
tar: usr/share/man/man7: time stamp 2010-11-09 17:27:50 is 8454.158393583 s in the future
tar: usr/share/man/man1: time stamp 2010-11-09 17:28:02 is 8466.158166556 s in the future
tar: usr/share/man/man8: time stamp 2010-11-09 17:27:51 is 8455.158057701 s in the  future
tar: usr/share/omf/time-admin: time stamp 2010-11-09 17:27:52 is 8456.157830449 s in the future
---------------------------------------------
---------------------------------------------
---------------------------------------------

Estou usando o seguinte comando para criar um arquivo tar dos diretórios especificados no sistema de origem.

tar -cvzf ~/clone.tgz --exclude ~/clone.tgz --exclude /etc/hosts --exclude /etc/hostname --exclude /etc/udev/ --exclude /etc/network/interfaces --exclude /etc/resolv.conf  /etc /home /opt /tmp /usr /var /mnt
  • Há alguma precaução antes de usar o tar? (o tar é uma vez que a partir de então eu estarei usando o rsync)
  • Devo incluir mais algum diretório como bin ou lib? - sugira-me
  • Devo excluir algum diretório? Como se eu tivesse um problema de dispositivo de rede (eth0) (falha ao iniciar o eth0). Então, no comando acima eu excluí "/ etc / udev /" e depois disso eu senti que estava tudo bem. Assim, há alguma coisa que eu tenha que excluir de / etc / ou de qualquer diretório que eu tenha incluído? - me sugira.
  • Como eu poderia agendar rsync (incremental bkp) com a combinação ssh para sincronizar os diretórios (especificados no tar) para o local remoto (digamos / mnt / newdir) que eu poderia tar e extraí-lo posteriormente em caso de falha do sistema. O rsync pode ser programado para ser executado como usuário root, mas o ssh solicitará a senha. FYI, o sudo é completamente desativado e, assim como o login direto do ssh para root também é desativado.

Se houver uma maneira melhor, sem qualquer dano ao servidor para conseguir isso, pode sugerir.

[1]: link ? t = 525660

    
por user3215 10.11.2010 / 13:02

3 respostas

9

Eu recomendo que você use o rsync, ele permitirá que você faça um sistema ao vivo para a sincronização real do sistema sem a necessidade de arquivos temporários. Ele também fornece o benefício de fazer atualizações incrementais quando você precisar atualizar o clone.

Eu excluiria apenas: / proc / / sys / dev / tmp / mnt No sistema clone, você precisará certificar-se de que o / etc / fstab e /boot/grub/grub.cfg estejam atualizados com os UUIDs das partições dos sistemas clones.

Se você tiver um banco de dados como o mysql, precisará ter cuidado e parar o banco de dados antes de executar a cópia.

    
por João Pinto 10.11.2010 / 17:14
6

Primeiramente, muitos dos provedores de nuvem IaaS oferecem poderosos recursos de instantâneos que resolvem isso com bastante facilidade.

No EC2, se você executar um sistema baseado em EBS, poderá apenas instantaneamente fazer um instantâneo. Se algo de terrível acontecer à instância de origem, você poderá reverter para o instantâneo anterior em uma nova instância. Se você deseja arquivar um instantâneo, pode inicializar outra instância com ele anexada e usar algo como tar + s3 sem afetar negativamente a caixa de produção.

Existem vários problemas com essa abordagem que podem não estar aparentes no momento.

  1. Você está se trancando em uma única tecnologia. Se você fizer isso trabalhando no Ubuntu 10.10, e quiser ir para o 11.04, terá que atualizar o sistema de origem e, em seguida, fazer um instantâneo novamente. Da mesma forma, se você usar os instantâneos do EBS do EC2, precisará de uma nova solução se for para a nuvem de rackspace.
  2. Você não tem histórico de alterações se usar o rsync. Se você modificar alguma coisa no sistema 1, então algo quebra, é provável que você também quebre seu sistema de backup quando fizer o rsync.
  3. O rsync pode ter um impacto extremamente alto no seu sistema de produção.

O que você realmente quer é um sistema de gerenciamento de configuração e alta disponibilidade de dados.

Eu recomendo que você escolha um sistema de gerenciamento de configuração, como fantoche (em main!), chef ou cfengine. Comece a fazer toda a sua configuração no sistema de gerenciamento de configuração e, em seguida, basta inicializar um sistema genérico e aplicar o gerenciamento de configuração a ele. Adicionar em 'etckeeper' e você tem histórico.

Para alta disponibilidade de dados, o rsync deve funcionar e ser muito mais direto, já que você pode copiar os dados desejados. Há também drbd para ter o que equivale a uma "rede RAID1". Não são substitutos para backups de dados, que devem incluir instantâneos históricos (seja por meio de instantâneos de dispositivo de bloco ou algo parecido com tar) em vez de sincronizar com um host de recuperação (e se alguém excluir todos os dados que são rsynced na caixa de recuperação, excluindo tudo lá também?)

    
por SpamapS 26.11.2010 / 08:10
2

As mensagens provavelmente são causadas porque o novo relógio do servidor está atrasado no tempo do que o mais antigo.

Se você estiver clonando a configuração e o banco de dados do gerenciador de pacotes (e estiver), deverá clonar / bin, / sbin e / lib ou o sistema de destino estará em um status inconsistente. Outra abordagem será excluir /etc/dpkg.info / etc / apt / var / lib / apt e / var / lib / dpkg e reinstalar todos os pacotes no sistema de destino.

Os arquivos em / var / dpkg e / var / apt contêm informações sobre o que está instalado em seu sistema. Se você não os excluir, o gerenciador de pacotes acreditará que todos os programas e dependências no sistema pai estão instalados no destino. Mas se você não copiou / bin, / sbin, etc ... eles não vão. É muito provável que algo seja quebrado na próxima instalação ou atualização.

Para manter a sincronização com o rsync, sempre usei autenticação baseada em certificados, não em senhas. É muito fácil de configurar, lembro que fiz apenas lendo a página man na primeira vez. Aqui está um rápido guia , se você quiser mais informações, acredito que isso merece uma nova pergunta.

    
por Javier Rivera 10.11.2010 / 13:20

Tags