/ / Kostenlose Sicherung von Citrix Xen-VMs mit Xen-Pocalypse (Bash)

So sichern Sie Citrix Xen-VMs kostenlos mit Xen-Pocalypse (Bash)

Haben Sie jemals ein Backup Ihrer Citrix Xen Virtual Machines (VMs) benötigt, wollten dabei aber nicht die Bank sprengen? HTG hat genau das Bash-Skript für Sie mit Xen-Pocalypse.

Bild von h.koppdelaney, Stuck in Custom und Hotfortech.

Eines der schönen Dinge in Citrix Xen ist, dass viele seiner Funktionen vorhanden sind kostenlos der Ladung. Wenn Sie jedoch die Funktion "Automatisierter Schutz und Wiederherstellung von VMs" wünschen, müssen Sie mit der Bezahlung der "Advance" -Lizenz beginnen. Selbst dann zahlen Sie nur für Backups auf Festplattenebene, die für viele Arten von Workloads wie Active Directory, Datenbanken und usw. nicht ausreichen. Um dies zu vermeiden, möchten Sie möglicherweise den "Live Memory Snapshot and Revert", der die gesamte Datenmenge speichern kann Maschinenzustand, einschließlich des RAM-Inhalts. Diese Funktion ist jedoch Teil der Editionen „Enterprise“ und „Platinum“, die noch teurer sind. Es ist nicht so, dass wir bei HTG den Wert einer echten Backup-Software ablehnen, aber wenn Sie ein knappes Budget haben und sich nicht um Ausfallzeiten für den Backup-Vorgang kümmern, ist Xen-Pocalypse möglicherweise eine absolut vernünftige Lösung bevor Sie die Mittelbindung machen.

Überblick</ h2>

Der "Anwendungsfall": Sie haben einige VMs, die eine Sicherung benötigen. Das Ausschalten und Exportieren einer VM als Datei aus dem Xen Center mit Rechtsklicks funktioniert einwandfrei. Sie möchten jedoch, dass dieser Vorgang automatisch und nach einem Zeitplan ausgeführt wird. Dieses Bash-Skript verwendet den Befehl "XE", um seine Aufgaben auszuführen. XE ist die Xen-Befehlszeilenschnittstelle (Command Line Interface, CLI), eine automatische Entsprechung für die Ausgabe der „Rechtsklicks“ im „Xen Center“. Wir werden das Skript von Cron aufrufen, das den "Scheduling" -Teil liefert. In seiner einfachsten Form ist der Sicherungsablauf:

  • Schalten Sie die Ziel-VM aus.
  • Exportieren Sie die VM als Datei an den Sicherungsspeicherort.
  • Wenn die VM vor dem Start der Sicherung eingeschaltet war, wird sie wieder eingeschaltet.

Lass uns knacken :)

Besorgen Sie sich das Skript

Xen-Pocalypse kann frei von Github bezogen werden,mit den regulären Git-Methoden. Wenn Sie sich mit Git noch nicht auskennen, können Sie die Zip-Datei über diesen Link herunterladen. 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

Während das oben Genannte funktionieren würde, wird empfohlen, die GIT-Methode zu verwenden, damit Sie von zukünftigen Updates profitieren können.

Erhalten Sie SendEmail (optional)

Wir haben in der Vergangenheit über das SendEmail-Perl-Programm geschrieben, sodass hier keine Wiederholung erforderlich ist. Es genügt zu sagen, dass es unter Linux genauso funktioniert wie unter Windows.

Das Aktivieren von E-Mail ist optional, wird jedoch dringend empfohlen, da das Skript folgende Funktionen ausführen kann:

  • Informieren Sie, wann es gestartet und beendet wurde.
  • Benachrichtigen Sie Sie über alle Fehler, die erkannt und behoben werden konnten.
  • Informieren Sie über die Sperrung von Backups aufgrund von Speicherplatzproblemen. (Dieses Verhalten kann deaktiviert werden, wenn es nicht gewünscht ist.)

Laden Sie es auf den Xen-Server herunter und extrahieren 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

Mit Citrix Xen können Sie konfigurieren"Benutzerdefinierte Felder" für Filterfunktionen. Wir werden die Felder erstellen und sie dann mit den von Xen-Pocalypse verwendeten Informationen füllen. Xen-Pocalypse erkennt 3 Kontroll-TAGs, die den Namen des zu sichernden Tags und die Beziehung zwischen Eltern und Kindern bezeichnen. Wenn Sie nicht beabsichtigen, die Dateieingabemethode zu verwenden, MÜSSEN Sie mindestens das Feld für den Namen des Sicherungs-Tags erstellen.

Öffnen Sie dazu die Eigenschaften des Servers oder sogar einer VM. Wählen Sie im Navigationsbereich "Benutzerdefinierte Felder".

xen-backup01

Wenn dies das erste Mal ist, definieren Sie aBeziehung (wie im obigen Beispiel), Sie haben keine Felder, in die Sie Daten eingeben können, daher müssen Sie sie erstellen. Klicken Sie dazu im angezeigten Dialogfeld auf "Benutzerdefinierte Felder bearbeiten" und dann auf "Hinzufügen ...".

xen-backup02a

Erstellen Sie drei (3) Textfelder. Eines heißt "BackupTAG" und die anderen "Eltern" und "Kinder".

Hinweis: Die Namen der benutzerdefinierten Felder wurden im Skript „fest codiert“, sodass Sie NICHT von der obigen Schreibweise abweichen MÜSSEN, es sei denn, Sie ändern auch den entsprechenden Code.

Sobald alle Felder erstellt wurden, sollten Sie Folgendes sehen:

xen-backup03a

Schließen Sie das Fenster. Nun müssen Sie die Felder "BackupTAG", "Parent" und "Children" ausfüllen, wie in der folgenden Abbildung dargestellt.

xen-backup04a

Jetzt müssen Sie nur noch festlegen, welche VMs zu welchem ​​„BackupTAG“ gehören.
Zum Beispiel in der Firma, in der sich das Drehbuch befandIm Zuge unseres Wachstums hatten wir 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. So sah unsere Übersicht aus:

xen-backup05

Wo zum Beispiel "wöchentlich-fr" der Text war, den wir in das "BackupTAG" "Benutzerdefiniertes Feld" eingegeben haben. Ordentlich, was? :)

Eltern & Kinder (optional)

Die wahre Schönheit dieses Skripts ist, dass esunterstützt Beziehungen zwischen Eltern und Kindern. Das heißt, es ist möglich, eine Liste von "untergeordneten" VMs festzulegen, die vor dem übergeordneten VM deaktiviert und gesichert werden und die erst wieder aktiviert werden, wenn das übergeordnete VM die Sicherung abgeschlossen hat und zurückgeschaltet wurde auf. Dies ist in Fällen nützlich, in denen das Deaktivieren der übergeordneten VM dazu führt, dass der Dienst im untergeordneten System nicht mehr verfügbar ist. Dies würde bedeuten, dass der Dienst auf der untergeordneten VM zweimal nicht verfügbar ist, einmal für den Sicherungsvorgang des Kindes und einmal für den des Elternteils. Das Erstellen dieser Beziehung überwindet dieses Problem.

Beispielsweise verwendeten alle unsere Atlassian-VMs aSingle DataBase (DB) VM, die ebenfalls zur Sicherung eingerichtet wurde. Wenn Sie also feststellen, dass die DB-VM ein übergeordnetes Element der anderen VMs ist, kann eine ordnungsgemäße Reihenfolge von Herunterfahren -> Sichern -> Starten sichergestellt werden.

Zum Zeitpunkt des Schreibens dieses Dokuments weist diese Funktion einige Einschränkungen auf:

  1. 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 diese wie im folgenden Beispiel durch Leerzeichen getrennt sind.
  2. Es kann nur einen Elternteil geben. Es ist nicht einmal geplant, mehrere zu benennen, ganz zu schweigen von den getesteten.

Um diese Beziehung zu erstellen, rufen Sie die Eigenschaften der VM auf. Wenn dies ein „Elternteil“ ist, schreiben Sie, wer seine Kinder sind, und wenn dies ein „Kind“ ist, schreiben Sie, wer seine Eltern sind. Zum Beispiel:

xen-backup04

Hinweis: Wenn Sie kein übergeordnetes Element für ein Kind festlegen, wird das Kind möglicherweise gestartet, bevor das übergeordnete Element bereit ist, und es wird möglicherweise zweimal gesichert.

Die FILE-Methode (optional)

Aus historischen Gründen auch Xen-Pocalypseunterstützt das Abrufen der Liste der zu sichernden VMs als Textdatei. Solange der „Code“ noch vorhanden ist, ist die Funktionalität der TAGs-Methode stark unterlegen und wird daher nicht empfohlen. Wenn Sie jedoch aus irgendeinem Grund die Listenmethode bevorzugen, gelten die folgenden Einschränkungen:

  1. Die Namen der VMs dürfen keine Leerzeichen oder Sonderzeichen enthalten.
  2. Es kann nur einen VM-Namen pro Zeile geben.
  3. Leerzeilen sind nicht erlaubt.

Kopieren Sie zum Generieren der Liste entweder den Namen der VM aus dem Xen-Center oder führen Sie Folgendes 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 Sicherungsort

Während ich in Citrix Xen nach dem Zufallsprinzip herumstöbere, stöbere ichhaben festgestellt, dass die Speicher-Repositorys (SRs) für die Verwendung unter "/ var / run / sr-mount /% UUID%" verfügbar sind, wobei UUID die eindeutige Kennung des SR ist, die über die GUI abgerufen werden kann.

Dies bedeutet, dass wir die reguläre Option "Weiter -> Weiter" verwenden können-> Beenden “, um den Mount an den gewünschten Sicherungsspeicherort zu erstellen, und lassen Sie das Skript diesen Pfad verwenden (wie im Zusammenhang mit dem Mounten über die Befehlszeile angegeben), dies würde jedoch den Rahmen dieses Handbuchs sprengen.

Um ein neues "Mount" zu erstellen, klicken Sie mit der rechten Maustaste auf den Servernamen und wählen Sie New SR.

xen-backup06

In diesem Beispiel verweisen wir Xen auf eine Windows-Freigabe. Wählen Sie daher "Windows File Sharing (CIFS)":

xen-backup07

Vervollständigen Sie Weiter -> Weiter -> Fertig stellen.

Beziehen Sie die UUID des SR

Um die UUID eines SR zu erhalten, klicken Sie einfach im Xen Center auf den Namen und wechseln Sie zur Registerkarte "Allgemein".

xen-backup08

Um die UUID zu kopieren, klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie "Kopieren".

xen-backup09b

Mit diesen Informationen können Sie die Einstellungsdatei bearbeiten.

Konfigurieren Sie die Einstellungsdatei.

Das Xen-Pocalypse-Projekt wird mit einem"Einstellungen" -Dateivorlage. Diese Vorlage sollte entsprechend Ihrer Konfiguration bearbeitet und als erstes Argument an das Skript übergeben werden. Die Einstellungsdatei bezeichnet Folgendes:

Die Methode zum Abrufen der zu sichernden VMs - Die Standardmethode ist TAGs. Sie können dies in DATEI ändern, dies wird jedoch nicht empfohlen.

Der Standort des Sicherungsziels - Wenn Sie die Anleitung bis zu diesem Punkt befolgt haben, müssen Sie nur die% UUID% durch die SRs ersetzen, wie sie von oben erhalten wurden.

Der Speicherort von SendEmail - Wenn Sie E-Mail aktiviert haben, müssen Sie hier eingeben, wo Sie die ausführbare Perl-Datei extrahiert haben.

E-Mail-Details - Wenn Sie die E-Mail-Funktion aktiviert haben, müssen Sie folgende Details definieren: An, Von, Servername / IP & etc.

Kompression - Diese Option ist standardmäßig auf "Nein" eingestellt, da bei Aktivierung eine kleinere Sicherungsdatei erstellt wird, die Sicherungsprozedur jedoch erheblich länger ausgeführt wird.

Überprüfen Sie den freien Speicherplatz on the destination - Dies wird das Skript habenStellen Sie sicher, dass beim Durchführen der VM-Sicherung der freie Speicherplatz des Sicherungsorts nicht unter 10 GB fällt. Auf diese Weise wird sichergestellt, dass die meisten VMs gesichert werden und nicht nur eine sehr große VM. Die Berechnung erfolgt unter Verwendung der Brutto-Festplattengröße aller der VM zugeordneten Festplatten.

Debuggen - Standardmäßig ist das Debuggen mit dem Wert „0“ (Null) deaktiviert. Sie sollten dies nicht aktivieren müssen. Andernfalls finden Sie weitere Informationen im Abschnitt zur Fehlerbehebung.

Ausführung / Terminierung

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, in dem sich das Skript und die Einstellungsdatei befinden. Das "Tag", nach dem das Skript sucht, ist "week-fri".

Wie oben erwähnt, verwenden wir Cron, um die Ausführung zu planen. Bevor wir in die Konfiguration gehen, ist es sehr empfehlenswert dass Sie das bereits installierte SSMTP konfigurierenPaket auf Ihrem Xen-Server. Während dies ein optionaler Schritt ist, erhalten Sie auf diese Weise einen Rückspülsammler. Wenn Sie über einen solchen "Rückspülungssammler" verfügen, werden Sie möglicherweise auf Dinge hingewiesen, die das Skript nicht kann.

Nehmen Sie an der Bearbeitung von cron mehr teil, indem Sie Folgendes eingeben:

crontab -e

Wenn Sie die obigen Anweisungen befolgt haben und eine geplante Sicherung für Freitag um 18:01 Uhr (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 oben Gesagte ist unter der Annahme korrekt, dass sich Ihr Skript und Ihre Einstellungsdatei unter "/ root / Xen-pocalypse-master /" befinden.

Fehlerbehebung

Ich habe mir zwar viel Mühe gegeben, dasSkript so einfach zu bedienen und so kinderleicht wie möglich: "Die Welt ist ein größeres Labor". Die folgenden Informationen können Ihnen dabei helfen, die Ursache Ihrer Probleme zu ermitteln.

Fortschritt

Sie können diesen einen Liner verwenden, um schnell alle laufenden Aufgaben zu überwachen, um zu prüfen, ob sie tatsächlich ausgeführt werden oder tatsächlich hängen 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 die Wiedergabe zu beenden, drücken Sie Strg + C, um die While-Schleife zu unterbrechen.

Protokollierung

Die gesamte Protokollierung wird vom Xen-Host erfasst, auf dem das Skript im Syslog-Mechanismus ausgeführt wird. Dies kann natürlich angesehen werden mit:

less +F /var/log/messages

Sie suchen das Schlüsselwort „Xen-Pocalypse“.

Hinweis: Citrix hat eine Aufbewahrungsrichtlinie für Syslog seiner Server für zwei (2) Tage festgelegt. Möglicherweise möchten Sie dies bei Postmortems berücksichtigen.

Debuggen

Wie im Einstellungsdateisegment vermerkt, gibt es einDirektive, um das Debuggen zu aktivieren. Wenn Sie das Debuggen aktivieren, gibt das Skript eine ausführliche Protokollierung an die Konsole aus, um zu verhindern, dass E-Mails gesendet und die Exporte tatsächlich ausgeführt werden, sofern nicht auch die entsprechenden Flags gesetzt sind. Die möglichen Flags sind in der Vorlage der Einstellungsdatei vermerkt und ermöglichen es Ihnen, genau zu definieren, was Sie debuggen möchten.

Ich hoffe, Sie haben kein Debugging benötigt und ernten die Früchte meiner Arbeit :)


Thrust, mein Mann, du wirst gleich zum Decepticon Nummer eins ...