[ English | Indonesia | Deutsch | 日本語 ]

Sicherung und Wiederherstellung

Bei der Erstellung Ihrer OpenStack-Backup-Richtlinie gelten die üblichen Backup-Best Practices. Zum Beispiel hängt die Häufigkeit der Sicherung Ihrer Daten eng damit zusammen, wie schnell Sie nach einem Datenverlust wiederherstellen müssen.

Bemerkung

Wenn Sie überhaupt keinen Datenverlust erleiden können, sollten Sie sich auch auf eine hochverfügbare Bereitstellung konzentrieren. Der OpenStack High Availability Guide bietet Vorschläge zur Beseitigung eines einzelnen Fehlers, der zu Systemausfällen führen kann. Es ist zwar kein vollständig normatives Dokument, bietet aber Methoden und Techniken zur Vermeidung von Ausfallzeiten und Datenverlust.

Andere Überlegungen zur Sicherung beinhalten:

  • Wie viele Backups müssen aufbewahrt werden?

  • Sollten Backups extern aufbewahrt werden?

  • Wie oft sollten Backups getestet werden?

Genauso wichtig wie eine Backup-Richtlinie ist eine Wiederherstellungsrichtlinie (oder zumindest ein Wiederherstellungstest).

Was zu sichern ist

Während OpenStack aus vielen Komponenten und beweglichen Teilen besteht, ist die Sicherung der kritischen Daten recht einfach.

In diesem Kapitel wird nur beschrieben, wie Sie Konfigurationsdateien und Datenbanken sichern, die von den verschiedenen OpenStack-Komponenten ausgeführt werden müssen. Dieses Kapitel beschreibt nicht, wie Sie Objekte im Objektspeicher oder Daten im Blockspeicher sichern können. Im Allgemeinen bleiben diese Bereiche den Benutzern überlassen, um selbstständig zu sichern.

Datenbank Backups

Die exemplarische OpenStack-Architektur bezeichnet den Cloud-Controller als MySQL-Server. Dieser MySQL-Server hostet die Datenbanken für nova, glance, cinder und keystone. Mit all diesen Datenbanken an einem Ort ist es sehr einfach, ein Datenbank-Backup zu erstellen:

# mysqldump --opt --all-databases > openstack.sql

Wenn Sie nur eine einzelne Datenbank sichern möchten, können Sie stattdessen ausführen:

# mysqldump --opt nova > nova.sql

wobei nova die Datenbank ist, die Sie sichern möchten.

Sie können diesen Prozess einfach automatisieren, indem Sie einen Cron-Job erstellen, der das folgende Skript einmal täglich ausführt:

#!/bin/bash
backup_dir="/var/lib/backups/mysql"
filename="${backup_dir}/mysql-`hostname`-`eval date +%Y%m%d`.sql.gz"
# Dump the entire MySQL database
/usr/bin/mysqldump --opt --all-databases | gzip > $filename
# Delete backups older than 7 days
find $backup_dir -ctime +7 -type f -delete

Dieses Skript sichert die gesamte MySQL-Datenbank und löscht alle Backups, die älter als sieben Tage sind.

Dateisystem-Backups

In diesem Abschnitt wird besprochen, welche Dateien und Verzeichnisse regelmäßig gesichert werden sollten, organisiert nach Diensten.

Compute

Das Verzeichnis /etc/nova sowohl auf dem Cloud Controller als auch auf den Compute-Knoten sollte regelmäßig gesichert werden.

/var/log/nova braucht nicht gesichert zu werden, wenn alle Protokolle in einen zentralen Bereich gehen. Es wird dringend empfohlen, einen zentralen Protokollierungsserver zu verwenden oder das Protokollverzeichnis zu sichern.

/var/lib/nova ist ein weiteres wichtiges Verzeichnis für die Sicherung. Die Ausnahme bildet das Unterverzeichnis /var/lib/nova/instances auf Compute-Knoten. Dieses Unterverzeichnis enthält die KVM-Images der laufenden Instanzen. Sie möchten dieses Verzeichnis nur sichern, wenn Sie Sicherungskopien aller Instanzen pflegen müssen. In den meisten Fällen müssen Sie dies nicht tun, aber dies kann von Cloud zu Cloud und Ihren Service Levels variieren. Beachten Sie auch, dass die Erstellung eines Backups einer aktiven KVM-Instanz dazu führen kann, dass diese Instanz nicht richtig startet, wenn sie jemals aus einem Backup wiederhergestellt wird.

Abbildkatalog und Lieferung

/etc/glance und /var/log/glance folgen den gleichen Regeln wie ihre nova-Pendants.

/var/lib/glance sollte ebenfalls gesichert werden. Beachten Sie besonders /var/lib/glance/images. Wenn Sie ein dateibasiertes Backend von glance verwenden, ist /var/lib/glance/images der Ort, an dem die Abilder gespeichert werden, und es sollte mit Sorgfalt vorgegangen werden.

Es gibt zwei Möglichkeiten, die Stabilität mit diesem Verzeichnis zu gewährleisten. Das erste ist, sicherzustellen, dass dieses Verzeichnis auf einem RAID-Array ausgeführt wird. Wenn eine Festplatte ausfällt, ist das Verzeichnis verfügbar. Der zweite Weg ist die Verwendung eines Tools wie rsync, um die Abbilder auf einen anderen Server zu replizieren:

# rsync -az --progress /var/lib/glance/images backup-server:/var/lib/glance/images/

Identität

/etc/keystone und /var/log/keystone folgen den gleichen Regeln wie andere Komponenten.

/var/lib/keystone, obwohl es keine zu verwendenden Daten enthalten sollte, kann für alle Fälle auch eine Sicherung durchgeführt werden.

Block Speicher

/etc/cinder und /var/log/cinder folgen den gleichen Regeln wie andere Komponenten.

/var/lib/cinder sollte ebenfalls gesichert werden.

Netzwerk

/etc/neutron und /var/log/neutron folgen den gleichen Regeln wie andere Komponenten.

/var/lib/neutron sollte ebenfalls gesichert werden.

Objekt Speicher

/etc/swift ist sehr wichtig, um ein Backup erstellt zu haben. Dieses Verzeichnis enthält die swift Konfigurationsdateien sowie die Ringdateien und Ring builder files, die bei Verlust die Daten auf Ihrem Cluster unzugänglich machen. Eine bewährte Vorgehensweise ist es, die Builder-Dateien zusammen mit den Ringdateien auf alle Speicherknoten zu kopieren. Mehrere Sicherungskopien sind über Ihren Speichercluster verteilt.

Telemetrie

Sichern Sie das Verzeichnis /etc/ceilometer mit den Konfigurationsdateien der Telemetrie.

Orchestrierung

Sichern Sie die HOT-Template-Dateien yaml und das Verzeichnis /etc/heat/ mit den Orchestrierungs-Konfigurationsdateien.

Wiederherstellen von Backups

Die Wiederherstellung von Backups ist ein ziemlich einfacher Prozess. Stellen Sie zunächst sicher, dass der wiederherzustellende Dienst nicht ausgeführt wird. Um beispielsweise eine vollständige Wiederherstellung von nova auf dem Cloud-Controller durchzuführen, stoppen Sie zunächst alle nova Dienste:

# stop nova-api
# stop nova-consoleauth
# stop nova-novncproxy
# stop nova-objectstore
# stop nova-scheduler

Jetzt können Sie eine zuvor gesicherte Datenbank importieren:

# mysql nova < nova.sql

Sie können auch gesicherte nova-Verzeichnisse wiederherstellen:

# mv /etc/nova{,.orig}
# cp -a /path/to/backup/nova /etc/

Sobald die Dateien wiederhergestellt sind, starten Sie die Sicherung:

# start mysql
# for i in nova-api nova-consoleauth nova-novncproxy \
  nova-objectstore nova-scheduler
> do
> start $i
> done

Andere Dienste folgen dem gleichen Prozess, mit ihren jeweiligen Verzeichnissen und Datenbanken.

Zusammenfassung

Backup und anschließende Wiederherstellung ist eine der ersten Aufgaben, die Systemadministratoren lernen. Allerdings hat jedes System unterschiedliche Elemente, die Aufmerksamkeit erfordern. Indem Sie sich um Ihre Datenbank, Ihren Bildservice und die entsprechenden Dateisystemstandorte kümmern, können Sie sicher sein, dass Sie mit jedem Ereignis umgehen können, das eine Wiederherstellung erfordert.