Hjemmeside » hvordan » Slik sikkerhetskopierer du Citrix Xen VMs gratis med Xen-pocalypse (Bash)

    Slik sikkerhetskopierer du Citrix Xen VMs gratis med Xen-pocalypse (Bash)

    Har du noen gang hatt behov for å sikkerhetskopiere Citrix Xen Virtual Machines (VM), men ikke ønsker å ødelegge banken å gjøre det? HTG har bare bash-skriptet for deg med Xen-pocalypse.

    Bilde av h.koppdelaney, Fast i Custom og Hotfortech.

    En av de fine tingene i Citrix Xen er at mange av funksjonene er gratis avgift. Med det sagt, hvis du vil ha funksjonen "Automatisert VM beskyttelse og gjenoppretting", må du begynne å betale for "Advance" lisensen. Selv da betaler du bare for disknivåoppdateringer, som ikke er tilstrekkelige for mange typer arbeidsbelastninger, som Active Directory, databaser og så videre. For å overvinne dette, vil du kanskje ha "Live Memory-snapshot og returnere", som kan lagre hele maskinstatus, inkludert innholdet i RAM. Denne funksjonen er imidlertid en del av "Enterprise" og "Platinum" -utgavene, som er enda dyrere. Det er ikke at vi ved HTG avviser verdien av en sann backup-programvare, men hvis du er på et stramt budsjett og ikke har noe imot nedetid for sikkerhetskopiering, kan du finne Xen-pocalypse å være en perfekt løsning før du gjør budsjettforpliktelsen.

    Oversikt

    "Brukstilfelle": Du har et par VMer som krever sikkerhetskopiering. "Slå av en VM og eksportere den som en fil" fra "Xen Center" ved hjelp av høyre klikk fungerer ok, men du vil at denne prosessen skal skje automatisk og på en tidsplan. Dette Bash-skriptet bruker "XE" -kommandoen til å utføre sine oppgaver. XE er Xen-kommandolinjegrensesnittet (CLI), automatisk tilsvarende for utstedelse av "høyre klikk" i "Xen-senteret". Vi vil ringe skriptet fra Cron som vil levere "planlegging" -delen. I sin enkleste form er backupstrømmen:

    • Slå av målet VM.
    • Eksporter VM som en fil til sikkerhetskopieringsstedet.
    • Hvis VM var slått på, før sikkerhetskopiering startet, vil den bli slått på igjen.

    Kan få sprekker :)

    Hent skriptet

    Xen-pocalypse kan fritt hentes fra github, ved hjelp av de vanlige git-metodene. Med det sagt, hvis du ikke er kjent med git ennå, kan du ta tak i zip-filen med denne linken. Som skriptet må kjøre på en av dine Xen-servere, bør du trekke den ut der, slik at eksekveringsrettighetene blir bevart.

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

    Mens det ovenfor skulle fungere, anbefales det å bruke GIT-metoden, slik at du kan dra nytte av fremtidige oppdateringer.

    Hent SendEmail (valgfritt)

    Vi har skrevet om SendEmail Perl-programmet tidligere, så det er ikke nødvendig å gjenta her. Det er nok å si, det fungerer på samme måte på Linux som det gjør på Windows.

    Mens aktivering av e-post er valgfritt, anbefales det sterkt fordi da vil skriptet kunne:

    • Informer deg når det startet og ferdig å kjøre.
    • Varsle deg eventuelle feil det var i stand til å oppdage og håndtere.
    • Informer om diskvalifisering av backup på grunn av mellomromsproblemer. (Denne oppførselen kan deaktiveres hvis ikke ønsket)

    Last ned den til Xen-serveren og utdrag.

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

    Legg merke til hvor du har hentet den til. Du trenger den for innstillingsfilen.

    Definere merker

    Citrix Xen gir deg muligheten til å konfigurere "Custom Fields" for å filtrere evner. Vi vil opprette feltene og fylle dem med informasjonen som brukes av Xen-pocalypse. Xen-pocalypse gjenkjenner 3 kontroll TAGer som angir navnet på taggen for sikkerhetskopiering og foreldre til barns forhold. Hvis du ikke har tenkt å bruke filinndatametoden, må du opprette minst navnet på feltet for sikkerhetskopiering.

    For å gjøre dette, må du åpne serverens eller til og med en VMs egenskaper. I navigasjonsruten velger du "Egendefinerte felt".

    Hvis dette er første gang du definerer et forhold (som i eksempelet ovenfor), vil du ikke ha noen felt for å skrive inn data, så du må opprette dem. For å gjøre dette, klikk på "Rediger egendefinerte felt" i dialogboksen som dukker opp, klikk på "Legg til ..."

    Opprett tre (3) tekstfelt. En vil bli kalt "BackupTAG" og de andre "Foreldre" og "Barn".

    Merk: Navnene på de egendefinerte feltene har blitt "hardkodet" i skriptet, så du må ikke avvike fra stavemåten ovenfor, med mindre du endrer den aktuelle koden også.

    Når alle feltene er opprettet, bør du se:

    Lukk vinduet. Du burde nå ha "BackupTAG", "Parent" og "Children" feltene å fylle, som i bildet nedenfor.

    Nå er alt du trenger å gjøre, utpeke hvilke VM som tilhører hva "BackupTAG".
    For eksempel i firmaet hvor manuset ble vokst, hadde vi VMer som skulle sikkerhetskopieres ukentlig på torsdag og fredag, en tidsplan for våre Atlassian-produkt VM og noen som skulle sikkerhetskopieres kun en gang i måneden. Så vår oversikt så ut som:

    Hvor for eksempel "ukentlig-fri" var teksten vi har lagt inn i "BackupTAG" "Custom Field". Ryddig huh? :)

    Foreldre og barn (valgfritt)

    Den virkelige skjønnheten i dette skriptet er at den støtter "foreldre" til "barn" -relasjoner. Det vil si at det er mulig å sette opp en liste over "barn" VMer som ville bli slått av og sikkerhetskopiert før foreldrene, og at disse barna bare blir slått på igjen når foreldrene har avsluttet sin sikkerhetskopiering og blitt slått tilbake på. Dette er nyttig i tilfeller der å slå av foreldre VM, vil tjenesten i barnet bli utilgjengelig. En slik ting vil bety at tjenesten på barnet VM ville være utilgjengelig to ganger, en gang for barnets backupprosess og en gang for foreldrenes. Å skape dette forholdet overvinter dette problemet.

    For eksempel brukte alle våre Atlassian VMs en enkelt DataBase (DB) VM, som også ble satt til sikkerhetskopiering. Så ved å merke seg at DB VM er en "Parent" til de andre VM, kan en ordentlig rekkefølge av nedleggelse -> backup -> oppstart sikres.

    På tidspunktet for denne skrivingen har denne funksjonen et par forbehold:

    1. Navnene på VM-ene som skal ha et slikt forhold, kan ikke inneholde mellomrom. Du må fjerne mellomrom fra VM-navnene dine, for de blir avgrenset av plass, som i eksemplet nedenfor.
    2. Det kan bare være en forelder. Det er ikke engang planlagt å utpeke mer enn én, for ikke å snakke om testet.

    For å opprette dette forholdet, gå inn i VMs egenskaper. Hvis dette er en "forelder", skriv hvem barna er, og hvis dette er et "barn", skriv hvem hans foreldre er. For eksempel:

    Merk: Hvis du ikke angir en foreldre for et barn, kan det føre til at barnet startes før foreldrene er klare, og kan føre til at det sikkerhetskopieres to ganger.

    FIL-metoden (valgfritt)

    Av historiske grunner støtter Xen-pocalypse også å få listen over VM-filer som sikkerhetskopiert som en tekstfil. Mens "koden" fortsatt er der, er funksjonaliteten svært dårligere enn TAGs-metoden, og det anbefales derfor ikke. Med det sagt, hvis du foretrekker å bruke listemetoden av en eller annen grunn, gjelder følgende restriksjoner:

    1. Navnene på VMene kan ikke inneholde mellomrom eller spesialtegn.
    2. Det kan bare være ett VM-navn per linje.
    3. Blanke linjer er ikke tillatt.

    For å generere listen, kopier enten VMs navn fra Xen-senteret, eller kjør på en Xen-vert:

    xe vm-list | grep name-label | awk 'skriv ut $ 4' | sortere

    Kopier listen ovenfor til en vanlig tekstfil.

    Sikkerhetsplasseringen

    Mens jeg tilfeldigvis peker rundt i Citrix Xen, har jeg funnet ut at Storage Repositories (SRs) er tilgjengelige for bruk under "/ var / run / sr-mount /% UUID%" der UUID er den unike identifikatoren til SR, som kan være hentet fra GUI.

    Dette betyr at vi kan bruke den vanlige "Next -> Next -> Finish" veiviseren for å lage festet til ønsket reserveplassering, og deretter bruke skriptet til å bruke denne banen (som til tross for å knuse med montering fra kommandolinjen), men å gjøre så er utenfor rammen av denne veiledningen.

    For å opprette et nytt "mount", høyreklikk servernavnet og velg Ny SR.

    I dette eksemplet vil vi peke Xen til en Windows-del, så velg "Windows Fildeling (CIFS)":

    Fullfør Neste -> Neste -> Fullfør.

    Hent SRs UUID

    For å oppnå en SRs UUID klikker du bare på navnet sitt i Xen-senteret og går til kategorien "Generelt".

    For å kopiere UUID, bare høyreklikk den og velg "kopi".

    Med denne informasjonen tilgjengelig, er du klar til å redigere innstillingsfilen.

    Konfigurer innstillingsfilen.

    Xen-pocalypse-prosjektet leveres med en "innstillinger" -filmal. Denne malen skal redigeres for å gjenspeile oppsettet og bestått som det første argumentet til skriptet. Innstillingsfilen angir følgende:

    Metoden for å få VM'ene til å sikkerhetskopieres - Standardmetoden er TAGs. Du kan endre dette til FIL, men dette anbefales ikke.

    Stedet av sikkerhetskopi destinasjonen - Hvis du har fulgt veiledningen til dette punktet, må du bare erstatte% UUID% med SR som det ble oppnådd ovenfor.

    Plasseringen av SendEmail  - Hvis du har valgt å aktivere e-post, må du skrive inn hvor du har hentet perl-kjørbarheten her.

    E-post detaljer - Igjen, hvis du har aktivert e-post, må du definere detaljer som: Til, Fra, Servernavn / IP og etc '.

    kompresjon - Dette er satt til "Nei" som standard, fordi mens du aktiverer det, vil det produsere en mindre sikkerhetskopieringsfil, vil det også føre til at sikkerhetskopieringsprosedyren går for en betydelig lengre tid.

    Se etter ledig plass på destinasjonen - Dette vil få skriptet til å kontrollere at å lage VMs sikkerhetskopiering ikke vil føre til at reserveplasseringen er ledig plass til å falle under 10 GB. Dette er gjort for å sikre at mest mulig VM-sikkerhetskopieres i stedet for bare en veldig stor VM. Beregningen er utført ved hjelp av brutto diskstørrelsen totalt av alle HDene som er knyttet til VM.

    debugging  - Standard er at debugging er slått av med verdien "0" (null). Du trenger ikke å slå på dette, men hvis du gjør det, vises mer informasjon i feilsøkingssegmentet.

    Utførelse / tidsskjema

    I sin enkleste form ville en invokasjon av Xen-pocalypse se ut som:

    ./Xen-backup.sh settings.cfg ukentlig-fri

    Hvor i tilfellet ovenfor er vi inne i katalogen som inneholder skriptet og innstillingsfilen. "Taggen" skriptet vil se etter er "ukentlig-fri".

    Som nevnt ovenfor vil vi bruke Cron til å planlegge gjennomføringen. Før vi går inn i konfigurasjonen, er det sterkt anbefalt at du konfigurerer den allerede installerte SSMTP-pakken på Xen-serveren din. Selv om dette er et valgfritt trinn, vil dette gi deg en backwash kollektor. Å ha en slik "backwash collector" kan varsle deg om ting som skriptet ikke klarer.

    Skriv inn i crons redigering mer ved å utstede:

    crontab -e

    Hvis du har fulgt instruksjonene ovenfor, og du vil legge til en planlagt sikkerhetskopi for fredag ​​kl 18:01 (6:01 PM), skriv inn følgende:

    01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg ukentlig-fri

    Ovenstående er riktig, forutsatt at skript- og innstillingsfilen er begge under "/ root / Xen-pocalypse-master /".

    Feilsøking

    Mens jeg har lagt mye arbeid på å gjøre skriptet så enkelt å bruke og så tåpelig som mulig, "Verden er et større laboratorium". Informasjonen nedenfor kan hjelpe deg med å finne ut hva som er kilden til dine problemer.

    Framgang

    Du vil kanskje bruke denne lineren til å raskt "se" alle oppgaver pågår, for å se om de faktisk går fremover eller om de faktisk sitter fast.

    mens [-e / dev / null]; gjør for VM i "$ (xe-oppgaveliste | grep uuid | awk 'skriv ut $ 5')"; gjør xe-oppgave-param-get param-name = fremgang uuid = $ VM; sleep 1; gjort; ferdig

    For å slutte å se, bruk Ctrl + C for å bremse "while loop".

    logging

    All "logging" samles av Xen-verten som kjører skriptet i syslog-mekanismen. Dette kan selvfølgelig ses med:

    mindre + F / var / log / meldinger

    Du leter etter nøkkelordet "Xen-pocalypse".

    Merk: Citrix har fastsatt en to-dagers retensjonspolicy for syslog av sine servere. Du vil kanskje huske på postmortemer.

    debugging

    Som nevnt i innstillingsfilsegmentet, er det et direktiv for å aktivere feilsøking. Aktivering av feilsøking vil føre til at skriptet utfører verbose logging til konsollen og kastrer den fra å sende e-post og faktisk utfører eksporten, med mindre de relevante flaggene også er angitt. De mulige flaggene er notert i innstillingsfilmalen, og de lar deg definere hva du vil feilsøke.

    Det er mitt håp at du ikke har trengte noen feilsøking, og du høster fruktene av arbeidet mitt :)


    Thrust, mannen min, du er i ferd med å bli nummer et decepticon ...