Backups sind ein integraler Bestandteil jeder IT-Strategie. In einer komplexen Infrastruktur wie OpenStack ist es nicht immer leicht den Überblick über zu sichernde Komponenten zu behalten. Sollte wirklich einmal ein größerer Ausfall eintreten, ist es wichtig, Daten schnell und möglichst ohne Verluste wiederherstellen zu können.

Backup und Restore mit Freezer

OpenStack bietet für die Durchführung von Backups und Restores die Komponente Freezer an. Mit Freezer können sowohl Datenbanken, einzelne Verzeichnisse als auch OpenStack-Ressourcen wie virtuelle Maschinen oder Volumes gesichert und wiederhergestellt werden.

Als Backup-Ziel stehen zurzeit lokale Ordner (und damit auch über NFS eingehängte Verzeichnisse), ein entfernter Host über SSH, sowie Storage, der über eine Swift-API oder S3-API erreichbar ist, zur Verfügung. Dabei können verschiedene Backup-Ziele beliebig kombiniert werden. Es ist zum Beispiel möglich, Backups lokal zu speichern und gleichzeitig in Swift hochzuladen.

Aufbau von Freezer

Kern von Freezer ist freezer-agent, ein Dienst um die eigentlichen Backups und das Wiederherstellen der Backups durchzuführen. Der Dienst ist auf den einzelnen Nodes der Control Plane installiert und kann auch manuell als Kommandozeilentool verwendet werden.

Die API von Freezer dient dazu, sogenannte Jobs zu spezifizieren. In diesen Jobs, die im JSON-Format übergeben werden, werden verschiedene Aktionen definiert und wann und wie oft sie ausgeführt werden sollen. Dabei können verschiedene Backup-Aktionen – auch auf unterschiedlichen Nodes – parallel ausgeführt werden, um möglichst konsistente Daten zu erhalten.

Diese Jobdefinitionen fragt der Dienst freezer-scheduler von der API ab und startet den freezer-agent mit entsprechenden Parametern, um die Aktionen durchzuführen.

Daneben gibt es das Plugin freezer-web-ui für das OpenStack Dashboard Horizon.

Momentan wird noch an dem unabhängigen Service freezer-dr gearbeitet, der für Disaster Recovery bei Ausfall eines oder mehrerer Compute-Nodes zuständig ist.

Weitere Informationen

OpenStack Wiki:
https://wiki.openstack.org/wiki/Freezer

OpenStack Git:
https://git.openstack.org/cgit/openstack/freezer/
https://git.openstack.org/cgit/openstack/freezer-api/
https://git.openstack.org/cgit/openstack/freezer-dr/
https://git.openstack.org/cgit/openstack/freezer-web-ui/

Dokumentation:
https://docs.openstack.org/freezer/latest/index.html

IRC-Channel:
#openstack-freezer auf freenode.org

David Rabel arbeitet bei B1 Systems als Trainer und Consultant für Themen rund um Linux und OpenStack. Er ist Mitglied des Debian OpenStack Packaging Teams und steuert selbst gelegentlich Patches zum OpenStack Code oder der Dokumentation bei.