Sådan sikkerhedskopieres Citrix Xen VM'er gratis med Xen-pocalypse (Bash)
Har du nogensinde brug for at sikkerhedskopiere dine Citrix Xen Virtual Machines (VM'er), men ønskede ikke at bryde banken med at gøre det? HTG har lige bash scriptet til dig med Xen-pocalypse.
Billede af h.koppdelaney, Fast i Custom og Hotfortech.
En af de gode ting i Citrix Xen er, at mange af dens funktioner er ledig af afgift. Med det sagt, hvis du vil have funktionen "Automatiseret VM beskyttelse og opsving", skal du begynde at betale for "Advance" -licensen. Alligevel betaler du kun for diskniveauer, der ikke er tilstrækkelige til mange typer arbejdsbyrder som Active Directory, Databaser og andet. For at overvinde dette kan du muligvis "Live memory snapshot og returnere", som kan gemme hele maskin tilstand, herunder indholdet af RAM. Denne funktion er dog en del af "Enterprise" og "Platinum" udgaverne, som er endnu dyrere. Det er ikke, at vi ved HTG afviser værdien af en ægte backup-software, men hvis du er på et stramt budget og ikke har noget imod nedetid til backupoperationen, kan du finde Xen-pocalypse at være en perfekt løsning før du laver budgetforpligtelsen.
Oversigt
"Anvendelsessagen": Du har et par VM'er, der kræver en backup. "Sluk en VM og eksportere den som en fil" fra "Xen Center" ved hjælp af højre klik fungerer ok, men du vil have denne proces til at ske automatisk og på en tidsplan. Dette Bash-script bruger kommandoen "XE" til at udføre sine opgaver. XE er Xen-kommandolinjegrænsefladen (CLI), som automatisk svarer til udstedelse af "højre klik" i "Xen Center". Vi vil kalde scriptet fra Cron, som vil levere "planlægning" -delen. I sin enkleste form er backup flowet:
- Sluk målet VM.
- Eksporter VM'en som en fil til sikkerhedskopieringsstedet.
- Hvis VM'en var tændt, vil den blive tændt, før sikkerhedskopieringen startede.
Lader få krakning :)
Hent scriptet
Xen-pocalypse kan frit opnås fra github ved hjælp af de regelmæssige gitmetoder. Med det sagt, hvis du ikke er kyndig i git endnu, kan du gribe zip-filen med dette link. Da scriptet skal køre på en af dine Xen-servere, skal du udpakke det der, så eksekveringsrettighederne bevares.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Mens ovenstående ville fungere, anbefales du at bruge GIT-metoden, så du kan få gavn af fremtidige opdateringer.
Hent SendEmail (valgfrit)
Vi har tidligere skrevet om SendEmail Perl-programmet, så der er ingen grund til at gentage her. Det er nok at sige, det virker på samme måde på Linux som det gør på Windows.
Mens aktivering af e-mail er valgfrit, anbefales det stærkt, da scriptet vil kunne:
- Informer dig, når den startede og afsluttede med at køre.
- Advarer dig om eventuelle fejl, det var i stand til at opdage og håndtere.
- Informer om diskvalifikation af backup på grund af rumproblemer. (Denne adfærd kan deaktiveres, hvis ikke ønsket)
Hent det til Xen-serveren og uddrag.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tjære xvzhf sendEmail-v1.56.tar.gz
Bemærk, hvor du har hentet den til. Du skal bruge det til indstillingsfilen.
Definerer Tags
Citrix Xen giver dig mulighed for at konfigurere "Custom Fields" til filtrering af evner. Vi vil oprette felterne og derefter fylde dem med de oplysninger, der bruges af Xen-pocalypse. Xen-pocalypse genkender 3 kontrol TAG'er, som angiver navnet på taggen til backup og forældrenes forhold til børn. Hvis du ikke har til hensigt at bruge filindlæsningsmetoden, skal du i det mindste oprette feltet til sikkerhedskopimærkets navn.
For at gøre dette skal du åbne serverens eller endda en VMs egenskaber. I navigationsruden skal du vælge "Brugerdefinerede felter".
Hvis dette er første gang du definerer et forhold (som i eksemplet ovenfor), har du ikke nogen felter til at indtaste data i, så du skal oprette dem. For at gøre dette skal du klikke på "Rediger brugerdefinerede felter" i dialogboksen, der dukker op, klik på "Tilføj ..."
Opret tre (3) "Tekst" type felter. Den ene vil blive kaldt "BackupTAG" og de andre "Forældre" og "Børn".
Bemærk: Navne på de brugerdefinerede felter er blevet "hardkodede" i scriptet, så du må ikke afvige fra stavningen ovenfor, medmindre du også ændrer den relevante kode.
Når alle felter er oprettet, skal du se:
Luk vinduet. Du skal nu have "BackupTAG", "Parent" og "Children" felterne til at fylde, som i billedet nedenfor.
Nu er alt hvad du skal gøre, udpege hvilke VM'er tilhører hvad "BackupTAG".
For eksempel i firmaet hvor scriptet blev vokset, havde vi VM'er, der skulle sikkerhedskopieres ugentligt torsdag og fredag, en tidsplan for vores Atlassian-produkt VM'er og nogle, der skulle sikkerhedskopieres kun månedligt. Så vores overblik lignede:
Hvor for eksempel "weekly-fri" var den tekst, vi har indsat i "BackupTAG" "Custom Field". Pænt hej? :)
Forældre og børn (valgfrit)
Den egentlige skønhed i dette script er, at den understøtter "forælder" til "barn" -relationer. Det vil sige, at det er muligt at indstille en liste over "barn" VM'er, der ville være slukket og sikkerhedskopieret før forældrene, og at disse børn kun vil blive slået tilbage, når forældren har afsluttet sin backup og er blevet vendt tilbage på. Dette er nyttigt i tilfælde, hvor afbrydelse af forælder VM vil medføre, at tjenesten i barnet bliver utilgængelig. En sådan ting ville betyde, at tjenesten på barnet VM ville være utilgængelig to gange, en gang for barnets backup proces og en gang for forældrenes. Oprettelse af dette forhold overvinder dette problem.
For eksempel brugte alle vores Atlassian VM'er en enkelt DataBase (DB) VM, som også blev sat til sikkerhedskopiering. Så ved at bemærke, at DB VM er en "Forældre" til de andre VM'er, kan der sikres en ordentlig afslutning af opsving -> backup -> opstart,.
På tidspunktet for denne skrivning har denne funktion et par forbehold:
- Navne på de VM'er, der skal have et sådant forhold, kan ikke indeholde mellemrum. Du bliver nødt til at fjerne mellemrum fra dine VM navne, for de vil blive afgrænset i rummet, som i eksemplet nedenfor.
- Der kan kun være en forælder. At udpege mere end en er ikke engang planlagt for, for ikke at nævne testet.
For at oprette dette forhold, gå ind i VM's egenskaber. Hvis dette er en "forælder", skriv hvem dets børn er, og hvis dette er et "barn", skriv hvem hans forælder er. For eksempel:
Bemærk: Hvis du ikke angiver en forælder for et barn, kan barnet blive startet, før dets forælder er klar, og det kan medføre, at det bliver sikkerhedskopieret to gange.
FIL-metoden (valgfri)
Af historiske grunde understøtter Xen-pocalypse også at få listen over VM'er til at blive sikkerhedskopieret som en tekstfil. Mens "koden" stadig er der, er funktionaliteten alvorligt ringere end TAGs-metoden, og derfor anbefales det ikke. Med det sagt, hvis du foretrækker at bruge listemetoden af en eller anden grund, gælder følgende begrænsninger:
- Navne på VM'erne kan ikke indeholde mellemrum eller specialtegn.
- Der kan kun være et VM-navn pr. Linje.
- Blanke linjer er ikke tilladt.
For at generere listen skal du enten kopiere VM's navn fra Xen-centret eller udføre på en Xen-vært:
xe vm-list | grep name-label | awk
'print $ 4' | sortere
Kopier listen ovenfor til en almindelig tekstfil.
Sikkerhedsstedet
Mens jeg tilfældigt slog rundt i Citrix Xen, har jeg fundet ud af, at Storage Repositories (SRs) er tilgængelige til brug under "/ var / run / sr-mount /% UUID%", hvor UUID er den unikke identifikator af SR, som kan være opnået fra GUI.
Det betyder, at vi kan bruge den almindelige guiden Next -> Next -> Finish til at oprette mounten til den ønskede backupplacering, og derefter bruge scriptet til at bruge den pågældende sti (som det er tilfældet med at knuse med montering fra kommandolinjen) det er også uden for denne vejledning.
For at oprette en ny "mount" skal du højreklikke på servernavnet og vælge Ny SR.
I dette eksempel vil vi pege Xen til en Windows-del, så vælg "Windows Fildeling (CIFS)":
Udfyld Næste -> Næste -> Afslut.
Hent SR's UUID
For at opnå en SR's UUID skal du blot klikke på dens navn i Xen Center og gå til fanen "Generelt".
For at kopiere UUID skal du blot højreklikke på det og vælge "kopi".
Med disse oplysninger ved hånden er du klar til at redigere indstillingsfilen.
Konfigurer indstillingsfilen.
Xen-pocalypse-projektet leveres sammen med en "indstillinger" -filskabelon. Denne skabelon skal redigeres for at afspejle dit opsætning og bestået som det første argument til scriptet. Indstillingsfilen angiver følgende:
fremgangsmåden for at få de VM'er, der skal sikkerhedskopieres - Standardmetoden er TAG'er. Du kan ændre dette til FILE, men det anbefales ikke.
Stedet af backup destinationen - Hvis du har fulgt vejledningen til dette punkt, skal du kun erstatte% UUID% med SR'erne, som det blev opnået ovenfra.
Placeringen af SendEmail - Hvis du har valgt at aktivere Email, skal du indtaste, hvor du har hentet den eksekverbare perl her.
Email detaljer - Igen, hvis du har aktiveret e-mail, skal du definere detaljer som: Til, Fra, Servernavn / IP & etc '.
Compression - Dette er som standard indstillet til "Nej", fordi det vil medføre, at backupproceduren løber i betydeligt længere tid, mens du aktiverer det, vil producere en mindre sikkerhedskopieringsfil..
Kontroller ledig plads på destinationen - Dette vil få scriptet til at kontrollere, at oprettelsen af VM's backup ikke vil medføre, at backuppladsens ledige plads falder under 10 GB. Dette gøres for at sikre, at de fleste VM'er bliver sikkerhedskopieret i stedet for kun en meget stor VM. Beregningen er udført ved hjælp af bruttodiskstørrelsen af alle de HD'er, der er forbundet med VM.
debugging - Standard er, at debugging er slukket med værdien "0" (nul). Du skal ikke tænde for dette, men hvis du gør det, er der flere oplysninger i fejlfindingssegmentet.
Udførelse / planlægning
I sin enkleste form ville en opfordring til Xen-pocalypse se ud som:
./Xen-backup.sh settings.cfg ugentlig-fri
Hvor i ovenstående tilfælde er vi inde i den mappe, der indeholder scriptet og indstillingsfilen. "Tag" scriptet vil kigge efter, er "weekly-fri".
Som nævnt ovenfor bruger vi Cron til at planlægge udførelsen. Før vi går ind i konfigurationen, er det højt anbefalet at du konfigurerer den allerede installerede SSMTP-pakke på din Xen-server. Selv om dette er et valgfrit trin, vil det give dig en backwash collector. At have en sådan "backwash collector" kan være opmærksom på ting, som scriptet ikke kan.
Indtast i crons redigering mere ved at udstede:
crontab -e
Hvis du har fulgt ovenstående instruktioner, og du vil tilføje en planlagt backup til fredag kl 18:01 (6:01 PM), skal du indtaste nedenstående:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg ugentlig-fri
Ovenstående er korrekt, forudsat at din script og indstillingsfil er begge under "/ root / Xen-pocalypse-master /".
Fejlfinding
Selvom jeg har lagt meget på at gøre scriptet så nemt at bruge og så idiotsikkert som muligt, "Verden er et større laboratorium". Oplysningerne nedenfor kan hjælpe dig med at finde ud af, hvad der er årsagen til dine problemer.
Fremskridt
Du vil muligvis bruge denne ene liner til hurtigt at "se" alle de igangværende opgaver for at se om de rent faktisk skrider frem, eller hvis de rent faktisk sidder fast.
mens [-e / dev / null]; gør for VM i "$ (xe task-list | grep uuid | awk 'print $ 5')"; gør xe task-param-get param-name = fremskridt uuid = $ VM; sove 1; Færdig; Færdig
For at stoppe med at se, brug Ctrl + C til at bremse "while loop".
Logning
Alle "logging" indsamles af Xen-værten, der kører scriptet i syslog-mekanismen. Dette kan selvfølgelig ses med:
mindre + F / var / log / beskeder
Du leder efter nøgleordet "Xen-pocalypse".
Bemærk: Citrix har indstillet en 2-dages retentionspolitik for syslog af sine servere. Du vil måske gerne huske på postmortemer.
debugging
Som angivet i indstillingsfilsegmentet er der et direktiv til at aktivere fejlfinding. Aktivering af debugging vil medføre, at scriptet udsender verbose logging til konsollen og castrere den fra at sende e-mails og faktisk udføre eksporten, medmindre de relevante flag også er indstillet. De mulige flag er noteret i indstillingsfilskabelonen, og de giver dig mulighed for at definere, hvad du vil fejle, med granulering.
Det er mit håb, at du ikke har brug for nogen fejlfinding, og du høster frugterne af mit arbejde :)
Thrust, min mand, du er ved at blive nummer et decepticon ...