Mussten Sie jemals ein Backup Ihrer Citrix Xen Virtual Machines (VMs) erstellen, wollten aber nicht die Bank sprengen? HTG hat mit Xen-pocalypse genau das Bash-Skript für Sie.
Eines der schönen Dinge in Citrix Xen ist, dass viele seiner Funktionen kostenlos sind. Wenn Sie jedoch die Funktion «Automatischer VM-Schutz und -Wiederherstellung» wünschen, müssen Sie für die «Advance» -Lizenz bezahlen. Selbst dann zahlen Sie nur für Backups auf Datenträgerebene, die für viele Arten von Workloads wie Active Directory, Datenbanken usw Maschinenzustand, einschließlich des Inhalts des RAM. Dieses Feature ist jedoch Teil der noch teureren Editionen „Enterprise“ und „Platinum“. Es ist nicht so, dass wir bei HTG den Wert einer echten Backup-Software ablehnen, aber wenn Sie ein knappes Budget haben und Ausfallzeiten für den Backup-Vorgang nichts ausmachen, könnten Sie Xen-pocalypse als eine absolut vernünftige Lösung finden bevor Sie die Budgetverpflichtung eingehen.
Überblick
Der „Anwendungsfall“: Sie haben ein paar VMs, die ein Backup benötigen. Das «Ausschalten einer VM und Exportieren als Datei» aus dem «Xen Center» mit Rechtsklicks funktioniert in Ordnung, aber Sie möchten, dass dieser Vorgang automatisch und nach einem Zeitplan abläuft. Dieses Bash-Skript verwendet den Befehl „XE“, um seine Aufgaben zu erfüllen. XE ist die Xen-Befehlszeilenschnittstelle (CLI), automatisches Äquivalent zum Ausführen der „Rechtsklicks“ im „Xen Center“. Wir werden das Skript von Cron aufrufen, das den «Planungs»-Teil bereitstellt. In seiner einfachsten Form ist der Backup-Flow:
- Schalten Sie die Ziel-VM aus.
- Exportieren Sie die VM als Datei an den Sicherungsspeicherort.
- Wenn die VM vor dem Start des Backups eingeschaltet war, wird sie wieder eingeschaltet.
Lass uns krachen 🙂
Besorgen Sie sich das Skript
Xen-Pokalypse kann frei bezogen werden von github, mit den regulären Git-Methoden. Wenn das nicht der Fall ist versiert in git Sie können die ZIP-Datei jedoch mit abrufen dieser Link. Da das Skript auf einem Ihrer Xen-Server ausgeführt werden muss, sollten Sie es dort extrahieren, damit die Ausführungsberechtigungen erhalten bleiben.
wget https://github.com/aviadra/Xen-pocalypse/archive/master.zip
unzip master
Obwohl das oben Genannte funktionieren würde, wird empfohlen, die GIT-Methode zu verwenden, damit Sie von zukünftigen Updates profitieren können.
SendEmail abrufen (optional)
Wir haben in der Vergangenheit über das SendEmail-Perl-Programm geschrieben, daher müssen Sie es hier nicht wiederholen. Es genügt zu sagen, dass es unter Linux genauso funktioniert wie unter Windows.
Die Aktivierung von E-Mail ist zwar optional, wird jedoch dringend empfohlen, da das Skript dann Folgendes kann:
- Informieren Sie, wann es gestartet und beendet wurde.
- Benachrichtigen Sie über alle Fehler, die erkannt und behandelt werden konnten.
- Informieren Sie über Backup-Disqualifikationen aufgrund von Platzproblemen. (Dieses Verhalten kann deaktiviert werden, wenn nicht gewünscht)
Laden Sie es auf den Xen-Server herunter und entpacken Sie es.
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvzhf sendEmail-v1.56.tar.gz
Notieren Sie sich den Speicherort, an den Sie es extrahiert haben. Sie benötigen es für die Einstellungsdatei.
Tags definieren
Citrix Xen bietet Ihnen die Möglichkeit, „benutzerdefinierte Felder“ für Filterfunktionen zu konfigurieren. Wir werden die Felder erstellen und sie dann mit den Informationen füllen, die von Xen-pocalypse verwendet werden. Xen-pocalypse erkennt 3 Kontroll-TAGs, die den Namen des Tags für die Sicherung und die Eltern-Kind-Beziehungen angeben. Wenn Sie nicht beabsichtigen, die Dateieingabemethode zu verwenden, MÜSSEN Sie mindestens das Feld für den Namen des Backup-Tags erstellen.
Öffnen Sie dazu die Eigenschaften des Servers oder sogar einer VM. Wählen Sie im Navigationsbereich „Benutzerdefinierte Felder“ aus.
Wenn Sie zum ersten Mal eine Beziehung definieren (wie im obigen Beispiel), haben Sie keine Felder zum Eingeben von Daten, daher müssen Sie diese erstellen. Klicken Sie dazu im sich öffnenden Dialogfeld auf „Benutzerdefinierte Felder bearbeiten“, klicken Sie auf „Hinzufügen…“
Erstellen Sie drei (3) Felder vom Typ «Text». Einer wird „BackupTAG“ heißen und die anderen „Eltern“ und „Kinder“.
Die Namen der benutzerdefinierten Felder wurden in das Skript „hartcodiert“, sodass Sie nicht von der obigen Schreibweise abweichen dürfen, es sei denn, Sie ändern auch den entsprechenden Code.
Nachdem alle Felder erstellt wurden, sollten Sie Folgendes sehen:
Schließen Sie das Fenster. Sie sollten jetzt die Felder „BackupTAG“, „Eltern“ und „Kinder“ ausfüllen, wie im Bild unten.
Jetzt müssen Sie nur noch festlegen, welche VMs zu welchem „BackupTAG“ gehören.
In der Firma, in der das Skript gewachsen war, hatten wir beispielsweise VMs, die am Donnerstag und Freitag wöchentlich gesichert werden sollten, einen Zeitplan für unsere Atlassian Produkt-VMs und einige, die nur monatlich gesichert werden sollten. Unsere Übersicht sah also so aus:
Wo zum Beispiel „weekly-fri“ der Text war, den wir in das „BackupTAG“ „Custom Field“ eingegeben haben. Ordentlich oder? 🙂
Eltern & Kinder (optional)
Die wahre Schönheit dieses Skripts besteht darin, dass es Beziehungen von „Eltern“ zu „Kind“ unterstützt. Das heißt, es ist möglich, eine Liste von „untergeordneten“ VMs festzulegen, die vor dem Elternteil ausgeschaltet und gesichert werden, und dass diese Kinder erst wieder eingeschaltet werden, wenn das Elternteil seine Sicherung beendet und wieder zurückgesetzt wurde an. Dies ist in Fällen nützlich, in denen das Ausschalten der übergeordneten VM dazu führt, dass der Dienst in der untergeordneten VM nicht mehr verfügbar ist. Dies würde bedeuten, dass der Dienst auf der untergeordneten VM zweimal nicht verfügbar wäre, einmal für den Backup-Prozess des untergeordneten Systems und einmal für den übergeordneten. Die Schaffung dieser Beziehung überwindet dieses Problem.
Alle unsere Atlassian-VMs verwendeten beispielsweise eine einzige DataBase (DB)-VM, die ebenfalls gesichert werden sollte. Indem Sie anmerken, dass die DB-VM den anderen VMs „übergeordnet“ ist, kann eine ordnungsgemäße Reihenfolge beim Herunterfahren -> Backup -> Starten sichergestellt werden.
Zum Zeitpunkt dieses Schreibens hat diese Funktion einige Vorbehalte:
- Die Namen der VMs, die eine solche Beziehung haben sollen, dürfen keine Leerzeichen enthalten. Sie müssen Leerzeichen aus Ihren VM-Namen entfernen, da sie durch Leerzeichen getrennt werden, wie im folgenden Beispiel.
- Es kann nur einen geben Elternteil. Die Benennung von mehreren ist nicht einmal geplant, geschweige denn getestet.
Um diese Beziehung zu erstellen, gehen Sie in die Eigenschaften der VM. Wenn dies ein „Elternteil“ ist, schreiben Sie, wer seine Kinder sind, und wenn dies ein „Kind“ ist, schreiben Sie, wer seine Eltern sind. Beispielsweise:
Hinweis: Wenn Sie für ein Kind kein Elternteil festlegen, kann dies dazu führen, dass das Kind gestartet wird, bevor das Elternteil bereit ist, und kann dazu führen, dass es zweimal gesichert wird.
Die FILE-Methode (optional)
Aus historischen Gründen unterstützt Xen-pocalypse auch das Abrufen der Liste der zu sichernden VMs als Textdatei. Während der „Code“ noch drin ist, ist die Funktionalität schwer minderwertig nach der TAGs-Methode und wird daher nicht empfohlen. Wenn Sie jedoch aus irgendeinem Grund die Listenmethode bevorzugen, gelten die folgenden Einschränkungen:
- Die Namen der VMs dürfen keine Leerzeichen oder Sonderzeichen enthalten.
- Es kann nur einen VM-Namen pro Zeile geben.
- Leerzeilen sind nicht erlaubt.
Um die Liste zu generieren, kopieren Sie entweder den Namen der VM aus dem Xen-Center oder führen Sie auf einem Xen-Host aus:
xe vm-list | grep name-label | awk
'{ print $4 }' | sort
Kopieren Sie die obige Liste in eine normale Textdatei.
Der Backup-Speicherort
Beim zufälligen Herumstöbern in Citrix Xen habe ich festgestellt, dass die Speicher-Repositories (SRs) stehen zur Verwendung unter „/var/run/sr-mount/%UUID%“ zur Verfügung, wobei UUID die eindeutige Kennung des SR ist, die über die GUI abgerufen werden kann.
Dies bedeutet, dass wir den regulären Assistenten «Weiter -> Weiter -> Fertig» verwenden können, um das Mounten am gewünschten Backup-Speicherort zu erstellen, und dann das Skript diesen Pfad verwenden lassen (wie beim Durcheinander mit dem Mounten von der Befehlszeile aus), aber tun Dies würde den Rahmen dieses Handbuchs sprengen.
Um einen neuen „Mount“ zu erstellen, klicken Sie mit der rechten Maustaste auf den Servernamen und wählen Sie New SR.
In diesem Beispiel verweisen wir Xen auf eine Windows-Freigabe, wählen Sie also „Windows File Sharing (CIFS)“:
Schließen Sie Weiter -> Weiter -> Fertig ab.
Erhalten Sie die UUID . des SR
Um die UUID eines SR zu erhalten, klicken Sie einfach auf seinen Namen im Xen Center und gehen Sie zum Reiter „Allgemein“.
Um die UUID zu kopieren, klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie „Kopieren“.
Mit diesen Informationen können Sie die Einstellungsdatei bearbeiten.
Konfigurieren Sie die Einstellungsdatei.
Das Xen-pocalypse-Projekt wird mit einer Dateivorlage „Einstellungen“ geliefert. Diese Vorlage sollte so bearbeitet werden, dass sie Ihr Setup widerspiegelt, und als erstes Argument an das Skript übergeben werden. Die Einstellungsdatei bezeichnet Folgendes:
zum Abrufen der zu sichernden VMs – Die Standardmethode ist TAGs. Sie können dies in DATEI ändern, dies wird jedoch nicht empfohlen.
des Backup-Ziels – Wenn Sie die Anleitung bis zu diesem Punkt befolgt haben, müssen Sie nur Ersetzen Sie %UUID% durch die SRs, wie sie von oben erhalten wurden.
– Wenn Sie sich für die Aktivierung von E-Mail entschieden haben, müssen Sie hier eingeben, wo Sie die ausführbare Perl-Datei extrahiert haben.
Auch hier müssen Sie, wenn Sie E-Mail aktiviert haben, Details wie: An, Von, Servername/IP & etc. definieren.
– Dies ist standardmäßig auf „Nein“ eingestellt, da durch die Aktivierung zwar eine kleinere Backup-Datei erstellt wird, aber auch der Backup-Vorgang erheblich länger ausgeführt wird.
auf dem Ziel – Dadurch überprüft das Skript, ob die Sicherung der VM nicht dazu führt, dass der freie Speicherplatz des Sicherungsspeicherorts unter 10 GB fällt. Dies geschieht, um sicherzustellen, dass die meisten VMs gesichert werden, anstatt nur eine sehr große VM. Die Berechnung erfolgt anhand der Brutto-Festplattengröße aller Festplatten, die der VM zugeordnet sind.
– Standardmäßig ist das Debugging mit dem Wert „0“ (Null) ausgeschaltet. Sie sollten dies nicht aktivieren müssen, aber wenn Sie dies tun, finden Sie weitere Informationen im Abschnitt zur Fehlerbehebung.
Ausführung/Terminplanung
In seiner einfachsten Form würde ein Aufruf von Xen-pocalypse so aussehen:
./Xen-backup.sh settings.cfg weekly-fri
Im obigen Fall befinden wir uns in dem Verzeichnis, das das Skript und die Einstellungsdatei enthält. Das „Tag“, nach dem das Skript sucht, ist „weekly-fri“.
Wie oben erwähnt, verwenden wir Cron, um die Ausführung zu planen. Bevor wir in die Konfiguration gehen, konfigurieren Sie das bereits installierte SSMTP-Paket auf Ihrem Xen-Server. Obwohl dies ein optionaler Schritt ist, erhalten Sie dadurch einen Rückspülsammler. Ein solcher „Rückspülsammler“ kann Sie auf Dinge aufmerksam machen, zu denen das Skript nicht in der Lage ist.
Steigen Sie in die Bearbeitung von Cron ein, indem Sie Folgendes ausgeben:
crontab -e
Wenn Sie die obigen Anweisungen befolgt haben und ein geplantes Backup für Freitag um 18:01 (18:01 Uhr) hinzufügen möchten, geben Sie Folgendes ein:
01 18 * * fri /root/Xen-pocalypse-master/Xen_Backup.sh /root/Xen-pocalypse-master/settings.cfg weekly-fri
Das obige ist korrekt, vorausgesetzt, Ihr Skript und Ihre Einstellungsdatei befinden sich beide unter „/root/Xen-pocalypse-master/“.
Fehlerbehebung
Obwohl ich viel Mühe darauf verwendet habe, das Skript so einfach zu verwenden und so narrensicher wie möglich zu machen, „Die Welt ist ein größeres Labor“. Die folgenden Informationen können Ihnen dabei helfen, die Quelle von . zu ermitteln deine Probleme.
Fortschritt
Vielleicht möchten Sie diesen einen Liner verwenden, um schnell alle laufenden Aufgaben zu „beobachten“, um zu sehen, ob sie tatsächlich vorankommen oder ob sie tatsächlich stecken bleiben.
while [ -e /dev/null ]; do for VM in "$( xe task-list | grep uuid | awk '{print $5}' )" ; do xe task-param-get param-name=progress uuid=$VM ;sleep 1; done; done
Um das Anschauen zu beenden, verwenden Sie Strg+C, um die „While-Schleife“ abzubrechen.
Protokollierung
Die gesamte „Protokollierung“ wird vom Xen-Host erfasst, der das Skript im Syslog-Mechanismus ausführt. Dies kann natürlich eingesehen werden mit:
less +F /var/log/messages
Sie suchen nach dem Stichwort „Xen-Pokalypse“.
Hinweis: Citrix hat eine zwei (2) Tage lange Aufbewahrungsrichtlinie für das Syslog seiner Server festgelegt. Das sollten Sie bei Obduktionen im Hinterkopf behalten.
Debuggen
Wie im Abschnitt der Einstellungsdatei angegeben, gibt es eine Anweisung zum Aktivieren des Debuggens. Das Aktivieren des Debuggens führt dazu, dass das Skript eine ausführliche Protokollierung an die Konsole ausgibt und es vom Senden von E-Mails und dem tatsächlichen Ausführen der Exporte kastriert, es sei denn, die entsprechenden Flags sind ebenfalls gesetzt. Die möglichen Flags sind in der Einstellungsdateivorlage vermerkt und ermöglichen es Ihnen, granular zu definieren, was Sie debuggen möchten.
Ich hoffe, dass Sie kein Debugging benötigt haben und die Früchte meiner Arbeit ernten 🙂
Schub, mein Mann, Sie sind dabei, die Nummer eins unter den Decepticons zu werden…