@drawoharaj'aime ❤️ cela! << cliquez-moi 🐛 🫖 🧚
/aws-ebs-backups-we-rewrote-drebs
publié le: 2014-06-23

L'autre jour, nous avons publié la version 0.1.0 de DREBS, notre script de Récupération après Sinistre pour Elastic Block Storage. Nous l'utilisons toutes les heures sur nos 3 instances EC2, sauvegardant 6 volumes EBS différents. Ce script est crucial pour nous et pour la communauté AWS en général car Amazon ne supporte officiellement aucun script ou outil de sauvegarde. Il existe plusieurs produits SaaS qui offrent cette fonctionnalité, mais les scripts open source pour les hackers comme nous sont rares. La nouvelle version réécrite est prête pour la production et nous espérons que vous l'apprécierez autant que nous.

L'année dernière, l'ancien employé de dojo4 et ami éternel du dojo Garett Shulman a publié la première version de DREBS. Il avait pour objectif simple de permettre à un administrateur de définir des stratégies de sauvegarde et des tâches pré/post-sauvegarde (mysqldump, etc.) pour chaque volume EBS monté sur une instance EC2. Une simple tâche cron exécute DREBS toutes les heures, qui passe en revue chaque stratégie de sauvegarde d'instance EBS et, si la stratégie indique qu'une sauvegarde doit être effectuée, DREBS utilise le gem right_aws pour sauvegarder le volume et le télécharger sur le compte AWS en tant qu'instantané EBS.

La nouvelle version de DREBS offre la même fonctionnalité mais avec quelques améliorations :

Voici un exemple de configuration de DREBS dans notre crontab sur toutes nos machines :

0 * * * * /home/dojo4/git/drebs/bin/drebs execute /usr/local/var/drebs_config.yml &> /usr/local/var/drebs_cron.out

et voici notre fichier de configuration pour l'une de nos instances EC2 :

---
aws_access_key_id: XXXX
aws_secret_access_key: XXX
region: us-west-1
strategies:
- hours_between: 6
  num_to_keep: 12
  mount_point: /dev/sdh
  pre_snapshot_tasks:
  - pg_dump -U postgres -f /ebs/databases/postgresql/backups/project_name_production.sql project_name_production
  post_snapshot_tasks:
- hours_between: 1
  num_to_keep: 2
  mount_point: /dev/sda1
  pre_snapshot_tasks:
  post_snapshot_tasks:
- hours_between: 24
  num_to_keep: 4
  mount_point: /dev/sda1
- hours_between: 96
  num_to_keep: 4
  mount_point: /dev/sda1
log_path: /usr/local/var/drebs.log
email_on_exception: miles@dojo4.com
email_host: smtp.gmail.com
email_port: 587
email_domain: gmail.com
email_user: xxx
email_password: xxx

Comme toujours, nous avons d'autres idées pour améliorer ce script et si ce script vous aide autant qu'il nous aide, nous vous invitons à forker le dépôt et à nous envoyer une pull request :

Nous pensons que DREBS est une grande contribution à la communauté AWS qui nous a aidés à construire une grande architecture de déploiement qui a hébergé des sites web et des produits incroyables au fil des ans. Si vous êtes d'accord et que vous l'utilisez, nous aimerions entendre vos commentaires sur Twitter à @dojo4 !