If-Koubou

Cum de a face backup pentru Citrix Xen VM gratuit cu Xen-pocalypse (Bash)

Cum de a face backup pentru Citrix Xen VM gratuit cu Xen-pocalypse (Bash) (Cum să)

Ați avut vreodată nevoie să vă salvați mașinile virtuale Citrix Xen (VMs), dar nu ați vrut să le rupeți banca? HTG are doar scriptul bash pentru tine cu Xen-pocalypse.

Imagine de h.koppdelaney, Stuck în Custom și Hotfortech.

Unul dintre lucrurile frumoase din Citrix Xen este că multe dintre caracteristicile sale sunt liber de încărcare. Cu aceasta a spus, dacă doriți funcția "Protecție VM automată și recuperare", va trebui să începeți să plătiți pentru licența "Advance". Chiar și atunci, plătiți numai pentru copii de rezervă pe disc, care nu sunt suficiente pentru multe tipuri de încărcări de lucru cum ar fi directorul activ, bazele de date și altele. Pentru a depăși acest lucru, este posibil să doriți "instantaneu de memorie live și revenire" starea mașinii, inclusiv conținutul RAM. Cu toate acestea, această caracteristică face parte din edițiile "Enterprise" și "Platinum", care sunt și mai scumpe. Nu este faptul că noi, cei de la HTG, eliminăm valoarea unui software de backup adevărat, dar dacă aveți un buget redus și nu vă deranjează unele perioade de nefuncționare pentru operațiunea de rezervă, ați putea găsi Xen-pocalypse ca fiind o soluție perfect rezonabilă înainte de a vă angaja bugetul.

Prezentare generală

"Cazul de utilizare": Aveți câteva VM care necesită o copie de rezervă. "Dezactivarea unui VM și exportul acestuia ca fișier" din "Centrul Xen" utilizând clicurile drepte funcționează bine, dar doriți ca acest proces să se întâmple automat și într-un program. Acest script Bash utilizează comanda "XE" pentru a-și îndeplini atribuțiile. XE este interfața liniei de comandă Xen (CLI), echivalentă automată pentru emiterea "clicurilor drepte" din "Centrul Xen". Vom numi scenariul de la Cron, care va furniza partea "programare". În cea mai simplă formă, fluxul de rezervă este:

  • Opriți VM-ul țintă.
  • Exportați VM ca fișier în locația de rezervă.
  • Dacă modulul VM a fost activat, înainte ca backupul să înceapă, acesta va fi repornit.

Permiteți-vă să crăpați :)

Obțineți scriptul

Xen-pocalypse poate fi obținută în mod liber de la github, folosind metodele obișnuite de git. Cu acest lucru a spus, dacă nu sunteți versat în git încă, puteți lua fișierul zip cu acest link. Deoarece scriptul trebuie să ruleze pe unul dintre serverele dvs. Xen, ar trebui să îl extrageți acolo pentru ca permisiunile de execuție să fie păstrate.

wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master

În timp ce cele de mai sus ar funcționa, vă recomandăm să utilizați metoda GIT, pentru a beneficia de actualizări viitoare.

Obțineți SendEmail (opțional)

Am scris în trecut despre programul Perl SendEmail, deci nu este nevoie să reiterez aici. Suficient să spunem că funcționează la fel ca și în Windows.

În timp ce activarea e-mailului este opțională, este foarte recomandat, deoarece scriptul va putea:

  • Informați-vă când a început și a terminat să fie difuzat.
  • Vă avertizează despre eventualele erori pe care a fost capabil să le detecteze și să le manipuleze.
  • Informați despre descalificări de rezervă datorate problemelor legate de spațiu. (Acest comportament poate fi dezactivat dacă nu este dorit)

Descărcați-l pe serverul Xen și extrageți-l.

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz

Rețineți locația în care ați extras-o. Veți avea nevoie de el pentru fișierul de setări.

Definirea etichetelor

Citrix Xen vă oferă posibilitatea de a configura "câmpurile personalizate" pentru capacitățile de filtrare. Vom crea Câmpurile și apoi le vom ocupa cu informațiile utilizate de Xen-pocalypse. Xen-pocalypse recunoaște trei TAG-uri de control care desemnează numele etichetei pentru copii de rezervă și relațiile părinte-copil. Dacă nu intenționați să utilizați metoda de introducere a fișierelor, trebuie să creați cel puțin câmpul cu nume de etichetă de rezervă.

Pentru a face acest lucru, deschideți proprietățile serverului sau chiar ale unui VM. În panoul de navigare, selectați "Câmpuri personalizate".

Dacă aceasta este prima dată când definiți o relație (ca în exemplul de mai sus), nu veți avea câmpuri de introducere a datelor, deci trebuie să le creați. Pentru a face acest lucru, faceți clic pe "Editare câmpuri personalizate" în caseta de dialog care apare, faceți clic pe "Add ..."

Creați trei câmpuri de tip "Text". Unul se va numi "BackupTAG", iar ceilalți "Parent" și "Children".

Notă: Numele câmpurilor personalizate au fost "codate greu" în scenariu, deci nu trebuie să se abată de la ortografia de mai sus, cu excepția cazului în care schimbați și codul relevant.

Odată ce toate câmpurile au fost create, ar trebui să vedeți:

Închideți fereastra. Acum trebuie să completați câmpurile "BackupTAG", "Parent" și "Children", ca în imaginea de mai jos.

Acum, tot ce trebuie să faceți este să desemnați ce VM aparțin la ceea ce "BackupTAG".
De exemplu, în compania unde a fost creat scenariul, am avut VM care urmau să fie susținute săptămânal joi și vineri, un program pentru VM-urile produselor Atlassian și unele care urmau să fie susținute numai lunar. Așadar, părerea noastră a fost:

În cazul în care, de exemplu, "weekly-fri" a fost textul introdus în câmpul "BackupTAG" "Custom Field". Nu-i așa? :)

Părinți și copii (opțional)

Frumusețea reală a acestui script este că susține relațiile "părinte" cu "copil". Aceasta înseamnă că este posibil să setați o listă de VM-uri "copil" care ar fi dezactivate și susținute înaintea părintelui și că acești copii vor fi reporniți numai după ce părintele și-a terminat copia de rezervă și a fost întors pe.Acest lucru este util în cazurile în care oprirea VM părinte va determina ca serviciul copilului să devină indisponibil. Un astfel de lucru ar însemna că serviciul pentru copilul VM ar fi indisponibil de două ori, o dată pentru procesul de copiere a copilului și o dată pentru părinți. Crearea acestei relații depășește această problemă.

De exemplu, toate VM-urile Atlassian au folosit o singură DataBase (DB) VM, care a fost, de asemenea, setată să fie susținută. Prin urmare, observând că DB VM este un "Parent" pentru celelalte VM-uri, poate fi asigurată o ordine adecvată de oprire -> backup -> startup.

La momentul acestei scrieri, această funcție are câteva rezerve:

  1. Numele VM care trebuie să aibă o astfel de relație nu pot conține spații. Va trebui să eliminați spațiile din numele VM, deoarece acestea vor fi delimitate de spațiu, ca în exemplul de mai jos.
  2. Pot exista doar un părinte. Desemnarea a mai mult de unu nu este chiar planificat pentru, ca să nu mai vorbim de testat.

Pentru a crea această relație, accesați proprietățile VM. Dacă acesta este un "părinte", scrie cine sunt copiii lui și dacă acesta este un "copil", scrie cine este părintele său. De exemplu:

Notă: Dacă nu se desemnează un părinte pentru un copil, copilul poate fi pornit înainte ca părintele să fie gata și ar putea provoca o dublare a acestuia.

Metoda FILE (opțional)

Din motive istorice, Xen-pocalypse susține, de asemenea, obținerea listei de VM-uri care vor fi salvate ca fișiere text. În timp ce "codul" este încă acolo, funcționalitatea este foarte inferioară metodei TAG și, prin urmare, nu este recomandată. Cu aceasta, dacă preferați să folosiți metoda din listă dintr-un anumit motiv, se aplică următoarele restricții:

  1. Numele VM nu pot conține spații sau caractere speciale.
  2. Pe fiecare linie poate exista un singur nume VM.
  3. Nu sunt permise linii goale.

Pentru a genera lista, copiați numele VM-ului din centrul Xen sau executați pe o gazdă Xen:

xe vm-list | grep nume-etichetă | awk 'print $ 4' | fel

Copiați lista de mai sus într-un fișier text obișnuit.

Locația de rezervă

În timp ce încercam în mod aleatoriu în Citrix Xen, am constatat că depozitele de depozitare (SRs) sunt disponibile pentru utilizare sub "/ var / run / sr-mount /% UUID%" unde UUID este identificatorul unic al SR obținută din GUI.

Acest lucru înseamnă că putem folosi expertul obișnuit "Next -> Next -> Finish" pentru a crea mountul în locația de salvare dorită și apoi utilizați scriptul ca acel traseu (așa cum este recomandat pentru a fi confundat cu montarea din linia de comandă), dar deci este dincolo de sfera acestui ghid.

Pentru a crea o nouă "mount", faceți clic dreapta pe numele serverului și selectați New SR.

În acest exemplu, vom arăta Xen la o partajare Windows, deci alegeți "Partajarea de fișiere Windows (CIFS)":

Finalizați Următorul -> Următorul -> Finalizare.

Obțineți UUID-ul SR

Pentru a obține un UUID al SR, trebuie doar să dați clic pe numele său în Centrul Xen și să accesați fila "General".

Pentru a copia UUID-ul, faceți clic dreapta pe el și alegeți "copy".

Cu aceste informații la îndemână, sunteți gata să editați fișierul de setări.

Configurați fișierul Setări.

Proiectul Xen-pocalypse vine însoțit de un șablon de fișier "setări". Acest șablon ar trebui să fie modificat pentru a reflecta setarea dvs. și a fost trecut ca primul argument pentru scenariu. Fișierul de setări desemnează următoarele:

Metoda pentru obținerea copiilor virtuale de rezervat - Metoda implicită este TAG-urile. Puteți schimba acest lucru la FILE, dar acest lucru nu este recomandat.

Locația din destinația de rezervă - Dacă ați urmat ghidul la acest punct, trebuie doar să înlocuiți% UUID% cu SR, așa cum a fost obținut de mai sus.

Locația SendEmail - Dacă ați optat pentru activarea e-mailului, trebuie să introduceți aici unde ați extras executabilul perl aici.

Detalii e-mail -Din nou, dacă ați activat e-mailul, trebuie să definiți detalii precum: To, From, Servername / IP & etc '.

Comprimare - Acest lucru este setat la "No" în mod implicit, deoarece, în timp ce îl permite, va produce un fișier de copie mai mic, va determina, de asemenea, procedura de backup să ruleze pentru o perioadă considerabilă mai mare de timp.

Verificați spațiul liber pe destinație - Acest lucru va permite scriptului să verifice că realizarea copiei de rezervă a lui VM nu va cauza spațiul liber al locației de salvare să scadă sub 10 GB. Acest lucru se face pentru a asigura că cea mai mare cantitate de VP sunt susținute în loc de un singur VM foarte mare. Calculul se face folosind totalul dimensiunii brute a tuturor HD-urilor asociate cu VM.

Debugging - implicit este ca debugging-ul să fie oprit cu valoarea "0" (zero). Nu trebuie să activați acest lucru, dar dacă faceți acest lucru, mai multe informații sunt notate în segmentul de depanare.

Executie / Programare

În cea mai simplă formă, o invocare a Xen-pocalypse ar arăta astfel:

./ Xen-backup.sh settings.cfg săptămânal-fri

În cazul în care, în cazul de mai sus, suntem în interiorul directorului care deține script-ul și fișierul de setări. "Tag-ul" pe care scenariul îl va căuta este "weekly-fri".

După cum sa menționat mai sus, vom folosi Cron pentru a programa execuția. Înainte de a intra în configurație, este foarte recomandat că configurați pachetul SSMTP deja instalat pe serverul Xen. În timp ce acesta este un pas opțional, acest lucru vă va oferi un colector de spate. Având un astfel de "colector de spate" vă poate alerta despre lucrurile pe care scriptul nu le poate face.

Intrați în editarea cronului mai mult prin emiterea:

crontab -e

Dacă ați respectat instrucțiunile de mai sus și doriți să adăugați o rezervă programată pentru vineri la 18:01 (6:01 PM), introduceți următorul text:

01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh/root/Xen-pocalypse-master/settings.cfg săptămânal-fri

Cele de mai sus sunt corecte, presupunând că scriptul și fișierul de setări sunt ambele sub "/ root / Xen-pocalypse-master /".

Depanare

În timp ce am depus multe eforturi pentru a face scriptul la fel de ușor de folosit și cât de greu posibil, "Lumea este un laborator mai mare". Informațiile de mai jos vă pot ajuta să aflați care este sursa problemelor dvs.

progres

S-ar putea să doriți să utilizați un singur căptușeală pentru a "urmări" rapid toate sarcinile în curs de desfășurare, pentru a vedea dacă acestea progresează de fapt, deloc sau dacă sunt de fapt blocate.

în timp ce [-e / dev / null]; faceți pentru VM în "$ (xe task-list | grep uuid | awk 'print $ 5')"; do xe sarcină-param-get param-name = progres uuid = $ VM; somn 1; Terminat; Terminat

Pentru a opri vizionarea, utilizați Ctrl + C pentru a frâna "în timp ce bucla".

Logging

Toate "înregistrările" sunt colectate de către gazda Xen care execută scriptul în mecanismul syslog. Aceasta, desigur, poate fi vizualizată cu:

mai puțin + F / var / jurnal / mesaje

Căutați cuvântul cheie "Xen-pocalypse".

Notă: Citrix a stabilit o politică de păstrare a două zile pentru syslog-ul serverelor sale. Poate doriți să păstrați asta în minte pentru postmortemuri.

Debugging

După cum se menționează în segmentul de fișiere de setări, există o directivă care permite depanarea. Activarea depanării va determina scriptul să realizeze înregistrarea detaliată în consola și să-l castreze de la trimiterea de e-mailuri și de la efectuarea exporturilor, cu excepția cazului în care sunt setate și steagurile relevante. Steagurile posibile sunt notate în șablonul de fișiere de setări și vă permit să definiți granular ceea ce doriți să depanați.

Sper că nu aveți nevoie de depanare și că veți culege roadele muncii mele :)

Împing, omul meu, sunteți pe punctul de a deveni decepticonul numărul unu ...