Comment planifier des instantanés automatiques (quotidiens) de l'instance Windows AWS EC2?


12

J'ai des serveurs Windows hébergés sur Amazon EC2. Certains exécutent Windows Server 2003 et d'autres exécutent Windows Server 2008. Ce sont des instances soutenues par EBS. La plupart des instances disposent également de volumes EBS supplémentaires.

Nous voulons planifier un instantané quotidien des machines Windows (et également des volumes EBS attachés) vers S3 afin d'avoir des sauvegardes quotidiennes disponibles.

On pourrait penser qu'il s'agit d'une exigence très courante qui serait mise à disposition via l'AWS Management Console, mais hélas, ce n'est pas le cas. Quelles approches sont disponibles? Comment planifier des instantanés quotidiens sur nos serveurs Windows?

Il existe plusieurs exemples de scripts disponibles en ligne pour Linux, mais pas tant pour Windows. J'ai jeté un œil à http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html ainsi qu'à https://github.com/ronmichael/aws-snapshot- planificateur . Quelqu'un a-t-il utilisé l'une de ces approches et cela fonctionne-t-il?

J'ai également envisagé un service comme Skeddly qui semble bon marché à première vue, mais lorsque vous envisagez de l'utiliser pour plusieurs serveurs, le prix grimpe rapidement à un point tel qu'il semble être une meilleure option pour créer votre propre solution car vous pouvez ensuite l'appliquer à de nouveaux serveurs à l'avenir. Avec Skeddly, nous paierons pour chaque serveur.

Comment planifier des instantanés quotidiens de nos instances Windows?

Réponses:


9

Amazon Web Services a récemment annoncé des outils de ligne de commande PowerShell pour Windows et il est fourni avec leur kit AWS Tools for .NET SDK .

Les outils AWS Powershell facilitent la création d'un instantané:

New-EC2Snapshot "vol-371acd04" -Description "My Snapshot"

Et vous pouvez interroger vos instantanés comme ceci:

PS C:\Program Files (x86)\AWS Tools\PowerShell> Get-EC2Snapshot | more


SnapshotId  : snap-18be2b28
VolumeId    : vol-371acd04
Status      : completed
StartTime   : 2012-12-28T08:17:00.000Z
Progress    : 100%
OwnerId     : 383816850479
VolumeSize  : 30
Description : My Snapshot
OwnerAlias  :
Tag         : {}

Assurez-vous que les outils AWS Powershell sont installés et créez simplement une tâche planifiée qui utilise un script PowerShell similaire à l'extrait ci-dessus pour planifier vos instantanés et vous devriez être bon.

Mis à jour pour interroger les volumes EBS attachés:

Pour interroger les volumes EBS attachés à votre instance, puis prendre un instantané de chacun d'eux, vous pouvez faire quelque chose comme ceci:

# Find my instance ID from the EC2 metadata
$myInstanceID = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")

# Query for volumes that are attached to my Instance Id
$volumes = (Get-EC2Volume).Attachment | where {$_.InstanceId -eq $myInstanceID } | Select VolumeId

# Iterate through these volumes and snapshot each of them
foreach ($volume in $volumes)
{
    New-EC2Snapshot $volume.VolumeId -Description "My Snapshot"
}

Merci beaucoup. Cela semble être ce que je recherche. Veuillez simplement clarifier: il semble que la commande New-EC2Snapshot ne prendra qu'un instantané d'un volume spécifique. Dans mon cas, j'ai l'instance et il y a aussi des volumes EBS attachés. Comment puis-je prendre un instantané complet de l'instance entière, y compris le périphérique racine et les volumes EBS attachés?
Stanley

@Stanley mis à jour pour interroger les volumes EBS attachés à votre instance et créer un instantané chacun
Ameer Deen

Je vois Merci. Cela signifie qu'il y aura des instantanés distincts pour chaque volume. Je veux juste comprendre l'implication de ceci: en cas d'échec, comment puis-je afficher une instance de remplacement? Les instantanés du volume racine EBS et des volumes EBS montés individuels seront tous séparés. Comment puis-je afficher une instance de remplacement avec les lecteurs montés à partir des différents instantanés?
Stanley

Pourquoi ne pouvez-vous pas configurer cela via le tableau de bord EC2? Pour les gens qui ne sont pas trop confiants avec les scripts?
leen3o

5

Mise à jour 2018 À la fin de 2018, il existe deux façons supplémentaires d'automatiser les instantanés EBS. J'utilise toujours la méthode originale des événements CloudWatch car cela a bien fonctionné pendant des années et je ne vois aucun intérêt à changer.

Ops Automator (OA)

Ops Automator est un ensemble très flexible de scripts lambda fournis par AWS. Il est déployé avec un modèle CloudWatch qui se trouve sur la page ci-dessus.

Ses étapes de configuration sont

  1. Le modèle AWS CloudFormation lance la structure principale, qui comprend une suite de microservices (fonctions AWS Lambda) qui gèrent les événements de déclenchement, la sélection des ressources, l'exécution des tâches, le contrôle des accès concurrents et l'achèvement.
  2. Les données de configuration de tâche, qui définissent l'événement déclencheur, comment la tâche doit être exécutée, quelles ressources seront sélectionnées par les actions et où ces ressources sont situées, sont stockées dans une table Amazon DynamoDB.
  3. Les modèles AWS CloudFormation générés par la solution configurent les tâches en fonction des paramètres que vous définissez et des rôles nécessaires pour effectuer des actions sur les comptes.
  4. La solution suit toutes les étapes du processus, les ressources sélectionnées et les résultats des actions, y compris les erreurs possibles, dans une table DynamoDB.
  5. La solution exploite également Amazon CloudWatch Logs pour la journalisation. Les messages d'avertissement et d'erreur sont publiés dans une rubrique Amazon Simple Notification Service (Amazon SNS) créée par la solution qui envoie des messages à une adresse e-mail abonnée.

Gestionnaire de cycle de vie des données (DLM)

Documentation DLM . Il s'agit d'une solution plus simple mais moins flexible qui peut sauvegarder des volumes toutes les 12 ou 24 heures. Je suis perplexe pourquoi AWS a mis cette limitation sur DLM - hebdomadaire, mensuelle ou une fréquence variable aurait été facile à mettre en œuvre.

DLM est intégré à la console AWS. Je ne vais pas copier et coller la documentation car AWS garde les choses à jour et les liens se cassent rarement.

À partir de 2019, DLM vous permet de spécifier des intervalles plus courts jusqu'à deux heures, mais ne vous permet toujours pas de spécifier des intervalles de plus de 24 heures.

Mise à jour 2017

Depuis 2017, il existe un autre moyen de créer des instantanés réguliers - à l'aide des événements Cloudwatch .

Cela vous permet de planifier des instantanés, mais cela ne résout pas le problème du volume utilisé, ce n'est donc qu'une solution partielle. Il peut y avoir un moyen d'utiliser CloudWatch Events pour déclencher quelque chose qui met le volume au repos.

  1. Ouvrez la console CloudWatch à https://console.aws.amazon.com/cloudwatch/ .

  2. Dans le volet de navigation, choisissez Événements.

  3. Choisissez Créer une règle.

  4. Pour Event Source, procédez comme suit:

    -> Choisissez Calendrier.

    -> Choisissez Taux fixe de et spécifiez l'intervalle de programmation (par exemple, 5 minutes). Vous pouvez également choisir Expression Cron et spécifier une expression Cron (par exemple, toutes les 15 minutes du lundi au vendredi, à partir de l'heure actuelle).

  5. Pour les cibles, choisissez Ajouter une cible, puis sélectionnez EC2 Create Snapshot API call.

  6. Pour Volume ID, choisissez un volume EBS.

  7. Choisissez Configurer les détails.

  8. Pour Définition de règle, saisissez un nom et une description pour la règle.

  9. Pour les autorisations AWS, choisissez l'option pour créer un nouveau rôle. Cela ouvre la console IAM dans un nouvel onglet. Le nouveau rôle accorde l'autorisation cible intégrée d'accéder aux ressources en votre nom. Choisissez Autoriser. L'onglet avec la fenêtre IAM se ferme.

  10. Choisissez Créer une règle.


Solution gratuite, simple et native pour aws.
Vlastimil Ovčáčík

1
Le gestionnaire de cycle de vie autorise désormais n'importe quelle fréquence des 2/3/4/6/8/12/24 heures.
Dan Pritts

3

Sauter sur une vieille réponse qui m'a lancé dans ma recherche. Félicitations à Ameer Deen ci-dessus pour les scripts, btw.

J'ai trouvé cet article qui plonge beaucoup plus profondément dans les scripts PowerShell pour automatiser entièrement la collecte de données et le processus d'instantané EBS:

http://messor.com/aws-disaster-recovery-automation-w-powershell/

Puis, bien sûr, j'ai découvert que ceux-ci étaient tous écrits pour la v1.0 maintenant dépréciée du SDK AWS, j'ai donc passé le dernier jour à corriger cela et à les faire fonctionner avec la v2.0:

https://github.com/noahlh/aws-automated-backup-powershell

Prendre plaisir!


3

AutomatiCloud fait exactement ce dont vous avez besoin. C'est un outil Windows facile à utiliser où vous pouvez planifier des sauvegardes pour vos volumes EBS ou vos instances RDS: www.automaticoud.net

Vous pouvez

  • créer des instantanés et des AMI en fonction des ID d'instance ou des balises
  • créer des balises dynamiques à l'aide de macros
  • définir 3 niveaux de périodes de rétention (sauvegarde GFS)
  • envoyer des notifications par e-mail
  • ajouter un agent VSS pour les instances Windows
  • exécuter des scripts avant / après la sauvegarde
  • et beaucoup plus...

Ça a l'air vraiment bien! Je vais télécharger et essayer plus tard dans la journée.
leen3o

1
Automaticloud est-il gratuit? Me demandera-t-il de l'argent après l'avoir utilisé pendant un certain temps?
EricP

AutomatiCloud est gratuit. Les fonctionnalités avancées nécessitent un enregistrement.
Stephan Buhre

1

Vous pouvez désormais utiliser AWS Lambda pour créer automatiquement des AMI . L'ensemble de la configuration doit être terminée en 10 minutes environ avec le programme que vous aimez. Regardez leur repo Github pour y contribuer également. Exécutez le script par vous-même et évitez de donner des autorisations à des tiers.


0

Vous pouvez écrire un script qui parle à l'API EC2 pour planifier ces instantanés. Il peut être exécuté sur l'une de vos instances existantes ou vous pouvez configurer une petite instance Linux à cet effet sur un t1.micro dont la seule fonction est de lancer les instantanés pour les hôtes Windows. Le script peut être placé sur l'hôte linux en tant que tâche cron à exécuter quotidiennement au moment que vous choisissez.

Le premier lien est un exemple de scriptage à partir d'un hôte Windows et il pourrait facilement être automatisé avec des tâches planifiées dans Windows.

Je n'ai pas utilisé l'application que vous avez liée sur votre deuxième lien.


Pourriez-vous peut-être donner plus de détails? Je me rends compte que la solution serait probablement pour moi d'écrire une sorte de script mais cette connaissance en elle-même n'est pas suffisante pour moi pour résoudre le problème, malheureusement. Avez-vous peut-être un lien ou un échantillon des scripts auxquels vous faites référence?
Stanley

Celui que vous avez lié à votre question fonctionnera bien. Connaissez-vous les outils de ligne de commande d'API AWS?
Nathan V

0

Les capacités actuelles d'instantanés EBS pour les instances Windows sont expliquées ici: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Pour obtenir un instantané cohérent, vous devez suspendre les écritures sur le volume suffisamment longtemps pour terminer l'instantané. En règle générale, cela signifie que vous devez démonter le volume. Le document AWS ne décrit pas comment procéder via la ligne de commande sous Windows, mais vous pouvez en savoir plus à ce sujet dans ce thread de superutilisateur: /superuser/704870/mount-and-dismount-hard-drive-through -un logiciel de script

Pour obtenir un instantané du volume de démarrage du système, vous devez arrêter votre instance.

J'espère que cela pourra aider.


0

Je me rends compte que c'est une vieille question, mais je partagerai notre solution.

Nous utilisons un service appelé Ylastic . Leur plan Pro (50 $ / mois) comprend la planification des instantanés EBS, sans limiter le nombre de serveurs ou de disques. Il supprimera également les anciennes sauvegardes si vous le souhaitez. Vous pouvez créer plusieurs planifications (par exemple, quotidiennement, hebdomadairement, etc.) chacune avec ses propres politiques de rétention.

L'interface vous permet également de créer de nouvelles instances à partir de sauvegardes.

Cela a fonctionné de manière fiable pour nous pendant des années, avec une vingtaine d'instances et une quarantaine de volumes EBS. Il existe probablement des méthodes moins chères, mais le prix est juste assez bas pour que nous n'ayons pas pris la peine de construire et d'entretenir quelque chose nous-mêmes.

Voir http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management pour plus de détails sur cette fonctionnalité.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.