Pagina principala » HOWTO » 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)

    Ai trebuit vreodată să faci backup pentru mașinile virtuale Citrix Xen (VMs), dar nu ai vrut să spargi banca să o faci? 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 caracteristica "Protecție VM automată și recuperare", ar trebui să începeți să plătiți pentru licența "Advance". Chiar și atunci, plătiți doar pentru backup-uri la nivel de 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 memoriei RAM. Cu toate acestea, această caracteristică face parte din edițiile "Enterprise" și "Platinum", care sunt și mai scumpe. Nu este faptul că noi de la HTG suntem concediați de valoarea unui software de backup adevărat, dar dacă sunteți într-un buget restrâns și nu vă deranjează unele timpi 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" de la "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:

    • Dezactivați obiectivul VM.
    • 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. Este suficient să spunem că funcționează la fel ca pe Linux ca și în Windows.

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

    • Vă informează 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ările de rezervă din cauza 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 vom popula 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 pentru numele etichetei 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 (3) câmpuri 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ă vă abateți de la ortografia de mai sus, cu excepția cazului în care modificați codul corespunzător.

    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 a 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 arătat:

    Î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". Asta este, este posibil să se stabilească 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, poate fi asigurată o ordine adecvată de oprire -> backup -> startup.

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

    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. Nu poate exista decât un părinte. Desemnarea a mai mult de unu nu este chiar planificat pentru, 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ău să fie gata și ar putea face ca acesta să fie susținut de două ori.

    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 cu mult inferioară metodei TAG și, prin urmare, nu este recomandată. Cu aceasta a spus, dacă preferați să utilizați metoda de listă dintr-un anumit motiv, se aplică următoarele restricții:

    1. Numele VM-urilor 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.

    Locul 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.

    Aceasta înseamnă că putem folosi expertul obișnuit "Next -> Next -> Finish" pentru a crea mount-ul în locația de salvare dorită și apoi utilizați scriptul ca cale (așa cum este recomandat pentru a muri 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 într-o partajare Windows, deci alegeți "Partajarea fișierelor Windows (CIFS)":

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

    Obțineți UUID-ul SR

    Pentru a obține un UUID al SR, faceți clic pe numele său în Centrul Xen și 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 pregătit 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 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 despre e-mail - Din nou, dacă ați activat e-mailul, trebuie să definiți detalii cum ar fi: To, From, Servername / IP & etc '.

    Comprimare - Acest lucru este setat la "Nu" în mod prestabilit, deoarece, în timp ce îl permite, va produce un fișier de copie mai mic, va provoca, de asemenea, procedura de salvare pentru o perioadă de timp considerabilă mai mare.

    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 se asigura că cea mai mare cantitate de VM-uri 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  - În mod prestabilit, debugging-ul este oprit cu valoarea "0" (zero). Nu ar trebui să activați acest lucru, dar dacă faceți acest lucru, se observă mai multe informații î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".

    Așa cum am 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 dvs. Xen. Deși acest lucru este un pas opțional, acest lucru vă va oferi un colector de spate. A avea un astfel de "colector de spate" vă poate avertiza despre lucrurile pe care scenariul nu le poate face.

    Intrați în editarea cron 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ă 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 m-am străduit să fac scenariul la fel de ușor de utilizat ș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 desfășurare, pentru a vedea dacă acestea progresează deloc sau dacă sunt de fapt blocate.

    în timp ce [-e / dev / null]; 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 să permită 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 efectuare a exporturilor, cu excepția cazului în care sunt de asemenea setate steagurile relevante. Steagurile posibile sunt notate în șablonul fișier de setări și vă permit să definiți în detaliu ce doriți să depanați.

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


    Împingeți, omule, sunteți pe punctul de a deveni decepticonul numărul unu ...