So sichern Sie Citrix Xen-VMs kostenlos mit Xen-Pocalypse (Bash)
Haben Sie schon einmal ein Backup Ihrer virtuellen Citrix Xen-Maschinen (VMs) gemacht, möchten aber nicht die Bank 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 besten Eigenschaften, dass viele seiner Funktionen vorhanden sind kostenlos kostenlos. Wenn Sie jedoch die Funktion "Automatischer Schutz und Wiederherstellung von VMs" wünschen, müssen Sie für die "Advance" -Lizenz bezahlen. 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 einige Ausfallzeiten für den Sicherungsvorgang nicht stören, 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 „Ausschalten einer VM und Exportieren als Datei“ aus dem „Xen Center“ mit Rechtsklicks funktioniert zwar 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), ein automatisches Äquivalent 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:
- Deaktivieren Sie die Ziel-VM.
- 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 :)
Erhalten Sie 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
Master entpacken
Während die obigen Ausführungen funktionieren, 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, so dass hier nicht nochmals darauf hingewiesen werden muss. 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 von Xen-pocalypse verwendeten Informationen. Xen-pocalypse erkennt 3 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". Daher MÜSSEN Sie 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)
Die eigentliche Schönheit dieses Skripts besteht darin, 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 in Fällen nützlich, 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 den des Elternteils. 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 ein "Parent" für die anderen VMs ist, kann eine korrekte Reihenfolge beim Herunterfahren -> Sichern -> 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 den VM-Namen entfernen, da diese wie im folgenden Beispiel durch Leerzeichen getrennt sind.
- Es kann nur ein Elternteil geben. Das Bestimmen von mehr als einem ist nicht einmal geplant, geschweige denn getestet.
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 möglicherweise das Kind gestartet, bevor das übergeordnete Element bereit ist, und das Backup kann zweimal gesichert werden.
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" 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:
- 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 erstellen, 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 Namensschild | awk
'print $ 4' | Sortieren
Kopieren Sie die obige Liste in eine normale Textdatei.
Der Backup-Speicherort
Während ich in Citrix Xen nach dem Zufallsprinzip herumspielte, 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 das 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 des SR
Um die UUID eines SR zu erhalten, klicken Sie einfach auf den Namen in Xen Center und wechseln Sie zur Registerkarte „General“.
Um die UUID zu kopieren, klicken Sie einfach mit der rechten Maustaste darauf und wählen Sie "Kopie"..
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 hier angeben, wo Sie die ausführbare Perl-Datei 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 durch die Aktivierung zwar 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.
Debugging - 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 wöchentlich
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 auf Dinge aufmerksam gemacht, zu denen das Skript nicht in der Lage ist.
Treten Sie in crons 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 week-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]; tun für VM in "$ (xe Task-Liste | grep uuid | awk 'print $ 5')"; xe task-param-get param-name = progress uuid = $ VM; sleep 1; erledigt; erledigt
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:
weniger + 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.
Debugging
Wie im Einstellungsdateisegment erwähnt, gibt es eine Anweisung, die das Debugging 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 dabei, der Decepticon Nummer eins zu werden ...