Immagine di h.koppdelaney, Stuck in Custom e Hotfortech.
Una delle cose belle di Citrix Xen è che molte delle sue caratteristiche sono gratuito di carica. Detto questo, se si desidera la funzionalità "Protezione e recupero automatizzati VM", è necessario iniziare a pagare la licenza "Advance". Anche in questo caso, paghi solo i backup a livello del disco, che non sono sufficienti per molti tipi di carichi di lavoro come Active Directory, Database ed Etc. Per ovviare a ciò potresti desiderare il "Live memory snapshot and revert", che può salvare l'intero stato della macchina, incluso il contenuto della RAM. Tuttavia, questa funzione fa parte delle edizioni "Enterprise" e "Platinum", che sono ancora più costose. Non è che noi di HTG stiamo ignorando il valore di un vero software di backup, ma se hai un budget limitato e non ti preoccupi di alcuni tempi di inattività per l'operazione di backup, potresti trovare Xen-pocalypse una soluzione perfettamente ragionevole prima di fare l'impegno di bilancio.
Panoramica
Il "caso d'uso": hai un paio di macchine virtuali che richiedono un backup. Lo "spegnimento di una VM e l'esportazione come file" da "Xen Center" utilizzando i clic con il tasto destro funziona correttamente, ma si desidera che questo processo avvenga automaticamente e in base a una pianificazione. Questo script Bash utilizza il comando "XE" per eseguire i suoi compiti. XE è l'interfaccia della riga di comando Xen (CLI), equivalente automatico per l'emissione dei "clic destro" in "Xen Center". Chiameremo la sceneggiatura di Cron che fornirà la parte "scheduling". Nella sua forma più semplice, il flusso di backup è:
- Spegni la VM di destinazione.
- Esporta la VM come file nel percorso di backup.
- Se la VM è stata attivata, prima dell'avvio del backup, verrà riattivata.
Consente di ottenere cracking:)
Ottieni la sceneggiatura
Xen-pocalypse può essere liberamente ottenuto da github, usando i normali metodi git. Detto questo, se non sei ancora esperto in git, puoi prendere il file zip con questo link. Poiché lo script deve essere eseguito su uno dei tuoi server Xen, devi estrarlo lì in modo che le autorizzazioni di esecuzione vengano mantenute.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip unzip master
Mentre quanto sopra funzionerebbe, si consiglia di utilizzare il metodo GIT, in modo da poter beneficiare degli aggiornamenti futuri.
Ottieni SendEmail (opzionale)
Abbiamo scritto sul programma perl SendEmail in passato, quindi non c'è bisogno di reiterare qui. Basti dire che funziona allo stesso modo su Linux come su Windows.
Sebbene l'abilitazione della posta elettronica sia facoltativa, è altamente raccomandata in quanto lo script sarà in grado di:
- Informati quando è iniziato e finito in esecuzione.
- Avvisa di eventuali errori che è stato in grado di rilevare e gestire.
- Informare delle squalifiche di backup a causa di problemi di spazio. (Questo comportamento può essere disabilitato se non desiderato)
Scaricalo sul server Xen ed estrai.
wget https://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz tar xvzhf sendEmail-v1.56.tar.gz
Annota la posizione in cui l'hai estratto. Ne avrai bisogno per il file delle impostazioni.
Definire i tag
Citrix Xen ti dà la possibilità di configurare "Campi personalizzati" per le funzionalità di filtro. Creeremo i Field e poi li popoleremo con le informazioni usate da Xen-pocalypse. Xen-pocalypse riconosce 3 TAG di controllo che designano il nome del tag per il backup e le relazioni padre-figlio. Se non si intende utilizzare il metodo di input del file, è necessario creare almeno il campo del nome del tag di backup.
Per fare ciò, apri le proprietà del server o anche di una VM. Nel riquadro di navigazione, selezionare "Campi personalizzati".
Nota: I nomi dei campi personalizzati sono stati "hard coded" nello script, quindi NON DEVI allontanarti dallo spelling in alto, a meno che tu non modifichi anche il codice rilevante.
Una volta che tutti i campi sono stati creati, dovresti vedere:
Ora tutto ciò che devi fare è designare quali VM appartengono a "BackupTAG". Ad esempio, nella società in cui è stato sviluppato lo script, avevamo VM che dovevano essere sottoposte a backup settimanalmente il giovedì e il venerdì, un programma per le nostre VM dei prodotti Atlassian e alcune che dovevano essere sottoposte a backup solo una volta al mese. Quindi la nostra panoramica sembrava:
Genitori e figli (facoltativo)
La vera bellezza di questo script è che supporta relazioni "genitore" con "figlio". Cioè, è possibile impostare un elenco di macchine virtuali "figlio" che verrebbero disattivate e sottoposte a backup prima del genitore e che questi bambini verranno riattivati solo dopo che il genitore avrà terminato il backup e sarà tornato indietro sopra.Questo è utile nei casi in cui lo spegnimento della macchina virtuale padre causerà la mancata disponibilità del servizio nel figlio. Una cosa del genere significherebbe che il servizio sulla macchina virtuale figlio non sarebbe disponibile due volte, una volta per il processo di backup del figlio e una volta per quella del genitore. La creazione di questa relazione supera questo problema.
Ad esempio, tutte le nostre VM atlastiche utilizzavano una singola VM DataBase (DB), anch'essa impostata per il backup. Quindi, notando che la DB VM è un "Parent" delle altre VM, è possibile garantire un ordine corretto di arresto -> backup -> avvio.
Al momento della stesura di questo documento, questa funzione ha un paio di avvertenze:
- I nomi delle macchine virtuali che devono avere tale relazione non possono contenere spazi. Dovrai rimuovere spazi dai tuoi nomi VM, poiché saranno delimitati da spazi, come nell'esempio qui sotto.
- Ci può essere un solo genitore. Designarne più di uno non è nemmeno pianificato, per non parlare del fatto che è stato testato.
Per creare questa relazione, vai nelle proprietà della VM. Se questo è un "genitore", scrivi chi sono i suoi figli e se questo è un "bambino", scrivi chi è il suo genitore. Per esempio:
Il metodo FILE (Opzionale)
Per ragioni storiche, Xen-pocalypse supporta anche il recupero dell'elenco di macchine virtuali da sottoporre a backup come file di testo. Mentre il "codice" è ancora lì, la funzionalità è severamente inferiore al metodo TAG e quindi non è raccomandato. Detto questo, se si preferisce utilizzare il metodo elenco per qualche motivo, si applicano le seguenti restrizioni:
- I nomi delle macchine virtuali non possono contenere spazi o caratteri speciali.
- Può esserci un solo nome VM per riga.
- Le righe vuote non sono consentite.
Per generare l'elenco, copia il nome della VM dal centro Xen o esegui su un host Xen:
xe vm-list | grep name-label | awk
'{ print $4 }' | sort
Copia l'elenco sopra in un normale file di testo.
La posizione di backup
Mentre percorrendo a caso in Citrix Xen, ho trovato che i Repository di archiviazione (SR) sono disponibili per l'uso in "/ var / run / sr-mount /% UUID%" dove UUID è l'identificativo univoco della SR, che può essere ottenuto dalla GUI.
Questo significa che possiamo usare la normale procedura guidata "Avanti -> Avanti -> Fine" per creare il mount nella posizione di backup desiderata, e poi fare in modo che lo script usi quel percorso (come richiesto per fare confusione con il montaggio dalla riga di comando), ma facendo così è oltre lo scopo di questa guida.
Per creare una nuova "montatura", fare clic con il pulsante destro del mouse sul nome del server e selezionare Nuovo SR.
Ottieni l'UUID della SR
Per ottenere l'UUID di SR, è sufficiente fare clic sul suo nome in Xen Center e andare alla scheda "Generale".
Configura il file delle impostazioni.
Il progetto Xen-pocalypse viene fornito in bundle con un modello di file "impostazioni". Questo modello deve essere modificato per riflettere la configurazione e passato come primo argomento allo script. Il file delle impostazioni designa quanto segue:
Il metodo per ottenere le macchine virtuali da sottoporre a backup - Il metodo predefinito è TAG. Puoi cambiarlo in FILE, ma questo non è raccomandato.
La posizione della destinazione di backup: se hai seguito la guida fino a questo punto, devi solo sostituire% UUID% con gli SR come è stato ottenuto da sopra.
La posizione di SendEmail - Se hai scelto di abilitare Email, devi inserire dove hai estratto qui l'eseguibile perl.
Dettagli email -Di nuovo, se hai abilitato la posta elettronica, devi definire dettagli come: A, Da, Nomeserver / IP & etc '.
Compressione - Questa opzione è impostata su "No" per impostazione predefinita, poiché durante l'attivazione produrrà un file di backup più piccolo, causerà inoltre l'esecuzione della procedura di backup per un periodo di tempo considerevolmente più lungo.
Controlla lo spazio libero sulla destinazione - Ciò consentirà allo script di verificare che l'esecuzione del backup della VM non comporterà uno spazio libero di backup inferiore a 10 GB. Questo è fatto per garantire il maggior numero di VM di cui è stato eseguito il backup invece di una sola VM molto grande. Il calcolo viene eseguito utilizzando la dimensione totale del disco totale di tutti gli HD associati alla VM.
Debug - L'impostazione predefinita prevede che il debug sia disattivato con il valore "0" (zero). Non dovresti aver bisogno di accenderlo, ma se lo fai, maggiori informazioni sono indicate nel segmento di risoluzione dei problemi.
Esecuzione / Pianificazione
Nella sua forma più semplice, l'invocazione di Xen-Pocalypse sarebbe simile a:
./Xen-backup.sh settings.cfg weekly-fri
Nel caso precedente, siamo all'interno della directory che contiene lo script e il file delle impostazioni. Il "Tag" che lo script cercherà è "settimanale-fri".
Come indicato sopra, utilizzeremo Cron per pianificare l'esecuzione. Prima di entrare nella configurazione, lo è altamente raccomandato che si configura il pacchetto SSMTP già installato sul server Xen. Anche se questo è un passaggio facoltativo, così facendo otterrai un collettore di risciacquo. Avere un tale "collettore di risucchio" può avvisarti di cose che lo script non è in grado di fare.
Entra nella modifica di cron di più emettendo:
crontab -e
Se hai seguito le istruzioni sopra e vuoi aggiungere un backup programmato per Venerdì alle 18:01 (18:01), inserisci quanto segue:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-fri
Quanto sopra è corretto assumendo che lo script e il file delle impostazioni siano entrambi in "/ root / Xen-pocalypse-master /".
Risoluzione dei problemi
Mentre ho fatto un sacco di sforzi per rendere lo script facile da usare e il più infallibile possibile, "Il mondo è un laboratorio più grande". Le seguenti informazioni possono aiutarti a capire qual è la fonte dei tuoi problemi.
Progresso
Potresti voler usare questa fodera per "osservare" rapidamente tutte le attività in corso, per vedere se effettivamente progrediscono del tutto o se sono effettivamente bloccate.
while [ -e /dev/null ]; do for VM in '$( xe task-list | grep uuid | awk '{print $5}' )'; do xe task-param-get param-name=progress uuid=$VM;sleep 1; done; done
Per smettere di guardare, usa Ctrl + C per frenare il "ciclo while".
Registrazione
Tutta la "registrazione" viene raccolta dall'host Xen che esegue lo script nel meccanismo syslog. Questo ovviamente può essere visto con:
less +F /var/log/messages
Stai cercando la parola chiave "Xen-pocalypse".
Nota: Citrix ha impostato un criterio di conservazione di due (2) giorni per syslog dei suoi server. Potresti volerlo tenere a mente per i post mortem.
Debug
Come indicato nel segmento dei file delle impostazioni, esiste una direttiva per abilitare il debug. L'abilitazione del debug causerà lo script di eseguire la registrazione dettagliata alla console e castrarla dall'invio di e-mail e l'effettiva esecuzione delle esportazioni, a meno che non siano impostati anche i flag rilevanti. I possibili flag sono indicati nel modello di file delle impostazioni e consentono di definire in modo granulare ciò che si desidera eseguire il debug.
Spero che tu non abbia avuto bisogno di debugging e stai raccogliendo i frutti del mio lavoro:)
Spinta, amico mio, stai per diventare un decepticon numero uno …