Usando tar e rsync para alta disponibilidade

13

Tenho servidores em nuvem Ubuntu em execução, aos quais não tenho acesso direto, mas com ssh. Estou usando 'tar' para clonar ou ter alta disponibilidade deste servidor. Eu segui o tutorial no link [link text] [1]. Eu tentei isso instalando um novo servidor da mesma versão. Quando extraí o tar (tar -xvpzf ~ / clone.tgz -C /) no destino (novo), no final, ele termina com a seguinte saída semelhante à 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
  • Existem precauções antes de usar o alcatrão? (o tar é uma criação única a partir de então eu vou estar usando rsync)
  • Devo incluir mais algum diretório como bin ou lib? - sugere-me
  • Devo excluir qualquer diretório? Como se eu tivesse um problema no dispositivo de rede (eth0) (falha ao iniciar o eth0). Portanto, no comando acima, excluí "/ etc / udev /" e, depois disso, senti que estava tudo bem. Assim, existe alguma coisa que devo excluir de / etc / ou de qualquer diretório que incluí? - sugere-me.
  • Como eu poderia agendar o 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 agendado para ser executado como usuário root, mas o ssh solicitará a senha. Para sua informação, o sudo está completamente desabilitado e o login ssh direto no root também está desabilitado.

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

[1]: http://ubuntuforums.org/showthread.php ? t = 525660

user3215
fonte

Respostas:

9

Eu recomendaria que você usasse o rsync, pois isso permitirá que você faça um sistema ativo para sincronizar o sistema sem precisar de arquivos temporários. Ele também oferece 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á garantir que / etc / fstab e /boot/grub/grub.cfg sejam atualizados com os UUIDs das partições dos sistemas clones.

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

João Pinto
fonte
sim, bem lembrado, acho que vou ter que excluir '/ etc / fstab' e '/boot/gru/grub.cfg'. Isso é bom?. Por favor, coloque os comandos para a sincronização incremental rsync dos diretórios especificados.
user3215
O ofcourse /boot/grub/grub.cfg não está incluído
user3215
Como atualizo os UUIDs do sistema clone.
user3215
Você precisará substituir os UUIDs das partições originais na configuração fstab e grub pelos UUIDs das partições do sistema clone. Você pode listar os IDs das partições com: blkid.
João Pinto
Você quer dizer que os UUIDs devem ser os mesmos nos dois sistemas.
user3215
6

Primeiro, muitos dos provedores de nuvem IaaS oferecem recursos avançados de captura instantânea que resolvem isso facilmente.

No EC2, se você executar um sistema baseado no EBS, poderá capturá-lo periodicamente. Se algo terrível acontecer com a 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 anexado e usar algo como tar + s3 sem afetar negativamente a caixa de produção.

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

  1. Você está se trancando em uma única tecnologia. Se você conseguir isso trabalhando no Ubuntu 10.10 e quiser ir para o 11.04, precisará atualizar o sistema de origem e capturá-lo novamente. Da mesma forma, se você usar os snapshots do EC2 do EC2, precisará de uma nova solução se for para a nuvem do rackspace.
  2. Você não tem histórico de alterações se usar o rsync. Se você modificar algo no sistema 1, algo ocorrerá, provavelmente você também interromperá o sistema de backup ao sincronizar novamente.
  3. O Rsync pode ter um impacto extremamente alto no seu sistema de produção.

O que você realmente deseja é um sistema de gerenciamento de configurações e alta disponibilidade de dados.

Eu recomendo que você escolha um sistema de gerenciamento de configuração, como fantoche (no principal!), Chef ou cfengine. Comece a fazer toda a sua configuração no sistema de gerenciamento de configurações e, em seguida, você pode simplesmente inicializar um sistema genérico e aplicar o gerenciamento de configurações a ele. Adicione 'etckeeper' e você terá histórico.

Para alta disponibilidade de dados, o rsync deve funcionar e ser muito mais direto, pois você pode simplesmente copiar os dados que deseja. Também há drbd para ter o que equivale a um "RAID1 de rede". Isso não substitui os backups de dados, que devem incluir instantâneos históricos (seja através 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 sincronizados na caixa de recuperação, excluindo tudo ali também?)

SpamapS
fonte
2

As mensagens provavelmente são causadas porque o novo relógio do servidor está atrasado em relação ao anterior.

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 no 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 serão. É muito provável que algo ocorra na próxima instalação ou atualização.

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

Javier Rivera
fonte
Não. / Var não está excluído. No comando acima, após "--exclude /etc/resolv.conf", tudo está incluído em /etc/..../var / mnt. Na verdade, eu especifiquei dois espaços entre resolv.conf e / etc. Aqui não está aparecendo.
user3215
desculpe esqueci a parte do link
user3215 10/10
Ok, então eu deveria incluir bin, sbin e lib, tudo bem aqui. Oh .. Eu tenho que excluí-los e instalar todos os pacotes.
user3215
é realmente necessário excluir /etc/dpkg.info / etc / apt / var / lib / apt e / var / lib / dpkg ..?
user3215
Resposta atualizada.
Javier Rivera