web-dev-qa-db-fra.com

Solutions de sauvegarde pour les instances AWS EC2

Je recherche une solution de sauvegarde pour les instances Amazon EC2. J'ai trouvé ceci: http://www.n2ws.com et je voulais savoir s’il en existait d’autres.

Je vous remercie

PS: Il est possible de sauvegarder automatiquement les bases de données RDS en utilisant la solution Amazon, mais il n’ya rien pour les instances EC2 ... Y at-il?

16
Céline Aussourd

J'utilise Skeddly depuis plusieurs mois pour sauvegarder automatiquement les volumes EBS attachés à mes instances EC2. 

Je suis vraiment content avec ça jusqu'à présent. J'ai aimé la façon dont je pouvais définir les instances à sauvegarder: seules les instances avec une balise spécifique sont sauvegardées. Je dois juste ajouter cette balise aux instances que je veux sauvegarder. Pas besoin de faire de changement dans Skeddly chaque fois que j'ajoute une instance. Je devais définir 2 actions dans Skeddly: une pour sauvegarder les instances et une pour supprimer les anciens instantanés.

Et je reçois des courriels pour m'informer que les actions (sauvegarde et expiration) ont été réussies ou non. 

10
Céline Aussourd

Si vous souhaitez une solution 100% AWS pour les sauvegardes automatisées d'instances EC2, il en existe une: AWS lambda.

Créez un lambda basé sur Python avec quelque chose comme ceci:

import boto3

BACKUP_VOLUMES = [
  'vol-xxxxxxxx'
]

def lambda_handler(event, context):
    ec2 = boto3.resource('ec2')
    for volume in BACKUP_VOLUMES:
        ec2.create_snapshot(VolumeId=volume, Description='Automated backup')

Et configurez une source d'événements pour qu'elle s'exécute quotidiennement. De plus, les sauvegardes EC2 automatisées fiables ne nécessitent aucune autre instance pour les gérer et exécuter des travaux, ou un service tiers. Avec l'API SES, vous pouvez également envoyer des confirmations par courrier électronique à partir de ce lambda.

PS: Assurez-vous que le rôle IAM du lambda dispose des droits nécessaires pour opérer sur les instantanés EC2, par exemple:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents",
                "ec2:CreateSnapshot",
                "ec2:DeleteSnapshot",
                "ec2:DescribeSnapshots"
            ],
            "Resource": "*"
        }
    ]
}
7
Pol

Si par "instances EC2" vous entendez vraiment "instances EC2 avec des lecteurs EBS", alors les fonctionnalités d'instantané d'EBS, disponibles via la console AWS et l'API AWS, sont ce que vous recherchez. 

Depuis le Docs EBS :

Amazon EBS offre également la possibilité de créer des instantanés à un point dans le temps des volumes, qui sont persistés à Amazon S3. Ces instantanés peuvent être utilisé comme point de départ pour les nouveaux volumes Amazon EBS et protéger données pour la durabilité à long terme. Le même instantané peut être utilisé pour Instancier autant de volumes que vous le souhaitez. Ces instantanés peuvent être copiés entre régions AWS, ce qui facilite l'exploitation de plusieurs régions AWS pour l'expansion géographique, la migration des centres de données et les catastrophes récupération.

Amazon n'offre aucune stratégie de type planification ou rétention autour des instantanés, mais certains outils tiers exploitent les API AWS. 

6
Chris M.

La société pour laquelle je travaille utilise les systèmes S3, EBS et EC2 d’Amazon depuis leur création. Cela devint douloureusement évident après avoir perdu 2 serveurs virtuels (1 en développement et 1 en production) 4 jours après leur achèvement et leur lancement prévu sur EC2 la nuit suivante. En résumé, nous n'avons pas trouvé d'application autonome très petite, légère et presque configurable dans toutes les situations.

En utilisant AWS .NET SDK, nous avons pu écrire l'application ci-dessus en moins d'une journée, puis utiliser le planificateur de tâches sur notre serveur interne Windows Server 2008 R2. Nous avons examiné plusieurs scénarios et défini le calendrier suivant: des images d'instances EC2 sont créées chaque semaine, des instantanés EBS sont créés quotidiennement. Les instances EC2 de plus de 31 jours sont supprimées et les instantanés EBS après 60 jours, conformément à notre contrat, nous avons conclu un contrat avec un client gravé précédemment avec une application autonome censée exécuter les sauvegardes avec son propre code de planification interne. /mécanisme. Il n'a jamais fonctionné et personne ne l'a regardé après l'avoir installé. Au fur et à mesure que l'application mûrit, nous prévoyons un service de messagerie simple (SES) pour la sauvegarde du résumé/journal de sauvegarde de nos développeurs et un service de mise en attente simple (SQS) pour enregistrer le processus.

J'espère que cela t'aides.

3
Jim

Pour faciliter la gestion avec une interface graphique, il existe également Skeddly . Vous payez au fur et à mesure avec CAD 0.15 pour la plupart des actions . Il est également possible de faire tout cela gratuitement. Un bon script pour commencer est this .

3
Josef

Le produit de gestionnaire de protection cloud que vous avez trouvé (www.n2ws.com) prend en charge les sauvegardes automatisées d’instances EC2 complètes, au-delà de la sauvegarde individuelle de volumes EBS, ainsi que les instantanés RDS. Il contient également les options de planification, de stratégies de conservation des données et d'alertes automatisées que vous recherchiez, ainsi que d'autres fonctionnalités liées à la sauvegarde pour AWS. 

Impossible de trouver d'autres produits tiers offrant des sauvegardes automatisées comparables pour les instances EC2, mais certaines consoles de gestion de cloud permettent la planification d'instantanés et la création de stratégies de conservation des données.

2
OK1

Pour les applications critiques, une solution de sauvegarde ne doit pas se limiter à la planification d'instantanés.

Vous vous attendriez à des fonctionnalités telles que le support aux applications, des stratégies de sauvegarde et de puissantes options de récupération, etc.

Vous pouvez lire à ce sujet dans mon post:

http://www.n2ws.com/blog/tier-1-application-backup-on-Amazon-cloud.html

Il provient du site n2ws et fait également référence au produit CPM.

2
uriwo

Voici le script basé sur AWS Lambda Boto3 qui sauvegarde une instance d'images AMI et qui fonctionne à merveille:

import boto3, collections, datetime, sys

ec = boto3.client('ec2')

def lambda_handler(event, context):

    reservations = ec.describe_instances(        
        Filters=[
        {'Name': 'tag-key', 'Values': ['backup', 'Backup']},
    ]
    ).get(
        'Reservations', []
    )

    instances = sum(
        [
            [i for i in r['Instances']]
            for r in reservations
        ], [])

    print("Found %d instances that need backing up" % len(instances))

    to_tag = {}

    for instance in instances:
        try:
            retention_days = [
                int(t.get('Value')) for t in instance['Tags']
                if t['Key'] == 'retention'][0]
        except IndexError:
            retention_days = 7

        create_time = datetime.datetime.now()
        create_fmt = create_time.strftime('%Y-%m-%d_%H-%M-%S')

        AMIid = ec.create_image(InstanceId=instance['InstanceId'], Name="backup of " + instance['InstanceId'] + " dated " + create_fmt, Description="Lambda-created AMI of instance " + instance['InstanceId'] + " from " + create_fmt, NoReboot=True, DryRun=False)

        to_tag[retention_days] = AMIid['ImageId']

        print("Retaining AMI %s of instance %s for %d days" % (AMIid['ImageId'],
                                                               instance['InstanceId'],
                                                               retention_days)
             )

    print(to_tag.keys())

    for retention_days in to_tag.keys():
        delete_date = datetime.date.today() + datetime.timedelta(days=retention_days)
        delete_fmt = delete_date.strftime('%m-%d-%Y')
        print("Will delete %d AMIs on %s" % (len(to_tag[retention_days]), delete_fmt))

        ec.create_tags(
            Resources=[to_tag[retention_days],],
            Tags=[
                {'Key': 'DeleteOn', 'Value': delete_fmt},
            ]
        )

Il a été pris à partir d'ici et adapté pour Python 3. Recommande fortement!

2
Suncatcher

Sorte de. Vous pouvez capturer des volumes EBS sur un intervalle régulier. Bien qu'il n'y ait rien dans l'interface utilisateur qui le fasse automatiquement pour vous, l'API vous permettra de le faire. Vous pouvez lancer votre propre script de sauvegarde ou en rechercher un qui a été publié publiquement.

1
datasage

Voici le script Script pour automatiser la sauvegarde AMI! Il trouvera l'instance-id de toutes les instances de votre VPC et créera une sauvegarde AMI! 

 #!/bin/bash

 #Script to Automate AMI backup

echo "----------------------------------\n   `date`   \n----------------------------------"

aws ec2 describe-instances --filters Name=vpc-id,Values=vpc-1c927479 |   awk '{ print $8 }' | sort -n   | grep  "i-" > /tmp/instanceid.txt



 #echo "instance-`date +%d%b%y`"-i-29efe0e4 > /tmp/aminame.txt

echo "Starting the Daily AMI creation: "
 #echo -e "Starting the Daily AMI creation: `cat /tmp/aminame.txt`\n"

 #To create AMI of defined instance

for i in $(cat /tmp/instanceid.txt); do
        echo "Creating AMI for Instance id $i ......."

echo "instance-`date +%d%b%y`-$i" > /tmp/aminame.txt

aws ec2 create-image --instance-id $i --name "`cat /tmp/aminame.txt`" --description "This is created by AMI-backup.sh" --no-reboot | grep -ir AMI | awk '{print $4}' > /tmp/amiID.txt

echo  "AMI Name is: `cat /tmp/aminame.txt`\n"

echo done 
done
echo done
1
Ashish Karpe

J'ai oublié quand Cloudwatch a été introduit, mais cela vous permet certainement de planifier des instantanés EBS automatisés .

La réponse de Pol à l'aide d'AWS Lambda est toujours pertinente. Il existe de nombreux blogs sur Planification d'instantanés EBS et Suppression d'anciens instantanés

1
davewasthere

Un moyen simple de sauvegarder toutes vos instances aws ec2 consiste à utiliser noovolari . Il vous permet de planifier des sauvegardes périodiques, dispose d'une fonctionnalité de récupération au niveau du fichier et vous permet de récupérer un instantané précédent d'une manière très simple. Il propose également un niveau gratuit et illimité pour 5 instances ec2, ce qui ne fait pas de mal. 

Cela fait un moment que nous l’utilisons sur plusieurs infrastructures et cela fonctionne parfaitement.

0
Andrea Cavagna

Il existe un projet opensource appelé Scalr que je viens de commencer à utiliser depuis environ une semaine et qui comporte des fonctionnalités qui vous permettent de planifier des instantanés/sauvegardes automatisés de vos volumes EBS. Scalr est en fait une solution de gestion en nuage et dispose de nombreuses fonctionnalités fabuleuses avec lesquelles je n'ai pas encore joué mais je suis impatient de le faire.

Il existe une version payante, mais je ne fais que lancer les pneus sur la version gratuite à code source ouvert pour le moment . Le programme d'installation de Scalr est disponible sur Github: https://github.com/Scalr/installer-ng Le code source de Scalr est également sur Gitub: https://github.com/Scalr/scalr Les instructions d’installation se trouvent sur le wiki de Scalr: https: //scalr-wiki.atlassian. net/wiki/x/0Q8b

0
punkdata

Vous pouvez utiliser AutomatiCloud pour sauvegarder vos volumes EC2 et vos instances RDS. AutomatiCloud vous permet de définir des planifications pour les sauvegardes et de nettoyer après une période de conservation que vous pouvez configurer. Il envoie également des notifications par courrier électronique en cas de succès/d’échec . Et c’est gratuit! www.automaticloud.net

Disclaimer: je suis l'auteur

0
Stephan Buhre