Wie plane ich automatische (tägliche) Snapshots von AWS EC2 Windows Instance?

12

Ich habe einige Windows-Server auf Amazon EC2 gehostet. Einige führen Windows Server 2003 und andere Windows Server 2008 aus. Hierbei handelt es sich um von EBS unterstützte Instanzen. Die meisten Instanzen haben auch einige zusätzliche EBS-Volumes angehängt.

Wir möchten einen täglichen Snapshot der Windows-Maschinen (und auch der angehängten EBS-Volumes) für S3 planen, damit wir tägliche Backups zur Verfügung haben.

Man könnte meinen, dass dies eine sehr häufige Anforderung ist und über die AWS Management Console verfügbar gemacht wird, aber leider nicht. Welche Ansätze gibt es? Wie plane ich tägliche Snapshots auf unseren Windows-Servern?

Für Linux stehen online mehrere Skriptbeispiele zur Verfügung, für Windows jedoch weniger. Ich habe mir http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html sowie https://github.com/ronmichael/aws-snapshot- angesehen. Scheduler . Hat jemand einen dieser Ansätze verwendet und funktioniert es?

Ich habe auch einen Service wie Skeddly in Betracht gezogen, der auf den ersten Blick billig erscheint, aber wenn Sie ihn für mehrere Server verwenden, steigt der Preis bald zu einem Punkt, an dem es eine bessere Option zu sein scheint, eine eigene Lösung zu erstellen, auf die Sie ihn dann anwenden können neue Server in der Zukunft. Mit Skeddly bezahlen wir für jeden Server.

Wie planen wir tägliche Snapshots unserer Windows-Instanzen?

Stanley
quelle

Antworten:

9

Amazon Web Services hat kürzlich PowerShell-Befehlszeilentools für Windows angekündigt , die zusammen mit den AWS Tools für .NET SDK geliefert werden .

Mit den AWS Powershell-Tools können Sie ganz einfach einen Schnappschuss erstellen:

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

Und Sie können Ihre Schnappschüsse wie folgt abfragen:

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         : {}

Stellen Sie sicher, dass Sie die AWS Powershell-Tools installiert haben, und erstellen Sie eine geplante Aufgabe, die ein Powershell-Skript verwendet, das dem obigen Snippet ähnelt, um Ihre Snapshots zu planen.

Aktualisiert, um angehängte EBS-Volumes abzufragen:

Um EBS-Volumes abzufragen, die an Ihre Instanz angehängt sind, und dann einen Snapshot von jedem dieser Volumes zu erstellen, können Sie folgendermaßen vorgehen:

# 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"
}
Ameer Deen
quelle
Vielen Dank. Dies scheint das zu sein, wonach ich suche. Bitte klären Sie: Es scheint, als würde mit dem Befehl New-EC2Snapshot nur ein Snapshot eines bestimmten Volumes erstellt. In meinem Fall habe ich die Instanz und es sind auch einige EBS-Volumes angehängt. Wie würde ich einen vollständigen Snapshot der gesamten Instanz einschließlich des Root-Geräts und der angehängten EBS-Volumes erstellen?
Stanley
@Stanley wurde aktualisiert, um die an Ihre Instanz angehängten EBS-Volumes und jeden Snapshot abzufragen
Ameer Deen
Ich verstehe, danke. Das bedeutet, dass es für jedes Volume separate Snapshots gibt. Ich möchte nur die Auswirkungen verstehen: Wie kann ich im Fehlerfall eine Ersatzinstanz aufrufen? Die Snapshots für das EBS-Root-Volume und die einzelnen gemounteten EBS-Volumes sind alle getrennt. Wie kann ich eine Ersatzinstanz mit den bereitgestellten Laufwerken aus den verschiedenen Snapshots aufrufen?
Stanley
Warum können Sie dies nicht über das EC2-Dashboard einrichten? Für Leute, die mit den Skripten nicht allzu vertraut sind?
Leen3o
5

2018 Update Ab Ende 2018 gibt es zwei zusätzliche Möglichkeiten, EBS-Snapshots zu automatisieren. Ich verwende immer noch die ursprüngliche Methode von CloudWatch-Ereignissen, da sie seit Jahren einwandfrei funktioniert und ich keinen Grund sehe, sie zu ändern.

Ops Automator (OA)

Ops Automator ist ein sehr flexibler Satz von Lambda-Skripten, die von AWS bereitgestellt werden. Es wird mit einer CloudWatch-Vorlage bereitgestellt, die sich auf der obigen Seite befindet.

Es ist Setup-Schritte sind

  1. Mit der AWS CloudFormation-Vorlage wird das Kernframework gestartet, das eine Reihe von Microservices (AWS Lambda-Funktionen) enthält, mit denen Triggerereignisse, Ressourcenauswahl, Aufgabenausführung, Parallelitätskontrolle und Fertigstellung verwaltet werden.
  2. Task-Konfigurationsdaten, die das auslösende Ereignis definieren, wie die Task ausgeführt werden soll, welche Ressourcen von den Aktionen ausgewählt werden und wo sich diese Ressourcen befinden, werden in einer Amazon DynamoDB-Tabelle gespeichert.
  3. Lösungsgenerierte AWS CloudFormation-Vorlagen konfigurieren Aufgaben basierend auf den von Ihnen definierten Parametern und den Rollen, die zum Ausführen von Aktionen für mehrere Konten erforderlich sind.
  4. Die Lösung verfolgt alle Schritte im Prozess, die ausgewählten Ressourcen und die Ergebnisse der Aktionen, einschließlich möglicher Fehler, in einer DynamoDB-Tabelle.
  5. Die Lösung nutzt auch Amazon CloudWatch Logs für die Protokollierung. Warn- und Fehlermeldungen werden in einem von einer Lösung erstellten Amazon Simple Notification Service-Thema (Amazon SNS) veröffentlicht, in dem Nachrichten an eine abonnierte E-Mail-Adresse gesendet werden.

Data Lifecycle Manager (DLM)

DLM-Dokumentation . Dies ist eine einfachere, aber weniger flexible Lösung, die alle 12 oder 24 Stunden Volumes sichern kann. Ich bin verwundert, warum AWS diese Einschränkung für DLM eingeführt hat - wöchentlich, monatlich oder eine variable Häufigkeit wäre einfach zu implementieren gewesen.

DLM ist in die AWS-Konsole integriert. Ich werde die Dokumentation nicht kopieren und einfügen, da AWS die Dinge stets auf dem neuesten Stand hält und Verknüpfungen nur selten unterbrochen werden.

Ab 2019 können Sie in DLM kürzere Intervalle von bis zu zwei Stunden festlegen , jedoch keine Intervalle von mehr als 24 Stunden.

Update 2017

Ab 2017 gibt es eine andere Möglichkeit, regelmäßige Snapshots zu erstellen - mithilfe von Cloudwatch-Ereignissen .

Auf diese Weise können Sie Snapshots planen, das Problem des verwendeten Volumes wird jedoch nicht behoben, sodass es sich nur um eine Teillösung handelt. Es kann eine Möglichkeit geben, CloudWatch-Ereignisse zu verwenden, um etwas auszulösen, das das Volume stilllegt.

  1. Öffnen Sie die CloudWatch-Konsole unter https://console.aws.amazon.com/cloudwatch/ .

  2. Wählen Sie im Navigationsbereich Ereignisse.

  3. Wählen Sie Regel anlegen.

  4. Führen Sie für die Ereignisquelle die folgenden Schritte aus:

    -> Wählen Sie Schedule.

    -> Wählen Sie Feste Rate von und geben Sie das Zeitintervall an (z. B. 5 Minuten). Alternativ können Sie Cron-Ausdruck auswählen und einen Cron-Ausdruck angeben (z. B. alle 15 Minuten von Montag bis Freitag ab der aktuellen Uhrzeit).

  5. Wählen Sie unter Ziele die Option Ziel hinzufügen und dann den Aufruf EC2 Create Snapshot API aus.

  6. Wählen Sie als Volume-ID ein EBS-Volume aus.

  7. Wählen Sie Details konfigurieren.

  8. Geben Sie unter Regeldefinition einen Namen und eine Beschreibung für die Regel ein.

  9. Wählen Sie für AWS-Berechtigungen die Option zum Erstellen einer neuen Rolle. Dadurch wird die IAM-Konsole in einer neuen Registerkarte geöffnet. Die neue Rolle gewährt die integrierte Zielberechtigung, um in Ihrem Namen auf Ressourcen zuzugreifen. Wählen Sie Zulassen. Die Registerkarte mit dem IAM-Fenster wird geschlossen.

  10. Wählen Sie Regel anlegen.

Tim
quelle
Kostenlose, einfache und native Lösung für aws.
Vlastimil Ovčáčík
1
Der Lifecycle Manager ermöglicht jetzt eine Frequenz von 2/3/4/6/8/12/24 Stunden.
Dan Pritts
3

Springen Sie auf eine alte Antwort ein, die mich auf meine Suche gebracht hat. Ein großes Lob an Ameer Deen für die Drehbücher, übrigens.

Wir haben diesen Beitrag gefunden, der sich eingehender mit PowerShell-Skripten befasst, um die Datenerfassung und den EBS-Snapshot-Prozess vollständig zu automatisieren:

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

Dann stellte ich natürlich fest, dass alle für die jetzt abgeschriebene Version 1.0 des AWS SDK geschrieben wurden, und so habe ich den letzten Tag damit verbracht, dies zu beheben und sie alle mit Version 2.0 zum Laufen zu bringen:

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

Genießen!

nlh
quelle
3

AutomatiCloud macht genau das, was Sie brauchen. Es ist ein benutzerfreundliches Windows-Tool, mit dem Sie Backups für Ihre EBS-Volumes oder RDS-Instanzen planen können: www.automaticoud.net

Du kannst

  • Erstellen Sie Snapshots und AMIs basierend auf Instanz-IDs oder Tags
  • Erstellen Sie dynamische Tags mit Makros
  • Definieren Sie 3 Ebenen von Aufbewahrungsfristen (GFS-Backup)
  • E-Mail-Benachrichtigungen senden
  • Fügen Sie den VSS-Agenten für Windows-Instanzen hinzu
  • Führen Sie Skripte vor / nach dem Backup aus
  • und vieles mehr...
Stephan Buhre
quelle
Das sieht echt gut aus! Ich werde es später heute herunterladen und ausprobieren.
Leen3o
1
Ist automaticloud kostenlos? Bittet es mich um Geld, nachdem ich es eine Weile benutzt habe?
EricP
AutomatiCloud ist kostenlos. Erweiterte Funktionen erfordern eine Registrierung.
Stephan Buhre
1

Sie können jetzt AWS Lambda verwenden, um AMIs automatisch zu erstellen . Die gesamte Einrichtung sollte zusammen mit dem gewünschten Zeitplan in ca. 10 Minuten abgeschlossen sein. Schauen Sie sich ihr Github-Repo an, um auch einen Beitrag zu leisten. Führen Sie das Skript selbst aus und geben Sie keine Berechtigungen an Dritte weiter.

Romo P
quelle
0

Sie können ein Skript schreiben, das mit der EC2-API kommuniziert, um diese Snapshots zu planen. Es kann auf einer Ihrer vorhandenen Instanzen ausgeführt werden, oder Sie können eine kleine Linux-Instanz für diesen Zweck auf einem t1.micro einrichten, dessen einzige Funktion darin besteht, die Snapshots für die Windows-Hosts zu starten. Das Skript kann auf dem Linux-Host als Cron-Job abgelegt werden, der täglich zu dem von Ihnen gewählten Zeitpunkt ausgeführt wird.

Der erste Link ist ein Beispiel für eine Skripterstellung, die von einem Windows-Host ausgeführt wird und mit geplanten Aufgaben in Windows problemlos automatisiert werden kann.

Ich habe die Anwendung, die Sie über Ihren zweiten Link verlinkt haben, nicht verwendet.

Nathan V
quelle
Könnten Sie vielleicht etwas näher erläutern? Mir ist klar, dass die Lösung wahrscheinlich darin bestehen würde, eine Art Skript zu schreiben, aber dieses Wissen allein reicht mir leider nicht aus, um das Problem zu lösen. Haben Sie vielleicht einen Link oder ein Beispiel für die Skripte, auf die Sie verweisen?
Stanley
Die, die Sie aus Ihrer Frage verlinkt haben, wird tatsächlich gut funktionieren. Kennen Sie die AWS API-Befehlszeilentools überhaupt?
Nathan V
0

Die aktuellen Funktionen von EBS Snapshot für Windows-Instanzen werden hier erläutert: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Um einen konsistenten Snapshot zu erhalten, müssen Sie die Schreibvorgänge auf dem Volume so lange anhalten, bis der Snapshot abgeschlossen ist. In der Regel bedeutet dies, dass Sie die Bereitstellung des Volumes aufheben müssen. Das AWS-Dokument erläutert dies nicht über die Befehlszeile unter Windows. Weitere Informationen hierzu finden Sie in diesem Superuser-Thread: /superuser/704870/mount-and-dismount-hard-drive-through -a-script-software

Um eine Momentaufnahme des Systemstartvolumes zu erhalten, müssen Sie Ihre Instanz stoppen.

Ich hoffe, das hilft.

bewölktBlau
quelle
0

Mir ist klar, dass dies eine alte Frage ist, aber ich werde unsere Lösung teilen.

Wir nutzen einen Service namens Ylastic . Ihr Pro-Plan (50 USD / Monat) beinhaltet die Planung von EBS-Snapshots, ohne die Anzahl der Server oder Festplatten zu beschränken. Wenn Sie möchten, werden auch ältere Sicherungen entfernt. Sie können mehrere Zeitpläne (z. B. täglich, wöchentlich usw.) mit jeweils eigenen Aufbewahrungsrichtlinien erstellen.

Über die Schnittstelle können Sie auch neue Instanzen aus Sicherungen erstellen.

Mit etwa zwanzig Instanzen und vierzig EBS-Volumes hat es jahrelang zuverlässig funktioniert. Es gibt wahrscheinlich billigere Methoden, aber der Preis ist gerade so niedrig, dass wir uns nicht darum gekümmert haben, etwas selbst zu bauen und zu warten.

Weitere Informationen zu dieser Funktion finden Sie unter http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management .

Martijn Heemels
quelle