Outils pour utilisateurs

Outils du site


admin:services:backup

< retour à la page de l'administration technique

L'ancienne page sur les backups est disponible ici : admin:services:backup-archive20190823

En cours de rédaction et mise en place.
PoC : herve & toadjaune

Backup en cours de mise en place.
Machines concernées : toutes
Priorité donnée à dodecagon

Motivation

FedeRez est une asso étudiante, dans laquelle, comme pour la plupart des assos de réseau étudiantes (si ce n'est plus), les ressources humaines peuvent fluctuer considérablement au cours du temps, parfois avec pas ou peu de passations de savoir.

Les infrastructures et services que nous mettons en place doivent donc chercher à être aussi robustes que possible.

Mais pas robustes au sens haute disponibilité, failover, etc ; plutôt au sens de disaster recovery.

Ce qu'on veut, ce n'est pas une infra qui ne tombe jamais, c'est une infra qu'on a les capacités de réparer quand elle tombe.

Ça implique plusieurs choses :

* KISS
* Bonne documentation
* Backups solides

Le choix de Borg + ansible me semble un bon compromis à ce niveau : pas de spof, pas de système compliqué de clustering, une seule techno assez simple d'utilisation partout, versatilité importante (se balader dans un backup en fuse, etc…)

Aucune objection à en plus mettre d'autres types de backups tels que des snapshots de vm, c'est incontestablement plus simple d'utilisation dans les cas où c'est applicable, etc. Mais c'est plus limité en scope (proxmox vs hosting chez un tiers) et en résilience (c'est plus la même version de xxxx du coup le snapshot est plus compatible, ah mais on peut pas la restaurer là parce que pas la bonne conf réseau, etc)

Fonctionnement de la solution

BorgBackup (ou Borg) sert à effectuer la sauvegarde proprement dite vers les serveurs de destination. Il gère un historique des versions des sauvegardes ainsi que la déduplication et la compression des données. Son installation et sa configuration sont gérés via ansible.

Backupninja sert pour les sauvegardes automatisées locales (/var/backups) :

  • des informations systèmes utiles (dpkg-selections, fstab, lvm…)
  • des dumps des bases de données MySQL

Backupninja est installé et configuré manuellement là où il est utilisé.

Serveurs de sauvegarde

Actuellement, 2 serveurs sont destination des sauvegardes réalisées par Borg :


Opérations courantes

La doc concernant la mise en place initiale se situe plus bas.

Faire une sauvegarde

Cette opération n'est normalement pas requise, un cron s'en charge.
On peut néanmoins lancer manuellement un backup en exécutant le script `/etc/borg/system.sh` sur le système que l'on veut sauvegarder.

Mettre à jour la liste des chemins à sauvegarder

La configuration a lieu dans le repo ansible.

La plupart des hôtes utilisent la configuration commune, définie dans inventory/group_vars/all/vars.yml, mais il est possible de surcharger cette configuration par hôte ou par machine dans inventory/group_vars ou dans inventory/host_vars.

Redéployer le playbook après changement.

Manipuler les backups (listing, restauration, etc)

TODO

Les commandes suivantes peuvent indifféremment être effectuées sur :

* La machine dont on cherche à manipuler les backups
* Un des serveurs de backup

Commencer par configurer les variables d'environnement suivantes :

export BORG_RSH="ssh -i /root/.ssh/id_ed25519-backup"
export BORG_PASSPHRASE="COMMON_SECRET_TO_REPLACE" # Présent dans le repo ansible ou dans /etc/borg/system.sh sur les systèmes backupés
export REPOSITORY="borgbackup@memoragon.federez.net:system" # Remplacer memoragon si vous voulez accéder aux backups stockés sur coronagon

Il est notamment possible de :

* lister les backups
* Faire une archive tar à partir d'un backup
* Monter l'archive localement via fuse et lire son contenu avec n'importe quel outil

Se référer à la documentation de borg pour les syntaxes exactes.

Installation initiale de backupninja

Backupninja sert à créer des backups des informations système ainsi que de la base de donnée MySQL automatiquement.

Pour info, les backups créés par backupninja sont stockés dans /var/backups. Ce dossier est inclus dans la sauvegarde d'obnam ce qui permet d'externaliser les backups effectués par backupninja.

apt-get install hwinfo debconf-utils backupninja

Désactiver l'envoi de mails en cas de succès : dans /etc/backupninja.conf mettre/changer reportsuccess = no.

Activer les backups des infos systèmes (:!: mettre lvm = no pour les systèmes sans LVM comme quigon)

Ajouter le fichier /etc/backup.d/10.sys

Activer les backups pour la base de donnée MySQL (:!: uniquement sur hexagon)

Ajouter le fichier /etc/backup.d/20.mysql

Tester avec

sudo backupninja -t -n

Mise en place initiale de BorgBackup (ou Borg)

Aucune mise en place initiale n'est requise.

Le rôle ansible déployant la configuration est capable d'installer intégralement un serveur de backup, seul un accès ssh est requis.

admin/services/backup.txt · Dernière modification: 2020/05/11 01:01 de toadjaune