Haben Sie jemals ein Backup Ihrer virtuellen Citrix Xen-Maschinen (VMs) benötigt, möchten aber die Bank dabei nicht brechen? HTG bietet Ihnen nur das Bash-Skript mit Xen-Pocalypse.

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

In Citrix Xen ist das eine der schönsten Eigenschaften, die viele seiner Funktionen bieten kostenlos kostenlos Wenn Sie jedoch die Funktion "Automatisierter VM-Schutz und Wiederherstellung" wünschen, müssen Sie für die "Advance" -Lizenz zahlen. Selbst dann zahlen Sie nur für Sicherungen auf Festplattenebene, die für viele Arten von Workloads wie Active Directory, Datenbanken und usw. nicht ausreichen. Um dies zu umgehen, möchten Sie möglicherweise den „Live Memory Snapshot and Revert“, mit dem das gesamte System gespeichert werden 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 Sicherungssoftware ablehnen, aber wenn Sie ein knappes Budget haben und sich nicht um einige Ausfallzeiten für den Sicherungsvorgang kümmern, könnte Xen-pocalypse eine durchaus vernünftige Lösung sein bevor Sie die Mittelbindung eingehen.

Überblick

Der "Anwendungsfall": Es gibt einige VMs, für die eine Sicherung erforderlich ist. Das „Deaktivieren einer VM und Exportieren als VM“ aus dem „Xen Center“ mit Rechtsklicks funktioniert in Ordnung, aber Sie möchten, dass dieser Prozess 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 (CLI), eine automatische Entsprechung für die Ausgabe von „Rechtsklicks“ im „Xen Center“. Wir rufen das Skript von Cron an, das den Teil "Scheduling" bereitstellt. In seiner einfachsten Form lautet der Sicherungsfluss:

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

Lass uns knacken :)

Besorgen Sie sich das Skript

Xen-Pokalypse kann unter Verwendung der üblichen Git-Methoden frei von Github erhalten werden. Wenn Sie sich mit git noch nicht auskennen, können Sie die zip-Datei mit diesem Link verwenden. 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 die obigen Ausführungen funktionieren, wird empfohlen, die GIT-Methode zu verwenden, damit Sie von zukünftigen Updates profitieren können.

SendEmail erhalten (optional)

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

Die Aktivierung von E-Mails ist zwar optional, wird jedoch dringend empfohlen, da das Skript dann Folgendes kann:

  • Informieren Sie, wann es gestartet wurde und beendet wurde.
  • Sie auf Fehler aufmerksam machen, die es erkennen und handhaben konnte.
  • Informieren Sie sich über Backup-Disqualifikationen aufgrund von Speicherplatzproblemen. (Dieses Verhalten kann deaktiviert werden, wenn dies nicht gewünscht wird.)

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 Ort, an den Sie es extrahiert haben. Sie benötigen es für die Einstellungsdatei.

Tags definieren

Mit Citrix Xen können Sie "Benutzerdefinierte Felder" für Filterfunktionen konfigurieren. Wir erstellen die Felder und füllen sie mit den Informationen aus, die von Xen-pocalypse verwendet werden. Xen-pocalypse erkennt drei Kontroll-TAGs, die den Namen des Tags für die Sicherung und die Beziehungen zwischen Eltern und Kindern angeben. Wenn Sie die Dateieingabemethode nicht verwenden möchten, MÜSSEN Sie mindestens das Feld für den Sicherungs-Tag-Namen 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, in die Sie Daten eingeben können. Sie müssen sie also erstellen. Klicken Sie dazu im angezeigten Dialogfeld auf "Benutzerdefinierte Felder bearbeiten" und anschließend auf "Hinzufügen".

Erstellen Sie drei (3) Felder vom Typ "Text". Eine wird "BackupTAG" genannt, die anderen "Eltern" und "Kinder".

Hinweis: Die Namen der benutzerdefinierten Felder wurden in das Skript "hartcodiert". Sie MÜSSEN daher NICHT von der obigen Schreibweise abweichen, 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 nun die Felder "BackupTAG", "Parent" und "Children" wie in der Abbildung unten ausfüllen.

Jetzt müssen Sie nur noch festlegen, welche VMs zu welchem ​​"BackupTAG" gehören. Zum Beispiel hatten wir in der Firma, in der das Skript gewachsen war, VMs, die wöchentlich am Donnerstag und Freitag gesichert werden sollten, einen Zeitplan für unsere Atlassian-Produkt-VMs und einige, die nur monatlich gesichert werden sollten. So sah unser Überblick aus:

Wo zum Beispiel "week-fri" der Text war, den wir in "BackupTAG" "Custom Field" eingegeben haben. Ordentlich, nicht wahr? :)

Eltern & Kinder (optional)

Das wahre Schöne an diesem Skript ist, dass es Beziehungen zwischen Eltern und Kindern unterstützt. Das heißt, es ist möglich, eine Liste von "untergeordneten" VMs festzulegen, die vor dem übergeordneten Element deaktiviert und gesichert wurden. Diese untergeordneten Elemente werden erst dann wieder aktiviert, wenn das übergeordnete Backup des übergeordneten Computers abgeschlossen und zurückgesetzt wurde auf.Dies ist nützlich in Fällen, in denen das Deaktivieren der übergeordneten VM dazu führt, dass der Dienst im untergeordneten Server nicht verfügbar ist. Dies würde bedeuten, dass der Dienst auf der untergeordneten VM zweimal verfügbar wäre, einmal für den Sicherungsprozess des Kindes und einmal für das der Eltern. Das Erstellen dieser Beziehung überwindet dieses Problem.

Zum Beispiel verwendeten alle unsere Atlassian-VMs eine einzige DataBase (DB) -VM, die ebenfalls gesichert wurde. Durch die Feststellung, dass die DB-VM den anderen VMs übergeordnet ist, kann eine korrekte Reihenfolge beim Herunterfahren -> Sichern -> Starten sichergestellt werden.

Zum Zeitpunkt dieses Schreibens hat diese Funktion einige Einschränkungen:

  1. Die Namen der VMs, die eine solche Beziehung haben sollen, dürfen keine Leerzeichen enthalten. Sie müssen Leerzeichen aus den VM-Namen entfernen, da diese wie im folgenden Beispiel durch Leerzeichen getrennt sind.
  2. Es kann nur ein Elternteil geben. Die Angabe von mehr als einer ist nicht einmal geplant, ganz zu schweigen von

Um diese Beziehung zu erstellen, gehen Sie zu den Eigenschaften der VM. Wenn dies ein "Elternteil" ist, schreiben Sie, wer seine Kinder sind, und wenn dies ein "Kind" ist, schreiben Sie, wer sein Elternteil ist. Zum Beispiel:

Hinweis: Wenn Sie kein übergeordnetes Element für ein untergeordnetes Element angeben, wird das Kind möglicherweise vor dem Bereitstellen des übergeordneten Elements gestartet und möglicherweise zweimal gesichert.

Die FILE-Methode (optional)

Aus historischen Gründen unterstützt Xen-pocalypse auch das Abrufen der Liste der VMs, die als Textdatei gesichert werden sollen. Während der "Code" immer noch vorhanden ist, ist die Funktionalität der TAGs-Methode stark unterlegen und wird daher nicht empfohlen. Wenn Sie jedoch die Listenmethode aus irgendeinem Grund vorziehen, gelten folgende 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.

Um die Liste zu generieren, kopieren Sie entweder den Namen der VM aus dem Xen-Center oder führen Sie 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

Während ich in Citrix Xen zufällig herumstocherte, habe ich festgestellt, dass die Speicher-Repositorys (SRs) unter „/ var / run / sr-mount /% UUID%“ verfügbar sind, wobei UUID der eindeutige Bezeichner des SR ist von der GUI erhalten.

Dies bedeutet, dass wir den regulären Assistenten "Next -> Next -> Finish" verwenden können, um die Bereitstellung am gewünschten Sicherungsspeicherort zu erstellen. Anschließend kann das Skript diesen Pfad verwenden (wie bei der Installation von der Befehlszeile aus mit dem Mounten), aber dies ist der Fall Dies geht über den Rahmen dieses Handbuchs hinaus.

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

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

Beenden Sie das Next -> Next -> Finish.

Besorgen Sie sich die UUID der SR

Um die UUID einer SR zu erhalten, klicken Sie einfach auf ihren Namen in Xen Center und gehen Sie auf die Registerkarte "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 für "Einstellungen" geliefert. Diese Vorlage sollte entsprechend Ihrem Setup bearbeitet und als erstes Argument an das Skript übergeben werden. Die Einstellungsdatei bezeichnet Folgendes:

Die Methode zum Abrufen der zu sichernden VMs - Die Standardmethode sind 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 sich für die Aktivierung von E-Mail entschieden haben, müssen Sie angeben, wo Sie die ausführbare Perl-Datei hier extrahiert haben.

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

Kompression - Diese Option ist standardmäßig auf "Nein" gesetzt, da beim Aktivieren eine kleinere Sicherungsdatei erstellt wird, der Sicherungsvorgang jedoch erheblich länger ausgeführt wird.

Auf freien Speicherplatz prüfen am Ziel: Das Skript überprüft, ob der freie Speicherplatz des Backup-Speicherorts nicht unter 10 GB fällt. Dadurch wird sichergestellt, dass die meisten VMs gesichert werden und nicht nur eine sehr große VM. Die Berechnung erfolgt anhand der Gesamtsumme aller Festplatten, die der VM zugeordnet sind.

Debuggen - Standardmäßig ist das Debugging mit dem Wert "0" (Null) deaktiviert. Sie sollten dies nicht aktivieren müssen. In diesem Fall werden jedoch weitere Informationen im Abschnitt zur Problembehandlung angezeigt.

Ausführung / Terminplanung

In seiner einfachsten Form würde ein Aufruf von Xen-Pocalypse folgendermaßen aussehen:

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

In dem obigen Fall befinden wir uns in dem Verzeichnis, in dem sich das Skript und die Einstellungsdatei befinden. Das "Tag", nach dem das Skript suchen soll, lautet "week-fri".

Wie oben erwähnt, verwenden wir Cron, um die Ausführung zu planen. Bevor wir in die Konfiguration gehen, ist es so sehr empfehlenswert dass Sie das bereits installierte SSMTP-Paket auf Ihrem Xen-Server konfigurieren. Während dies ein optionaler Schritt ist, erhalten Sie einen Rückspülkollektor. Wenn Sie einen solchen "Rückspülkollektor" haben, werden Sie möglicherweise darauf aufmerksam gemacht, dass das Skript nicht

Treten Sie in die cron-Bearbeitung ein, indem Sie Folgendes ausgeben:

crontab -e

Wenn Sie die obigen Anweisungen befolgt haben und eine geplante Sicherung für Freitag um 18:01 (18:01) 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 die Einstellungsdatei befinden sich beide unter "/ root / Xen-pocalypse-master /".

Fehlerbehebung

Obwohl ich mich sehr darum bemüht habe, das Skript so benutzerfreundlich und narrensicher wie möglich zu gestalten, ist "Die Welt ist ein größeres Labor". Die nachstehenden Informationen können Ihnen dabei helfen, die Ursache Ihrer Probleme zu ermitteln.

Fortschritt

Sie können diesen Liner verwenden, um alle laufenden Aufgaben schnell zu "beobachten", um zu sehen, ob sie tatsächlich voranschreiten oder ob sie tatsächlich festgefahren sind.

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 stoppen, bremsen Sie die „while-Schleife“ mit Strg + C.

Protokollierung

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

less +F /var/log/messages

Sie suchen nach dem Schlüsselwort „Xen-Pokalypse“.

Hinweis: Citrix hat eine Aufbewahrungsrichtlinie von zwei (2) Tagen für Syslog seiner Server festgelegt. Sie sollten dies für Postmortems berücksichtigen.

Debuggen

Wie im Einstellungsdateisegment erwähnt, gibt es eine Anweisung, die das Debuggen aktiviert. Die Aktivierung des Debugging führt dazu, dass das Skript ausführliche Protokollierung an die Konsole ausgibt und es so aussieht, dass es keine E-Mails sendet und tatsächlich Exporte ausführt, es sei denn, die entsprechenden Flags sind ebenfalls gesetzt. Die möglichen Flags werden in der Einstellungsdateivorlage notiert und ermöglichen Ihnen, das Debugging genau zu definieren.

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


Thrust, mein Mann, du bist im Begriff, der Decepticon Nummer eins zu werden…

Top-Tipps:
Kommentare: