Come pianificare istantanee automatiche (giornaliere) dell'istanza di Windows di AWS EC2?


12

Ho alcuni server Windows ospitati su Amazon EC2. Alcuni eseguono Windows Server 2003 e altri eseguono Windows Server 2008. Queste sono istanze supportate da EBS. La maggior parte delle istanze ha anche alcuni volumi EBS aggiuntivi allegati.

Vogliamo pianificare un'istantanea giornaliera dei computer Windows (e anche dei volumi EBS collegati) su S3 in modo da disporre di backup giornalieri.

Si potrebbe pensare che questo sia un requisito molto comune e che sarebbe reso disponibile tramite la Console di gestione AWS, ma purtroppo non lo è. Quali approcci sono disponibili? Come posso pianificare le istantanee quotidiane sui nostri server Windows?

Esistono diversi esempi di scripting disponibili online per Linux, ma non così tanto per Windows. Ho dato un'occhiata a http://sehmer.blogspot.com/2011/04/amazon-ec2-daily-snapshot-script-for.html e https://github.com/ronmichael/aws-snapshot- scheduler . Qualcuno ha usato uno di questi approcci e funziona?

Ho anche considerato un servizio come Skeddly che a prima vista sembra poco costoso, ma quando lo si utilizza per diversi server il prezzo sale rapidamente a un punto tale da sembrare un'opzione migliore per creare la propria soluzione in quanto è quindi possibile applicarla a nuovi server in futuro. Con Skeddly pagheremo per ogni server.

Come programmiamo le istantanee quotidiane delle nostre istanze di Windows?

Risposte:


9

Amazon Web Services ha recentemente annunciato gli strumenti della riga di comando di PowerShell per Windows ed è fornito in pacchetto con i loro AWS Tools per .NET SDK .

Gli strumenti AWS Powershell rendono abbastanza semplice la creazione di un'istantanea:

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

E puoi interrogare le tue istantanee in questo modo:

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

Assicurati di avere installato gli strumenti AWS Powershell e crea un'attività pianificata che utilizza uno script PowerShell simile allo snippet sopra per pianificare le tue istantanee e dovresti essere bravo.

Aggiornato per interrogare i volumi EBS collegati:

Per eseguire una query per i volumi EBS collegati all'istanza e quindi eseguire uno snapshot di ciascuno di essi, è possibile eseguire una operazione del genere:

# 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"
}

Grazie mille. Questo sembra essere quello che sto cercando. Si prega di chiarire: sembra che il comando New-EC2Snapshot eseguirà solo un'istantanea di un volume specifico. Nel mio caso ho l'istanza e ha anche alcuni volumi EBS collegati. Come farei un'istantanea completa dell'intera istanza, inclusi il dispositivo root e i volumi EBS collegati?
Stanley,

@Stanley aggiornato per eseguire una query per i volumi EBS collegati alla tua istanza e uno snapshot ciascuno
Ameer Deen,

Vedo grazie. Ciò significa che ci saranno istantanee separate per ciascun volume. Voglio solo capire le implicazioni di questo: in caso di fallimento, come potrei visualizzare un'istanza sostitutiva? Le istantanee per il volume radice EBS e i singoli volumi EBS montati saranno tutte separate. Come potrei visualizzare un'istanza sostitutiva con le unità montate dalle diverse istantanee?
Stanley,

Perché non è possibile configurarlo tramite la dashboard EC2? Per le persone che non sono troppo sicure degli script?
leen3o

5

Aggiornamento 2018 Alla fine del 2018 ci sono altri due modi per automatizzare le istantanee EBS. Uso ancora il metodo originale degli eventi CloudWatch poiché ha funzionato bene per anni e non vedo alcun motivo per cambiare.

Ops Automator (OA)

Ops Automator è un set molto flessibile di script lambda forniti da AWS. È distribuito con un modello CloudWatch che si trova nella pagina sopra.

Sono i passaggi di installazione

  1. Il modello AWS CloudFormation lancia il framework principale, che include una suite di microservizi (funzioni AWS Lambda) che gestiscono eventi di innesco, selezione delle risorse, esecuzione delle attività, controllo della concorrenza e completamento.
  2. I dati di configurazione dell'attività, che definiscono l'evento di attivazione, il modo in cui l'attività deve essere eseguita, quali risorse saranno selezionate dalle azioni e dove si trovano queste risorse, sono archiviati in una tabella Amazon DynamoDB.
  3. I modelli AWS CloudFormation generati dalla soluzione configurano le attività in base ai parametri definiti e ai ruoli necessari per eseguire azioni tra account.
  4. La soluzione tiene traccia di tutti i passaggi del processo, delle risorse selezionate e dei risultati delle azioni, inclusi i possibili errori, in una tabella DynamoDB.
  5. La soluzione sfrutta anche i log di Amazon CloudWatch per la registrazione. I messaggi di avviso e di errore sono pubblicati su un argomento Amazon Simple Notification Service (Amazon SNS) creato da una soluzione che invia messaggi a un indirizzo e-mail sottoscritto.

Data Lifecycle Manager (DLM)

Documentazione DLM . Questa è una soluzione più semplice ma meno flessibile che può eseguire il backup dei volumi ogni 12 o 24 ore. Sono perplesso sul perché AWS abbia messo questa limitazione su DLM: la frequenza settimanale, mensile o variabile sarebbe stata facile da implementare.

DLM è integrato nella console AWS. Non ho intenzione di copiare e incollare la documentazione poiché AWS mantiene le cose aggiornate bene e i collegamenti raramente si interrompono.

A partire dal 2019 DLM ti consente di specificare intervalli più brevi fino a due ore, ma non ti consente di specificare intervalli di più di 24 ore.

Aggiornamento 2017

A partire dal 2017 c'è un altro modo per creare istantanee regolari: utilizzare Cloudwatch Events .

Ciò consente di pianificare le istantanee, ma non risolve il problema del volume in uso, quindi è solo una soluzione parziale. Potrebbe esserci un modo per utilizzare Eventi CloudWatch per attivare qualcosa che interrompe il volume.

  1. Apri la console di CloudWatch all'indirizzo https://console.aws.amazon.com/cloudwatch/ .

  2. Nel riquadro di navigazione, selezionare Eventi.

  3. Scegli Crea regola.

  4. Per Origine evento, procedi come segue:

    -> Scegli Pianifica.

    -> Scegliere Tasso fisso di e specificare l'intervallo di programma (ad esempio, 5 minuti). In alternativa, scegli Espressione Cron e specifica un'espressione Cron (ad esempio, ogni 15 minuti dal lunedì al venerdì, a partire dall'ora corrente).

  5. Per Target, selezionare Aggiungi target e quindi selezionare EC2 Crea chiamata API snapshot.

  6. Per ID volume, selezionare un volume EBS.

  7. Scegli Configura dettagli.

  8. Per la definizione della regola, digitare un nome e una descrizione per la regola.

  9. Per le autorizzazioni AWS, scegli l'opzione per creare un nuovo ruolo. Questo apre la console IAM in una nuova scheda. Il nuovo ruolo concede l'autorizzazione di destinazione integrata per accedere alle risorse per tuo conto. Scegli Consenti. La scheda con la finestra IAM si chiude.

  10. Scegli Crea regola.


Soluzione gratuita, semplice e nativa per aws.
Vlastimil Ovčáčík,

1
Il gestore del ciclo di vita ora consente qualsiasi frequenza di 2/3/4/6/8/12/24 ore.
Dan Pritts,

3

Saltando su una vecchia risposta che mi ha dato il via alla mia ricerca. Complimenti ad Ameer Deen sopra per gli script, a proposito.

Ho trovato questo post che approfondisce molto gli script di PowerShell per automatizzare completamente il processo di raccolta dati e snapshot EBS:

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

Poi, naturalmente, ho scoperto che quelli erano tutti scritti per la v1.0 ora svalutata dell'SDK AWS, quindi ho trascorso l'ultimo giorno a sistemarlo e a farli funzionare tutti con v2.0:

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

Godere!


3

AutomatiCloud fa esattamente ciò di cui hai bisogno. È uno strumento Windows di facile utilizzo in cui è possibile pianificare i backup per i volumi EBS o le istanze RDS: www.automaticoud.net

Puoi

  • creare snapshot e AMI basati su ID istanza o tag
  • creare tag dinamici utilizzando le macro
  • definire 3 livelli di periodi di conservazione (backup GFS)
  • inviare notifiche e-mail
  • aggiungere l'agente VSS per le istanze di Windows
  • eseguire script prima / dopo il backup
  • e altro ancora...

Questo sembra davvero buono! Ho intenzione di scaricare e provarlo più tardi oggi.
leen3o

1
Automaticloud è gratuito? Mi chiederà soldi dopo averlo usato per un po '?
EricP,

AutomatiCloud è gratuito. Le funzionalità avanzate richiedono la registrazione.
Stephan Buhre,

1

Ora puoi utilizzare AWS Lambda per creare automaticamente le AMI . L'intera configurazione dovrebbe essere completata in circa 10 minuti insieme al programma che ti piace. Guarda il loro repository Github per contribuire anche. Esegui lo script da solo ed evita di concedere autorizzazioni a terzi.


0

È possibile scrivere uno script che comunica con l'API EC2 per pianificare tali istantanee. Può essere eseguito su una delle istanze esistenti oppure è possibile impostare una piccola istanza di Linux a tale scopo su un t1.micro la cui unica funzione è quella di dare il via agli snapshot per gli host di Windows. Lo script potrebbe essere inserito nell'host Linux come cron job da eseguire quotidianamente nel momento scelto.

Il primo collegamento è un esempio di scripting che da un host Windows e che potrebbe essere facilmente automatizzato con Attività pianificate in Windows.

Non ho usato l'applicazione che hai collegato sul tuo secondo link.


Potresti forse dare qualche dettaglio in più? Mi rendo conto che probabilmente la soluzione sarebbe per me scrivere un qualche tipo di sceneggiatura, ma questa conoscenza da sola non è sufficiente per risolvere il problema, sfortunatamente. Hai forse un link o un campione degli script a cui ti riferisci?
Stanley,

Quello che hai collegato alla tua domanda funzionerà davvero bene. Conoscete gli strumenti della riga di comando dell'API AWS?
Nathan V,

0

Le attuali funzionalità di EBS Snapshot per le istanze di Windows sono spiegate qui: http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ebs-creating-snapshot.html

Per ottenere un'istantanea coerente, è necessario mettere in pausa le scritture sul volume abbastanza a lungo da completare l'istantanea. In genere, questo significa che devi smontare il volume. Il documento AWS non discute come farlo tramite la riga di comando su Windows, ma puoi scoprirlo in questo thread superutente: /superuser/704870/mount-and-dismount-hard-drive-through -a-script-software

Per ottenere un'istantanea del volume di avvio del sistema, è necessario arrestare l'istanza.

Spero possa aiutare.


0

Mi rendo conto che questa è una vecchia domanda, ma condividerò la nostra soluzione.

Usiamo un servizio chiamato Ylastic . Il loro piano Pro ($ 50 / mese) include la pianificazione di snapshot EBS, non limitando il numero di server o dischi. Se lo desideri, rimuoverà anche i backup più vecchi. È possibile creare più pianificazioni (ad esempio giornaliero, settimanale, ecc.) Ciascuno con le proprie politiche di conservazione.

L'interfaccia consente inoltre di creare nuove istanze dai backup.

Ha funzionato in modo affidabile per noi per anni, con una ventina di casi e quaranta volumi EBS. Probabilmente ci sono metodi più economici, ma il prezzo è abbastanza basso che non ci siamo preoccupati di costruire e mantenere qualcosa da soli.

Vedi http://blog.ylastic.com/post/148519929496/multi-region-ebs-instance-backup-management per i dettagli su questa funzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.