Vorige week hebben we versie 0.1.0 van DREBS, ons script voor herstel van elastische blokopslag, uitgebracht. We gebruiken het elk uur op al onze 3 EC2-instanties, waarbij we back-ups maken van 6 verschillende EBS-volumes. Dit script is cruciaal voor ons en de AWS-gemeenschap in het algemeen, omdat Amazon geen officiële ondersteuning biedt voor dergelijke scripts of tools voor back-ups. Er zijn verschillende SaaS-producten die deze functionaliteit bieden, maar open-source scripts voor hackers zoals ons zijn schaars. De nieuw geschreven versie is productieklaar en we hopen dat jullie het evenveel genieten als wij.
Vorig jaar bracht voormalig dojo4-medewerker en eeuwige vriend van de dojo Garett Shulman de eerste versie van DREBS uit. Het had het eenvoudige doel om een beheerder in staat te stellen om back-upstrategieën en pre/post-back-uptaken (mysqldump, enz.) te definiëren voor elk EBS-volume dat is gekoppeld aan een EC2-instantie. Een eenvoudige cron-taak voert DREBS elk uur uit, die elke back-upstrategie van de EBS-instantie doorloopt en als de strategie aangeeft dat een back-up moet plaatsvinden, gebruikt DREBS de right_aws gem om het volume te back-uppen en te uploaden naar het AWS-account als een EBS-snapshot.
De nieuwe versie van DREBS biedt dezelfde functionaliteit, maar met enkele verbeteringen:
- Status wordt nu opgeslagen in een kleine sqlite-database in plaats van een json-bestand.
- Robuust als strategieën veranderen.
- Robuust als snapshots worden verwijderd in de AWS-console.
- Een DREBS-shell die je in staat stelt om je configuratie eenvoudig en snel te testen.
Als voorbeeld van een installatie, hier is DREBS in onze crontab op al onze machines:
0 * * * * /home/dojo4/git/drebs/bin/drebs execute /usr/local/var/drebs_config.yml &> /usr/local/var/drebs_cron.out
en hier is ons configuratiebestand voor een van onze EC2-instanties:
---
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
Zoals altijd, hebben we meer ideeën om dit script te verbeteren en als dit script je net zoveel helpt als ons, nodigen we je uit om de repo te forken en ons een pull request te sturen:
- Verbeter testdekking
- Gebruik whenever gem voor eenvoudigere crontab-installatie
- Willekeurige uitvoeringsintervallen (snapshots elke 5 minuten in plaats van elk uur)
- AWS API-sleutels en andere configuratiewaarden van AWS Instance Data
- Voeg voorbeeldconfiguratie voor AWS-gebruikerstoegang toe
We denken dat DREBS een geweldige bijdrage is aan de AWS-gemeenschap die ons heeft geholpen om een geweldige implementatiearchitectuur te bouwen die geweldige websites en producten heeft gehost in de loop der jaren. Als je het eens bent en het gebruikt, zouden we graag je feedback horen op Twitter op @dojo4!