Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui, je vais vous expliquer comment je fonctionne pour mes sauvegardes, que ça soit pour le blog ou chez moi.
Schéma de fonctionnement
Voici ce dont je dispose chez Hetzner :
- Une instance cloud CPX11 pour le blog (Webhost)
- Une instance cloud CX11 pour les emails (MX1)
- Une Storage box BX10 pour les sauvegardes
Voici ce dont je dispose chez un autre provider FR :
- Un vps avec 1To de stockage
Et pour finir, j’ai mon infrastructure à la maison :
- Mon ESX supermicro avec une quinzaine de machines virtuelles
- Mon Microserver HP qui me sert de stockage avec 5-6To de stockage local en ReFS
- Un pool de disque (3 disques WD Red 4to en rotation avec un disque qui est sorti toutes les semaines et que je laisse à mon bureau)
Le Webhost et MX1 font des sauvegardes en utilisant Veeam Agent for Linux (On en parlait ici : https://www.abyssproject.net/2016/07/installation-configuration-de-veeam-agent-for-linux/) via le protocole SMB vers la Storage Box Hetzner.
Ensuite, le contenu de la storage box est récupéré via Rsync sur le vps à Paris.
Sur ce même VPS, j’ai un Nextcloud qui synchronise des fichiers que je veux garder « offline » et qui sont répliqués sur mon stockage ReFS à la maison, ce qui est aussi dupliqué sur le pool de disque qui sera vraiment en stockage à froid.
Le stockage de Paris est accessible uniquement depuis chez moi et le bureau (et absolument pas depuis ailleurs).
Le stockage à la maison est derrière mon firewall et n’est pas allumé la journée. Il démarre automatiquement en heure creuse pour les sauvegardes et s’éteint tout seul (via Ansible / Backup Veeam).
Fonctionnement de Veeam vers la Storage box:
Rien de passionnant sur le fonctionnement de l’agent, c’est déjà vu sur le blog.
Le seul truc spécial, c’est les scripts avant la sauvegarde et après la sauvegarde. Je m’en sers pour faire une sauvegarde manuelle de toutes les bases MySQL et ensuite stopper le service pour faire la sauvegarde.
Dès que la sauvegarde est finie, je relance le service MySQL.
Avant la sauvegarde :
Le script de sauvegarde :
nano /root/_mariabck/_backup.sh
#!/bin/bash #Databases (MariaDB / MySQL) DBBACKUPDIR="/root/_mariabck/" DBUSER="root" DBPASSWORD="xxx" #Go to working dir cd $DBBACKUPDIR #Extract all databases databases=`mysql -u $DBUSER -p$DBPASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` #Backup all databases for db in $databases; do if [[ "$db" != "information_schema" ]] && [[ "$db" != "performance_schema" ]] && [[ "$db" != _* ]] ; then echo "Dumping database: $db" mysqldump -u $DBUSER -p$DBPASSWORD --databases $db > `date +%Y%m%d`.$db.sql fi done
Le script d’arrêt :
nano /root/veeam/mysqlstop.sh
/root/_mariabck/_backup.sh service mysql stop
Après la sauvegarde :
Le script de redémarrage :
nano /root/veeam/mysqlstart.sh
service mysql start rm /root/_mariabck/*.sql
Les sauvegardes à la maison et l’externalisation
À la maison, j’ai mis les sauvegardes sur mon « ancien » MicroServer HP.
J’ai 5.45To de stockage local en ReFS disponible pour les sauvegardes Veeam (reverse incremental de toutes les VMs).
J’ai également 3.63To de stockage ReFS sur un boitier Raidon pour faire des rotations de disques facilement (2x4To en raid 1 avec le deuxième disque qui tourne chaque semaine).
Petite spécificité, en plus du chiffrement Veeam, j’ai également un chiffrement complet du disque en cascade via Veracrypt.
Je fais également un robocopy de tout ce que je récupère depuis le cloud sur Hetzner et Paris 🙂
Mot de la fin
En récap, voici ce qui est fait :
- Machines chez Hetzner : Sauvegarde -> StorageBox -> Serveur Paris -> ReFS + Disque hors-ligne
- Serveur Paris : Sauvegarde -> ReFS + Disque hors-ligne
- Machines virtuelles : Sauvegarde -> ReFS + Disque hors-ligne
- Mes mails qui sont sur mes machines virtuelles chez moi repartent aussi vers le serveur à Paris 🙂