Hoe Citrix-Xen VM's gratis te herstellen met Xen-Phoenix (Bash)
Heeft u ooit de behoefte gehad om uw Citrix-Xen VM's in bulk te herstellen voor een disaster recovery-oplossing (DR) of gewoon om te testen of uw back-ups werken? HTG legt uit hoe je Xen-Phoenix, een gratis bash-script, kunt gebruiken voor VM-restauratie.
Photo Credit: Ryan McCurdy via Compfight cc
Zoals we al hebben vermeld in "How To Backup Citrix Xen VMs gratis met Xen-pocalypse", een van de leuke dingen in Citrix Xen is dat veel van zijn functies 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. Nogmaals, het is niet dat wij bij HTG de waarde van een echte back-upoplossing afwijzen, maar als u een krap budget heeft, hebt u de VM-afbeeldingen al uit de hypervisor gehaald en heeft u een manier nodig om uw VM te automatiseren. " test restore "/" DR refresh "-procedures, zou u Xen-Phoenix als een volkomen redelijke oplossing kunnen beschouwen voordat u de budgettaire verplichting aangaat.
Overzicht
De "use case": u hebt een aantal VM's die moeten worden hersteld. Het importeren in "Xen Center" met behulp van rechtermuisknop klikt goed, maar u 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 herstelstroom:
- Verwijder alle * eerder bestaande VM's op de server
- Importeer VM's van bestanden op de back-uplocatie.
- Controleer of alle VM's kunnen worden gebruikt door ze een voor een te activeren en te zoeken naar de hartslag van de gastgereedschappen.
- Zet VM's uit wanneer er een hartslag is ontdekt of een time-out is bereikt.
* Het verwijderen van alle VM's-gedrag kan volledig worden uitgeschakeld en ondersteunt uitzonderingen (zie hieronder).
Laten we kraken :)
Vraag het script
Xen-feniks 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-phoenix/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.
De exportlocatie
We moeten configureren waar de VM-export vandaan komt.
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 reguliere "Volgende -> Volgende -> Voltooien" -wizard kunnen gebruiken om de "mount" 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 die buiten het bereik 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-feniks-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 locatie van de bronuitvoer - Als u de gids tot dit punt hebt gevolgd, hoeft u alleen het% UUID% te vervangen door de SR's zoals deze van boven zijn verkregen.
- De locatie van SendEmail - Als u ervoor hebt gekozen om Email in te schakelen, moet u hier invoeren waar u het perl-uitvoerbare bestand hebt geëxtraheerd.
- Verifier - Hiermee bepaalt u de procedure voor het herstellen van de post-herstelprocedure. Dit is standaard ingeschakeld, omdat een succesvol "herstel van het bestandsniveau" niet noodzakelijk een functionele VM betekent.
- Server_prep - Hiermee wordt de pre-restore geregeld verwijdering van alle VM's op de DR-server. Dit is standaard ingeschakeld omdat wordt aangenomen dat de DR-server hiervoor een dedicated server is. Als u een VM nodig hebt die op deze server wordt uitgevoerd om niet te worden verwijderd, configureert u deze om te worden uitgesloten. Als dit gedrag niet geschikt is voor uw situatie, schakelt u het gewoon volledig uit.
- E-mail details - Nogmaals, als u e-mail hebt ingeschakeld, moet u details definiëren zoals: To, From, Servername / IP & etc '.
- debugging - De standaardinstelling is om debuggen uit te schakelen met de waarde "0" (nul). U moet dit niet inschakelen, maar als u dat doet, wordt er meer informatie genoteerd in het probleemoplossingssegment.
Uitvoering
Dit script neemt het instellingenbestand als zijn eerste argument en eventuele andere argumenten als "dubbele punthaken" om te zoeken naar (gescheiden door spaties). Chevrons zijn "strings", die reguliere expressies ondersteunen die ten minste een deel van de gewenste bestandsnaam van de VM-export vertegenwoordigen.
Dat wil zeggen dat in de eenvoudigste vorm een aanroeping van Xen-phoenix eruit zou zien als:
./Xen-phoenix.sh settings.cfg DevTools
Waar in het bovenstaande geval bevinden we ons in de directory met het script & het instellingenbestand en de "Chevron" waarnaar het script zoekt, is "DevTools". Hierdoor worden alle bestanden in de exportdirectory met de tekenreeks "DevTools" in hun naam geïmporteerd.
Een complexer voorbeeld kan er als volgt uitzien:
./Xen-phoenix.sh settings.cfg [Aa] [Dd] [Bb] [iI] [Dd] ev [Tt] ools
Waar in het bovenstaande voorbeeld bestanden worden geïmporteerd die het woord "devtools" bevatten, gespeld met een hoofdletter "D" en "T" of niet-hoofdletters, evenals "AD" en "BI" met of zonder hoofdlettergebruik.
scheduling
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 "terugspoeling" -verzamelaar. Het hebben van zo'n "backwash verzamelaar" kan je waarschuwen voor dingen waar het script niet toe in staat is.
Ga naar de bewerkingsmodus van cron door het volgende uit te geven:
crontab -e
Als je de bovenstaande instructies hebt gevolgd en je een geplande back-up wilt toevoegen voor zondag om 01:31 (1:31 uur), voer je het onderstaande in:
31 01 * * sun /root/Xen-phoenix-master/Xen-phoenix.sh /root/Xen-phoenix-master/settings.cfg [Aa] [Dd] DB [Bb] [iI] [Dd] ev [Tt ] ools
Het bovenstaande is correct, ervan uitgaande dat je script en instellingenbestand beide onder "/ root / Xen-phoenix-master /" staan.
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.
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.
De "Delete Exception" -tag definiëren (optioneel)
Xen-Phoenix neemt een pagina van zijn voorouder (Xen-Pocalypse) en biedt u de mogelijkheid om granulair een VM uit te sluiten van de systeemwijde verwijdering met behulp van een controletag. Om dit te doen, moet u een nieuw "Aangepast veld" definiëren.
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 "aangepast veld" definieert (zoals in het bovenstaande voorbeeld), hebt u niet het "Phoenix_keeper" -veld om gegevens in te voeren, dus u moet het maken. Om dit te doen, klikt u op "Aangepaste velden bewerken" in het dialoogvenster dat verschijnt en vervolgens op "Toevoegen ..."
Maak een veld "Tekst" met de naam "Phoenix_keeper".
Notitie: De naam van het aangepaste veld is "hard gecodeerd" in het script, dus u MOET niet afwijken van de bovenstaande spelling, tenzij u de betreffende code ook wijzigt.
Nadat het veld is gemaakt, ziet u:
Doe het raam dicht. U zou nu het "Phoenix_keeper" -veld moeten invullen, zoals in de onderstaande afbeelding.
Nu, alles wat je hoeft te doen is dit veld vullen met een opmerking (wat een opmerking ook zal doen), waardoor Xen-phoenix het overslaat bij het verwijderen.
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.
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-Phoenix".
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 import uit, tenzij de relevante vlaggen ook zijn ingesteld. De mogelijke vlaggen worden genoteerd in de instellingenbestandsjabloon en ze stellen u in staat om nauwkeurig 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 :)
Denk aan al de armoede, de haat en de leugens, en stel je de vernietiging voor van alles wat je veracht. Langzaam uit de as zal de feniks opstaan ...