Sauvegarde et restauration des VPS OpenVZ

réf : http://wiki.openvz.org/Backup_of_a_running_VE_with_vzdump

Pour faire des sauvegardes des VPS à chaud, on utilise vzdump.
Il faut au préalable le télécharger ainsi que ses dépendances (exim4 et cstream) et l'installer :

wget http://www.proxmox.com/cms_proxmox/cms/upload/vzdump/vzdump_1.1-2_all.deb
apt-get install exim4 cstream
dpkg -i vzdump_1.1-2_all.deb

Pour faire des snapshots, il faudra aussi rsync :
apt-get install rsync

Puis on sauvegarde tout via la méthode suspend :
vzdump --suspend --all
Les VPS sont sauvés dans /vz/dump/ sous la forme de tarball.
La restauration se fait sous la forme d'une commande vzdump en désignant le nom du fichier tar et le nouvel identifiant du VPS quand il sera détaré.

exemple : restauration du dump du VPS 777 sous le nouveau VPS 600
vzdump --restore /vz/dump/vzdump-777.tar 600

On crée un simple script de sauvegarde :
cd /root
nano dump_all_vps.sh

/usr/sbin/vzdump --suspend --all

chmod a+x dump_all_vps.sh

Et on le programme dans le cron :
crontab -e
# m h dom mon dow command
00 00 * * * /root/dump_all_vps.sh > /root/dump_all_vps.log

/etc/init.d/cron restart

Sauvegarde sur un hôte distant

On ajoute (sur le serveur local) un compte qui servira à l'hôte de sauvegarde distant pour se connecter sur mon serveur local :
adduser sauvevps
Et on crée rapidement en tant que sauvevps les répertoires et fichiers nécessaires :
mkdir .ssh
chmod 700 .ssh
cd .ssh
touch authorized_keys
chmod 600 authorized_keys

Sur l'hôte  de sauvegarde distant, on crée un clé publique et on la copie sur notre serveur :
serveur_de_sauvegarde# ssh-keygen -d
serveur_de_sauvegarde# scp .ssh/id_dsa.pub sauvevps@monserveurlocal:./.ssh/

Puis de nouveau en tant que sauvevps sur le serveur local, on ajoute la clé transférée dans les authorized keys :
cd .ssh
cat id_dsa.pub >> authorized_keys
rm id_dsa.pub
A partir de maintenant, le serveur de sauvegarde peut se connecter sur notre serveur local avec le compte sauvevps sans utiliser de mot de passe.

On se place sur le serveur de sauvegarde et on prépare le script et l'espace d'accueil des sauvegardes :
mkdir /home/sauveVPS
mkdir /home/sauveVPS/monserveurlocal
cd /home/sauveVPS
nano sauvevps.sh

on écrit quelque chose comme ceci (une ligne par serveur OpenVZ) :
# Sauvegarde des VPS de : aligot
/usr/bin/rsync -avz sauvevps@aligot.iut.rdz:/vz/dump/* /home/sauveVPS/aligot/

et on ajoute ceci dans le cron :
crontab -e
# m h  dom mon dow   command
30 00 * * * /home/sauveVPS/sauvevps.sh

/etc/init.d/cron restart

Restauration d'un VPS sauvé sur le serveur de sauvegarde

Si le serveur OpenVZ ou juste un des VPS vient à crasher, il suffit d'aller sur le serveur de sauvegarde et de passer un :
vzdump --restore /home/sauveVPS/nomduserveurOpenVZ/vzdump-xxx.tar 600

Ceci restaure le serveur vzdump dans l'environnement OpenVZ du serveur de sauvegarde sous l'ID 600.
Comments