Backup-Architektur für Citrix XenServer Pool

Wie viele andere Hoster betreiben wir eine Citrix XenServer Umgebung zum Betrieb von virtualisierten Maschinen, u.a. für unsere Kunden im Bereich Webhosting.

Eine Herausforderung hierbei ist das sichere Backup der VMs.
Da wir Downtimes vermeiden wollten, wählten wir zunächst eine Low-Level Lösung mittels LVM (Logical Volume Manager) Snapshots, des an unsere Hypervisor angebundenen Storage Repository (SR).

Die oben angesprochene und bereits entwickelte Lösung bestand bei uns aus einem Snapshot-Rotate script, einem Backup Server mit Rsnapshot (zum herunterladen der Snapshots) und entsprechenden Lockings für die cronjobs.

Mit dieser Herangehensweise liefen wir leider in ein großes performance Problem, denn sobald unser Storage einen LV-Snapshot (Logical Volume) anlegte, wurden die NFS-Exports, an denen die Hypervisor-Server hängen, extrem langsam (Directory Listing des SR: ~40sec).

Das für den Stillstand zuständige Problem konnte nicht final geklärt werden. Jedenfalls können wir den xfs_freeze (hier ein paar Tipps, was vor einem LV-Snapshot nicht verwendet werden sollte) als Problemquelle ausschließen. Ich vermute die Ursache spielt sich in der Speicherallokation, für die Snapshots in der 2.6.x Kernelreihe, ab.

Weiterhin berichten Nutzer auf Seiten wie z.B. serverfault.com von Durchsatzverschlechterungen von Faktor 3-6 (die auch bei einem nur teilweise ausgelasteten System kritisch werden könnten).

Final entschieden wir uns für das Backup über native Snapshots. Hier ist der klare Vorteil gegeben, dass die Synchronisation komplett vom XenServer Backend (Storage Manager etc.) übernommen wird. Das Snapshotting kann einfach über die XApi via <code>xe</code> gesteuert werden.

Wir haben dazu das verlinkte Script angepasst, um einfaches Fehlerhandling sowie den FTPS-Upload zu ermöglichen.

vm_backup

Die Sicherheit der Daten unserer Kunden ist uns enorm wichtig. Daher kommt nur eine Lösung in Betracht, die für Internet-Übertragungen  z.B. eine TLS-Verschlüsselung (Zertifikat auf Basis von 4096bit RSA key + SHA256 Signatur) verwendet.

Das Sichern der Snapshots, von der Xen-Master-Dom0 auf den Backupserver, geschiet gesichtert via FTPS (FTP + SSL). NFS3 ist aus Sicherheitsgründen keine Option, NFSV4 mit einer Verschlüsselung hat einen immensen Overhead an PKI Verwaltung, Ticketserver (Kerberos) etc. und die Anbindung via fuse+sftp ist zu wackelig, insbesondere weil XenServer noch auf CentOS 5 setzt.

Wir verwenden daher eine aktuelle Version von LFTP zum Datentransfer, was gesondert zu beachten ist.

Ein kleiner Tipp noch für die Implementierung des Backup-Cronjobs: Um beispielsweise „jeden 2. Samstag des Monats“ ein Backup zu starten, empfiehlt sich das tool run-if-today