Strategia di backup di Amazon EC2 con restrizioni (può essere presa poco o nessuna istantanea?)

Sono state sollecitate domande simili, ma devo sapere che cosa sarebbe stato consigliato nelle circostanze, sapere se manco qualcosa nella mia comprensione di usare EC2.

Un piccolo avvio sta eseguendo la propria attività sulla networking EC2 e mi ha chiesto qualche consiglio sulle opzioni di backup. Essi sono autofinanziati al momento e stanno facendo tutto quello che possono per risparmiare i costi quando è fattibile. Senza scorrere troppo nella configuration dei loro sisthemes, darò ad esempio un web server; è un semplice server web con un database. Il trucco è che non vogliono che il server venga abbassato.

  • Come distriggersre il supporto ipv6 in Linux interamente?
  • Come posso imparare Linux dall'hacking o dal punto di vista della sicurezza
  • OpenVPN client-to-client
  • Possibile ribuild il pacchetto deb da installato?
  • Processi multipli * Quasi * identici su un server Linux
  • Stranezze performance nfs: 1 filo migliore di 8, 8 migliori di 2!
  • La persona che sta facendo l'installazione crede che dovrebbero semplicemente fare discariche periodiche del database e memorizzare quella su S3 oppure creare script che potrebbero ribuild un nuovo server su Amazon quando necessari per eseguire il backup di cartelle selezionate contenenti informazioni di configuration . Ha suggerito che per creare istantanee del server sarebbe spreco, in quanto richiedono molto spazio su disco e, in sostanza, ci sarebbero dati di rottura tra grandi discariche di dati in modo che l'istantanea sarebbe diventata obsoleta rapidamente.

    Il mio pensiero era quello di prendere un'istantanea della VM e poi fare discariche periodiche del database e memorizzare in S3. Se wheressero perdere l'istanza EC2 o avere qualcosa di simile ad un aggiornamento renderlo inutilizzabile, potrebbero utilizzare l'istantanea per build il server in modo relativamente rapido con l'ultima versione del database, piuttosto che iniziare da zero per build una nuova istanza da un sistema completamente nuovo AMI.

    La mia comprensione è che fare un'istantanea di un'istanza EC2 (o di un archivio EBS) richiederà tempi di inattività, qualcosa che sono titubanti. Ho anche letto che dovresti arrestare il server per mantenere il filesystem coerente quando l'istantanea ha preso. Poiché non hanno ancora un cluster dietro un bilanciatore, queste limitano le opzioni che prevedono istantanee.

    Scripting per build server, a less che non esista qualcosa di specifico a quello di Amazon, non sono consapevole, comporterebbe la creazione di un server Chef o Puppet che potrebbe distribuire nuovi server con i loro ruoli associati su EC2. Adesso l'avvio non ha fondi per mantenere quel tipo di server nelle ali e, proprio ora, non ha veramente bisogno di distribuire molti server.

    Idealmente avrebbero i fondi per creare un numero di server dietro un bilanciere virtuale o un servizio di bilanciamento di Amazon, quindi prelevare i server uno alla volta per eseguire aggiornamenti o istantanee. Adesso sarei nervoso dell'idea di fare aggiornamenti perché se stai facendo delle discariche del database, questo non aiuterà se un aggiornamento di sistema modifica una libreria su cui si basa la loro applicazione e il servizio scende.

    Ho anche pensato che un'altra opzione sia quella di eseguire uno script che crea un volume EBS, lo monti e sul server esegue qualcosa come rsync per catturare la maggior parte delle informazioni del file system al volume EBS quindi comprimere e copiare il contenuto in S3, scolbind il volume e distruggerlo per risparmiare il costo di archiviazione, quindi fare un dump di database per catturare dati in volo che sarebbero incoerenti altrimenti. Per alcuni dei loro server sarà molto probabilmente necessario salvare i volumi temporanei EBS in quanto le loro esigenze di database crescono.

    Viene creato un sandbox VMWare per ricreare i propri sisthemes di networking in un ambiente in cui gli aggiornamenti possono essere pre-testati prima di applicarli ai sisthemes di produzione su Amazon. Spero che riduca la possibilità che un aggiornamento del sistema uccida la loro applicazione.

    Quindi … date le restrizioni di esecuzione di un server, con database e server di applicazioni sul sistema, cercando di avere il più vicino tempo di inattività ansible (limitando l'utilizzo di istantanee e avendo il process di backup più "caldo" ansible creato in diretta senza prendere il server in giù), sono sulla pista sbagliata per suggerire la pianificazione di un tempo per creare un'istantanea dell'istanza EC2 nel suo stato di lavoro e da lì fare le discariche di database per copiare in S3? C'è una strategia migliore per perseguire nella creazione di un backup in diretta di un server se gli snapshot creeranno tempi di inattività?

    3 Solutions collect form web for “Strategia di backup di Amazon EC2 con restrizioni (può essere presa poco o nessuna istantanea?)”

    C'è qualcosa di interessante in merito a questa domanda – in particolare per quanto riguarda l'idea di tempi di inattività. Parte dell'idea che se un'applicazione è sensibile ai tempi di inattività, è necessario anche considerare il tempo di recupero. (Come argomento estremo, nessun backup richiede tempi di inattività, a less che non ci siano necessari backup, nel qual caso i tempi di inattività possono avvicinarsi all'infinito ).

    Un po 'di EBS

    I volumi e gli snapshot EBS funzionano a livello di block, una conseguenza che consente di eseguire istantanee durante l'esecuzione di un'istanza, anche se il volume EBS è in uso. Tuttavia, solo i dati che sono effettivamente sul disco (cioè non in una cache di file) saranno inclusi nell'istantanea. È quest'ultima ragione che dà origine all'idea di istantanee coerenti.

    • Il modo consigliato è quello di staccare il volume, snapshot e riattaccarlo – di solito non pratico.
    • L'opzione successiva migliore prevede l'irrowzione delle cache di scrittura sul disco, il congelamento del file system e l'acquisizione della tua istantanea

    Un punto interessante è che in entrambi i casi precedenti non è necessario attendere che l'istantanea finisca per riattaccare / scolbind e riprendere la scrittura sul disco – una volta avviata l'istantanea i tuoi dati saranno coerenti a quel punto nel tempo. In genere, questo richiede solo pochi secondi durante il quale il disco viene bloccato. Inoltre poiché la maggior parte delle banche dati strutturano i loro file sul disco in modo ragionevole – c'è una buona probabilità che gli inserti hanno un effetto minimo sui blocchi esistenti – che minimizza i dati aggiunti all'istantanea.

    Considerate il punto del backup

    I volumi EBS sono già replicati all'interno di una zona di disponibilità, quindi c'è un certo grado di ridondanza. Se la tua istanza termina, puoi semplicemente albind il volume EBS a una nuova istanza e (dopo aver superato la mancanza di coerenza) lasciato fuori. In molti casi questo rende il volume EBS molto simile a un'istantanea inconsistente, a condizione che tu possa accedervi. Detto questo, la maggior parte degli utenti EC2 probabilmente ricorderà i fallimenti in cascata dei volumi EBS dall'inizio del 2011 – i volumi erano inaccessibili per più giorni e alcuni utenti persero i dati.

    RAID1

    Se si sta cercando di proteggere contro il guasto di un disco EBS (ciò accade), è ansible considerare un'installazione RAID1. Poiché i volumi EBS sono dispositivi di block, è ansible utilizzare facilmente mdadm per impostarli nella configuration desiderata. Se uno dei tuoi volumi EBS non si esegue alla specifica, è abbastanza facile mancare manualmente (e poi sostituirlo con un altro volume EBS). Naturalmente, questo ha dei problemi: un aumento del tempo per each scrittura, maggiore suscettibilità alle performance variables, il doppio dei costi di I / O (monetariliy, non performance), nessuna protezione reale contro un errore AWS più diffuso (un problema comune lo scorso anno è stato l'incapacità di staccare i volumi EBS che erano in uno stato bloccato) e naturalmente lo stato incoerente del disco sul guasto.

    S3FS

    Un'opzione per alcune applicazioni (sicuramente NON per i database) è quella di montare S3 come un file system locale (ad esempio via s3fs). Questo è lento, manca di alcune delle caratteristiche che ci si aspetterebbe da un file system e potrebbero non comportrsi come previsto (consistenza eventuale). Detto questo, per un semplice scopo come fare i file caricati disponibili in tutti i casi, potrebbe essere un merito. Ovviamente non è per nulla che richiede buone performance di lettura / scrittura.

    MySQL bin-log

    Un'altra opzione specifica per MySQL può essere l'utilizzo del bin-log. È ansible impostare un secondo volume EBS che memorizzerà il bin-log (per ridurre al minimo l'effetto delle scritture aggiunte sul database) e utilizzarlo in combinazione con le discariche di database da prendere. Potresti anche essere in grado di farlo con s3fs, che in realtà potrebbe avere merito se la prestazione è tollerabile (un rsync sarebbe probabilmente meglio se cercare di utilizzare direttamente s3fs e sicuramente vuoi comprare quello che puoi).

    Ancora una volta, torniamo all'idea di scopo. Considerate cosa succederebbe con i suggerimenti di cui sopra:

    • I volumi di EBS inaccessibili:
      • RAID1 – inutile, in quanto non è ansible accedere ai dati
      • bin-log – inutile, a less che tu non lo esporti in S3 – probabilmente un ritardo però se lo hai fatto
    • L'istanza termina inaspettatamente:
      • RAID1 – i tuoi dischi sono disponibili, ma non coerenti, il database potrebbe recuperare da solo l'incoerenza
      • bin-log – i tuoi dati dovrebbero essere accessibili, anche se potrebbe essere necessario rivedere gli ultimi events
    • Qualcuno esegue DROP DATABASE come root:
      • RAID1 – avete due copie perfette di un database inesistente
      • bin-log – dovresti essere in grado di riprodurre gli events fino a poco prima del command, quindi dovresti essere ok

    Quindi, in realtà, RAID1 è per lo più inutile, e il bin-log richiede troppo tempo – entrambi possono avere merito in determinate circostanze, ma sono lontani dall'idea di backup.

    istantanee

    È importnte notare che le istantanee sono differenziali e memorizzano solo i blocchi reali che contengono dati (e sono compressi). A differenza di un volume EBS, where, se si dispone di un volume di 20 GB, ma utilizza solo 1 GB, è ancora addebitato l'archivio "provisioned" (20 GB). Con un'istantanea, ti viene addebitato solo quello che usi. Se non cambia alcun dato tra istantanee, non c'è (teoricamente) alcuna carica. (Le istantanee vengono addebitate per PUTS / GETS e l'archiviazione utilizzata).

    In discarica, vorrei raccomandare che i dati dell'applicazione (inclusi database) non vengano memorizzati nel tuo volume radice (che potrebbe essere già impostato). Uno dei vantaggi è che, speriamo, il tuo volume radice vede un minimo di cambiamenti – il che significa che le sue istantanee possono essere less frequenti (o avranno un minimo di modifica) riducendo i costi e la facilità d'uso.

    È altrettanto importnte ricordare che è ansible eliminare in qualsiasi momento le vecchie istantanee, anche se sono differenziali che non influiscono sulle altre istantanee. Ciò detto, each block assegnato ad una istantanea non verrà rinunciato finché non esiste un'istantanea che ancora fa riferimento a quel block.

    Il problema con le discariche periodiche è innanzitutto il tempo tra le discariche (eventualmente risolte utilizzando il bin-log di MySQL) e anche la difficoltà di recupero. Ci vuole tempo per importre un grande dump e ripetere tutti gli events da un bin-log. Inoltre, la creazione di un dump non è senza le sue implicazioni di performance. Probabilmente, tali discariche probabilmente richiedono molto più spazio di archiviazione di un'istantanea. Impostazione di un volume EBS solo per i database e snapshot che sarebbe preferibile per la maggior parte dei saluti (che ha detto, fare un'istantanea ha anche un po 'di implicazioni di performance).

    La bellezza delle istantanee e dei volumi EBS è che possono essere utilizzati in altri casi. Se l'istanza non riesce ad avviarsi, puoi colbind il volume radice a un'altra istanza per diagnosticare e risolvere il problema – o semplicemente per copiare i dati da esso – e può commutare i volumi di radice con solo pochi minuti di inattività (interrompere l'istanza, il volume radice, albind un nuovo volume di origine, avviare l'istanza). Questa stessa idea vale per avere i tuoi dati su un secondo volume EBS. In sostanza, è sufficiente spingere una nuova istanza dal tuo AMI personalizzato e albind il suo volume EBS corrente; aiuta a ridurre al minimo i tempi di inattività.

    (Si potrebbe fare l'argomento (e probabilmente non lo consiglierei) che potresti configurare due copie di MySQL sullo stesso server (Master-slave) utilizzando due volumi EBS e quindi spegnere il tuo schiavo per fare un'istantanea del suo Volume EBS – sarà coerente, senza tempi di inattività – ma i costi di esecuzione probabilmente non ne vale la pena).

    AWS ha autoscalazione – che sarà in grado di mantenere un numero costante di istanze (anche se il numero è 1) – si distribuirà da un'istantanea tuttavia – quindi se la tua istantanea non è utile, allora la premessa non è molto utile .

    Un'altra coppia di punti: puoi distribuire il numero di istanze desiderato da una singola istantanea (a differenza di un volume EBS, che può essere collegato solo ad un'istanza singola in un dato momento). Inoltre, i volumi EBS sono limitati all'uso all'interno di una zona di disponibilità, mentre le istantanee possono essere utilizzate all'interno di una regione.

    Idealmente, con un'istantanea, se il server scende, è ansible lanciare un nuovo con l'ultima istantanea – in particolare se si separa il volume principale dai dati, un cattivo aggiornamento dovrebbe comportre un minimo di interruzioni (in quanto si trasferisci il volume EBS che contiene i tuoi dati – e prendi un'istantanea per conservare qualsiasi cosa che potrebbe essere danneggiata a causa della incoerenza).

    Come nota laterale, Amazon afferma che il tasso di fallimento dei volumi EBS aumenta con la quantità di dati modificati da loro rispetto all'ultima istantanea.

    Raccomandazioni finali

    • Utilizzate istantanee – sono grandi – riducono i tempi di fermo molto più di quanto lo causino
    • Separare i dati e il volume della radice, forse anche mettere i database sul proprio volume e snapshot prima degli aggiornamenti, se necessario
    • Utilizzare il bin-log per rimanere come 'caldo' ansible – caricare questo (compresso) in S3
    • Assicurati di get i dati fuori dall'istanza (anche se i dati sono intatti in un volume EBS, il volume stesso potrebbe essere temporaneamente inaccessibile).

    Lettura consigliata:

    • La pagina di Amazon su EBS
    • FAQ di EBS

    (Credo di aver scritto troppo, ma non ho detto abbastanza – ma speriamo che troviate qualcosa di degno di lettura).

    È ansible eseguire lo snapshot di un volume EBS in diretta , tuttavia è necessario accertarsi che il filesystem sia in uno stato coerente e quindi congelato mentre l'istantanea viene avviata. Non tutti i filesystems consentono questo, anche se è assolutamente ansible e costituisce la base della nostra soluzione di backup.

    Le istantanee di EBS sono anche piuttosto economiche in quanto solo addebitano i dati modificati e le tariffe dei dati sono molto ragionevoli dentro e fuori. Tenga presente, tuttavia, che questo si basa su un cambiamento di livello di block, quindi può cambiare piuttosto rapidamente. Questo è anche vero tra istantanee, solo i dati modificati tra le istantanee vengono addebitate. Per darti un'idea di costi, paghiamo <$ 10 al mese per l'archiviazione di istantanea e prendiamo istantanee quotidiane, mantenendo le ultime 7 giornate e gli scorsi mesi di istantanee settimanali e abbiamo due server che seguono questo schema (~ 20 istantanee, Dischi rigidi da 20 GB).

    Che ne dite di una soluzione di backup economica poco costosa come Zmanda Cloud Backup? Lo usiamo per eseguire il backup di circa 6 server e 1 SQL Server ed è solo circa 10 dollari al mese. È ansible crittografare i dati con un autoscatto e utilizzano s3 per memorizzare i dati (quindi non ci sono costi di trasferimento dati se si effettua il backup di EC2).

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.