How To Backup Citrix Xen VM's gratis met Xen-pocalypse (Bash)
Heeft u ooit een back-up van uw Citrix Xen virtuele machines (VM's) nodig gehad, maar de bank niet willen breken? HTG heeft net het bash-script voor je met Xen-pocalypse.
Afbeelding door h.koppdelaney, Vast in Custom en Hotfortech.
Een van de leuke dingen in Citrix Xen is dat veel van zijn functies zijn gratis van lading. Met dat gezegd, als je de "Geautomatiseerde VM-bescherming en -herstel" -functie wilt, zou je moeten beginnen te betalen voor de "Advance" -licentie. Zelfs dan betaal je alleen voor back-ups op schijfniveau, die niet voldoende zijn voor veel soorten workloads zoals Active directory, Databases en Etc. Om dit te verhelpen, wil je misschien de "Live memory snapshot and revert", die het hele geheugen kan opslaan apparaatstatus, inclusief de inhoud van RAM. Die functie maakt echter deel uit van de edities 'Enterprise' en 'Platinum', die zelfs nog duurder zijn. Het is niet zo dat wij bij HTG de waarde van een echte back-up software afwijzen, maar als u een beperkt budget hebt en het niet erg vindt om enige tijd te stoppen voor de back-up, zou u Xen-pocalypse als een volkomen redelijke oplossing kunnen beschouwen. voordat u de budgettaire verplichting aangaat.
Overzicht
De "use case": u hebt een paar VM's die een back-up vereisen. Het "uitschakelen van een VM en exporteren als een bestand" vanuit het "Xen Center" met behulp van rechtermuisknop klikt goed, maar je wilt dat dit proces automatisch en volgens schema verloopt. Dit Bash-script gebruikt het "XE" -commando om zijn taken uit te voeren. XE is de Xen-opdrachtregelinterface (CLI), automatisch equivalent voor het uitgeven van de "rechtermuisknop" in het "Xen Center". We zullen het script vanuit Cron bellen dat het deel "Planning" zal leveren. In de eenvoudigste vorm is de back-upstroom:
- Schakel de doel-VM uit.
- Exporteer de VM als een bestand naar de back-uplocatie.
- Als de VM is ingeschakeld voordat de back-up is gestart, wordt deze weer ingeschakeld.
Laten we kraken :)
Vraag het script
Xen-pocalypse kan vrij worden verkregen uit github, met behulp van de reguliere git-methoden. Met dat gezegd, als je nog niet thuis bent in git, kun je het zipbestand met deze link pakken. Aangezien het script op een van uw Xen-servers moet worden uitgevoerd, moet u het hier extraheren, zodat de uitvoeringsrechten behouden blijven.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip meester
Hoewel het bovenstaande zou werken, wordt u geadviseerd om de GIT-methode te gebruiken, zodat u kunt profiteren van toekomstige updates.
Verkrijg SendEmail (optioneel)
We hebben in het verleden al geschreven over het SendEmail perl-programma, dus het is niet nodig om hier nogmaals te herhalen. Het volstaat om te zeggen dat het op dezelfde manier werkt op Linux als op Windows.
Hoewel het inschakelen van e-mail optioneel is, wordt het ten zeerste aanbevolen omdat het script dan in staat zal zijn om:
- Informeer u wanneer het begon en klaar was met hardlopen.
- Waarschuw u voor eventuele fouten die het kon detecteren en verwerken.
- Informeer over back-up diskwalificaties vanwege ruimtevraagstukken. (Dit gedrag kan worden uitgeschakeld indien niet gewenst)
Download het naar de Xen-server en pak het uit.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Noteer de locatie waar je het hebt uitgepakt. Je hebt het nodig voor het instellingenbestand.
Tags definiëren
Citrix Xen biedt u de mogelijkheid om "Aangepaste velden" voor filtermogelijkheden te configureren. We zullen de velden maken en deze vervolgens vullen met de informatie die door Xen-pocalypse wordt gebruikt. Xen-pocalypse herkent 3 controle-TAG's die de naam van de tag voor back-up en de ouder-tot-moederrelaties aangeven. Als u niet van plan bent de bestandsinvoermethode te gebruiken, MOET u ten minste het veld voor de back-tagagnaam maken.
Open hiervoor de eigenschappen van de server of zelfs van een VM. Selecteer "Aangepaste velden" in het navigatievenster.
Als dit de eerste keer is dat u een relatie definieert (zoals in het bovenstaande voorbeeld), hebt u geen velden om gegevens in te voeren, dus u moet ze maken. Om dit te doen, klikt u op "Aangepaste velden bewerken" in het dialoogvenster dat verschijnt, klik op "Toevoegen ..."
Maak drie (3) "Tekst" type velden. De ene wordt "BackupTAG" en de andere "Ouder" en "Kinderen" genoemd.
Notitie: De namen van de aangepaste velden zijn "hard gecodeerd" in het script, dus u MOET niet afwijken van de bovenstaande spelling, tenzij u de betreffende code ook wijzigt.
Nadat alle velden zijn gemaakt, ziet u:
Sluit het venster. Nu moet u de velden "BackupTAG", "Bovenliggende" en "Kinderen" invullen, zoals in de onderstaande afbeelding..
Nu hoeft u alleen maar aan te geven welke VM's behoren tot wat "BackupTAG" is.
In het bedrijf waar het script werd gemaakt, hadden we bijvoorbeeld VM's die wekelijks op donderdag en vrijdag zouden worden ondersteund, een schema voor onze VM's van het merk Atlassian en enkele waarvan slechts een maandelijkse back-up werd gemaakt. Ons overzicht zag er dus als volgt uit:
Waar bijvoorbeeld "weekly-fri" de tekst was die we ingevoerd hebben in het "CustomTAG" "Custom Field". Nette hè? :)
Ouders en kinderen (optioneel)
De echte schoonheid van dit script is dat het "ouder" -relaties ondersteunt. Dat wil zeggen, het is mogelijk om een lijst met 'kind'-VM's in te stellen die zouden worden uitgeschakeld en waarvan een back-up werd gemaakt voor het bovenliggende element, en dat deze kinderen pas weer worden ingeschakeld nadat de ouder de back-up heeft beëindigd en is teruggedraaid op. Dit is handig in gevallen waarin het uitschakelen van de bovenliggende VM ervoor zorgt dat de service in het kind niet meer beschikbaar is. Zoiets zou betekenen dat de service op de onderliggende VM twee keer niet beschikbaar is, een keer voor het back-upproces van het kind en een keer voor de ouder. Het creëren van deze relatie overwint dat probleem.
Al onze Atlassian-VM's gebruikten bijvoorbeeld een enkele DataBase (DB) VM, waarvan ook een back-up was gemaakt. Dus door te vermelden dat de DB VM een "ouder" is voor de andere VM's, kan een goede volgorde van afsluiten -> back-up -> opstarten worden verzekerd.
Op het moment van schrijven heeft deze functie enkele kanttekeningen:
- De namen van de VM's die een dergelijke relatie moeten hebben, mogen geen spaties bevatten. U moet spaties uit uw VM-namen verwijderen, want deze worden gescheiden door spaties, zoals in het onderstaande voorbeeld.
- Er kan slechts één ouder zijn. Meer dan één benoemen is zelfs niet gepland, om nog te zwijgen van getest.
Als u deze relatie wilt maken, gaat u naar de eigenschappen van de VM. Als dit een "ouder" is, schrijf dan wie zijn kinderen zijn en als dit een "kind" is, schrijf dan wie zijn ouders zijn. Bijvoorbeeld:
Opmerking: als u een ouder voor een kind niet opgeeft, kan het kind worden gestart voordat het bovenliggende item gereed is en kan er twee keer een back-up van worden gemaakt.
De FILE-methode (optioneel)
Om historische redenen ondersteunt Xen-pocalypse ook het verkrijgen van een lijst van VM's waarvan een back-up moet worden gemaakt als een tekstbestand. Hoewel de "code" er nog steeds is, is de functionaliteit aanzienlijk inferieur aan de TAG-methode en daarom wordt deze niet aanbevolen. Met dat gezegd, als u de lijstmethode om wat voor reden verkiest te gebruiken, zijn de volgende beperkingen van toepassing:
- De namen van de VM's mogen geen spaties of speciale tekens bevatten.
- Er kan slechts één VM-naam per regel zijn.
- Lege regels zijn niet toegestaan.
Om de lijst te genereren, kopieert u de naam van de VM vanuit het Xen-centrum of voert u deze uit op een Xen-host:
xe vm-lijst | grep naamlabel | awk
'print $ 4' | soort
Kopieer de bovenstaande lijst naar een normaal tekstbestand.
De back-uplocatie
Terwijl ik willekeurig rondsnuffelde in Citrix Xen, heb ik ontdekt dat de Storage Repositories (SR's) beschikbaar zijn voor gebruik onder "/ var / run / sr-mount /% UUID%" waarbij UUID de unieke ID van de SR is, wat kan zijn verkregen van de GUI.
Dit betekent dat we de normale "Volgende -> Volgende -> Voltooien" -wizard kunnen gebruiken om de koppeling naar de gewenste back-uplocatie te maken, en dan het script dat pad laten gebruiken (zoals bedoeld om te knoeien met de montage vanaf de opdrachtregel), maar dus valt buiten het bestek van deze gids.
Als u een nieuwe "koppeling" wilt maken, klikt u met de rechtermuisknop op de servernaam en selecteert u Nieuwe SR.
In dit voorbeeld wijzen we Xen naar een Windows-share, dus kies "Windows File Sharing (CIFS)":
Voltooi de volgende -> volgende -> voltooien.
Verkrijg de UUID van de SR
Om de UUID van een SR te verkrijgen, klikt u eenvoudigweg op de naam in het Xen Center en gaat u naar het tabblad "Algemeen".
Om de UUID te kopiëren, klikt u er gewoon met de rechtermuisknop op en kiest u "kopiëren".
Met deze informatie bij de hand bent u klaar om het instellingenbestand te bewerken.
Configureer het instellingenbestand.
Het Xen-pocalypse-project wordt gebundeld met een bestandssjabloon "instellingen". Deze sjabloon moet worden bewerkt om uw instellingen weer te geven en te worden doorgegeven als het eerste argument voor het script. Het instellingenbestand geeft het volgende aan:
De methode voor het verkrijgen van een back-up van de VM's - De standaardmethode is TAGs. U kunt dit wijzigen in FILE, maar dit wordt niet aanbevolen.
De locatie van de back-upbestemming - als u de handleiding tot op dit punt hebt gevolgd, hoeft u alleen het% UUID% te vervangen door de SR's zoals deze van bovenaf zijn verkregen.
De locatie van SendEmail - Als u ervoor hebt gekozen om Email in te schakelen, moet u hier invoeren waar u het perl-bestand hebt geëxtraheerd.
E-mail details - Nogmaals, als u e-mail hebt ingeschakeld, moet u details definiëren zoals: To, From, Servername / IP & etc '.
samendrukking - Dit is standaard ingesteld op "Nee", omdat tijdens het inschakelen een kleiner back-upbestand wordt geproduceerd, maar ook dat de back-upprocedure aanzienlijk langer duurt.
Controleer op vrije ruimte op de bestemming - Hiermee wordt gecontroleerd of het maken van de back-up van de VM de vrije ruimte van de back-uplocatie niet onder de 10 GB zal laten vallen. Dit wordt gedaan om ervoor te zorgen dat de meeste VM's worden geback-upt in plaats van slechts één zeer grote VM. De berekening wordt uitgevoerd met behulp van de totale bruto-schijfgrootte van alle HD's die aan de VM zijn gekoppeld.
debugging - De standaardinstelling is dat debugging is uitgeschakeld met de waarde "0" (nul). U hoeft dit niet aan te zetten, maar als u dat doet, wordt er meer informatie genoteerd in het segment voor probleemoplossing.
Uitvoering / Scheduling
In de eenvoudigste vorm zou een aanroeping van Xen-pocalypse er als volgt uitzien:
./Xen-backup.sh settings.cfg wekelijks-vr
Waar in het bovenstaande geval bevinden we ons in de map met het script en het instellingenbestand. De "Tag" waar het script naar op zoek is, is "weekly-fri".
Zoals hierboven vermeld, zullen we Cron gebruiken om de uitvoering te plannen. Voordat we ingaan op de configuratie, is het dat wel sterk aanbevolen dat u het reeds geïnstalleerde SSMTP-pakket op uw Xen-server configureert. Hoewel dit een optionele stap is, geeft dit u een backwash-verzamelaar. Het hebben van zo'n "backwash verzamelaar" kan je waarschuwen voor dingen waar het script niet toe in staat is.
Ga meer cron's bewerking aan door het uitgeven van:
crontab -e
Als u de bovenstaande instructies hebt gevolgd en een geplande back-up wilt toevoegen voor vrijdag om 18:01 uur (18:01 uur), voert u het onderstaande in:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg wekelijks-vr
Het bovenstaande is correct, ervan uitgaande dat uw script en instellingenbestand beide onder "/ root / Xen-pocalypse-master /" staan.
Probleemoplossen
Hoewel ik veel moeite heb gedaan om het script zo gebruiksvriendelijk en zo onfeilbaar mogelijk te maken, "De wereld is een groter laboratorium". De onderstaande informatie kan u helpen na te gaan wat de oorzaak van uw problemen is.
Vooruitgang
U kunt deze voering gebruiken om snel alle lopende taken te "bekijken", om te zien of ze überhaupt vordert of dat ze daadwerkelijk vastzitten.
terwijl [-e / dev / null]; doen voor VM in "$ (xe task-list | grep uuid | awk 'print $ 5')"; doe xe task-param-get param-name = voortgang uuid = $ VM; sleep 1; gedaan; gedaan
Om te stoppen met kijken, gebruik je Ctrl + C om de "while-loop" af te remmen.
logging
Alle "logging" wordt verzameld door de Xen-host die het script uitvoert in het syslog-mechanisme. Dit kan natuurlijk worden bekeken met:
minder + F / var / log / messages
U bent op zoek naar het sleutelwoord "Xen-pocalypse".
Opmerking: Citrix heeft een bewaarbeleid van twee (2) dagen ingesteld voor syslog van zijn servers. Misschien wilt u dit in gedachten houden voor postmortemen.
debugging
Zoals opgemerkt in het instellingenbestandssegment, is er een richtlijn om debugging in te schakelen. Als u foutopsporing inschakelt, voert het script uitgebreid logboekregistratie uit naar de console en castreert het het vanaf het verzenden van e-mails en voert het daadwerkelijk de exports uit, tenzij de relevante vlaggen ook zijn ingesteld. De mogelijke vlaggen worden genoteerd in de instellingenbestandsjabloon en zij stellen u in staat om granulair te definiëren wat u wilt debuggen.
Het is mijn hoop dat je geen enkele foutopsporing nodig hebt en dat je de vruchten plukt van mijn arbeid :)
Thrust, mijn man, je staat op nummer één van decepticon ...