Sie können Ihre Hybriddaten über CSI-Snapshots (Container Storage Interface) sichern und wiederherstellen. CSI-Sicherungen lösen Laufwerk-Snapshots aus, die vom zugrunde liegenden Speichersystem mit dem bereitgestellten CSI-Treiber erstellt werden. Für die CSI-Sicherung sind weder ein Google Cloud Storage-Bucket noch ein Remote-Server zum Speichern von Sicherungsdaten erforderlich.
CSI-Sicherungen werden für Hybridinstanzen empfohlen, die in Google Cloud, AWS oder Azure gehostet werden.
Auf dieser Seite werden die Schritte zur Verwendung der Hybrid-CSI-Sicherung und -Wiederherstellung beschrieben. Eine Übersicht über die Hybrid-Sicherung und -Wiederherstellung im Allgemeinen finden Sie in der Übersicht zum Sichern und Wiederherstellen in Cassandra.
Einschränkungen bei der Sicherung und Wiederherstellung
Beachten Sie diese Einschränkungen bei der Verwendung der CSI-Sicherung und -Wiederherstellung:
- Der von der konfigurierten Speicherklasse verwendete CSI-Treiber muss CSI-Snapshots unterstützen. Informationen zu Treibern finden Sie in dieser Kubernetes-CSI-Treiberliste.
- Nicht alle Plattformen werden unterstützt. Nur Google Cloud-, AWS- und Azure-Plattformen werden unterstützt.
- Die OpenShift-Containerplattform wird aufgrund von Einschränkungen für Volume-Snapshots nicht unterstützt.
- Nur Cloud-Plattformen werden unterstützt. Lokale Plattformen werden nicht unterstützt.
- CSI-Sicherungsdaten und Nicht-CSI-Hybridsicherungsdaten sind nicht kompatibel. Nicht-CSI-Sicherungen können nicht mit CSI-Wiederherstellungen und CSI-Sicherungen nicht mit Nicht-CSI-Wiederherstellungen verwendet werden.
- Für die Installation und Funktionalität der CSI-Treiber ist der jeweilige Anbieter verantwortlich.
- Nutzer sind dafür verantwortlich, dass ausreichende Clusterressourcen für die Bereitstellung von CSI-Snapshots verfügbar sind.
- Nutzer sind dafür verantwortlich, alte Snapshot-Daten zu entfernen.
CSI-Sicherungen einrichten
Führen Sie die folgenden Schritte aus, um Hybridsicherungen mithilfe von CSI zu planen:
- Wenn Sie die Hybridsicherung noch nicht eingerichtet haben:
- Führen Sie den folgenden
create-service-account
-Befehl aus, um ein Google Cloud-Dienstkonto (Service Account, SA) mit der Standardrolleroles/storage.objectAdmin
zu erstellen. Mit dieser SA-Rolle können Sie Sicherungsdaten in Cloud Storage schreiben. Führen Sie den folgenden Befehl in dem Verzeichnis aus, das für Ihr Managementtool geeignet ist:- Helm-Diagramme:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
apigeectl
:HYBRID_BASE_DIRECTORY/hybrid-files/
./tools/create-service-account --env non-prod --dir ./service-accounts
Mit diesem Befehl wird ein einzelnes Dienstkonto mit dem Namen
apigee-non-prod
für die Verwendung in einer Nicht-Produktionsumgebung erstellt und die heruntergeladene Schlüsseldatei im Verzeichnis./service-accounts
abgelegt.Weitere Informationen zu Google Cloud-Dienstkonten finden Sie unter Dienstkonten erstellen und verwalten.
- Helm-Diagramme:
- Mit dem Befehl
create-service-account
wird eine JSON-Datei mit dem privaten Schlüssel des Dienstkontos gespeichert. Die Datei wird im selben Verzeichnis gespeichert, in dem der Befehl ausgeführt wird. Sie benötigen den Pfad zu dieser Datei in den folgenden Schritten.
- Führen Sie den folgenden
- Öffnen Sie Ihre
overrides.yaml
-Datei. Legen Sie die folgenden Parameter fest, wie unter Beispiel für Überschreibungsdateien gezeigt.- Legen Sie die unten aufgeführten allgemeinen Parameter im
backup
-Block fest. Wenn Sie diese Parameter bereits für die Nicht-CSI-Hybridsicherungslösung festgelegt haben, können Sie dieselben Parameter für Ihre CSI-Snapshots verwenden. Weitere Informationen zu den einzelnen Werten finden Sie in der Referenztabelle für Sicherungsattribute.
Für
backup
:- aktiviert: Legen Sie
true
fest, um geplante Sicherungen zu aktivieren. - pullPolicy im Image: Auf
Always
festlegen. - schedule: Geben Sie einen Zeitplan für Cron-Ausdrücke an.
- aktiviert: Legen Sie
- Legen Sie diese Parameter für die CSI-spezifische Sicherung fest:
- Cassandra-Speichergruppenwerte: Die konfigurierte Cassandra-Speicherklasse muss CSI-Snapshots unterstützen, damit die CSI-Sicherung und -Wiederherstellung funktionieren. Um zu prüfen, ob eine Speicherklasse CSI-Snapshots unterstützt, führen Sie den folgenden Befehl aus, um die verfügbaren Speicherklassen zu erhalten:
Sehen Sie sich die Ausgabe „Bereitsteller” für jede Speicherklasse an. Bereitsteller, die CSI verwenden, haben in der Regel einen „.csi.”-Bestandteil in ihrem Namen, wie etwa in „pd.csi.storage.gke.io”. Suchen Sie in dieser Kubernetes-CSI-Treiberliste nach dem Namen des Bereitstellers. Wenn die Spalte „Andere Features” für den Bereitsteller das Wort „SNAPSHOT” enthält, unterstützt die Speicherklasse, die den Bereitsteller nutzt, CSI-Snapshots.kubectl get sc
Fügen Sie diese Parameter der Speichergruppe hinzu. Beide Werte sind erforderlich.
- storageclass: Ein Speicherklassen-Name, für den CSI-Snapshots aktiviert sind.
- capacity: Die Kapazität des Laufwerks.
- Cloud-Anbietertyp:
Nachdem die CSI-Snapshot-Funktion verifiziert wurde, ändern Sie die Überschreibungsdatei so, damit die CSI-Sicherung und -Wiederherstellung verwendet wird:
- cloudProvider: Legen Sie
cloudProvider
inbackup
undrestore
aufCSI
fest.
- cloudProvider: Legen Sie
- Cassandra-Speichergruppenwerte: Die konfigurierte Cassandra-Speicherklasse muss CSI-Snapshots unterstützen, damit die CSI-Sicherung und -Wiederherstellung funktionieren. Um zu prüfen, ob eine Speicherklasse CSI-Snapshots unterstützt, führen Sie den folgenden Befehl aus, um die verfügbaren Speicherklassen zu erhalten:
- Legen Sie die unten aufgeführten allgemeinen Parameter im
Beispiel für eine Sicherungskonfiguration
In diesem Abschnitt werden die wiederherstellungsbezogenen Teile eineroverrides.yaml
-Beispieldatei gezeigt.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always cloudProvider: "CSI" schedule: "0 * * 11 *"
Manuelle Sicherung starten
CSI-Sicherungen werden automatisch gemäß dem Cron-Zeitplan generiert, der in der Datei overrides.yaml
festgelegt ist.
Verwenden Sie den folgenden Befehl, um eine manuelle CSI-Sicherung zu initiieren:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME
BACKUP_POD_NAME
der Name des zu erstellenden Sicherungs-Pods ist.
Sicherungen prüfen
Um zu prüfen, ob eine Sicherung erfolgreich erstellt wurde, können Sie die Volume-Snapshots im Kubernetes-Cluster mit folgendem Befehl prüfen:
kubectl get volumesnapshot -n APIGEE_NAMESPACE
Die Ausgabe zeigt die aktuelle Liste der Snapshots im Cluster. Der CSI-Sicherungsprozess erstellt einen Snapshot jedes Cassandra-Laufwerks. Die Anzahl der generierten Snapshots sollte der Gesamtzahl der Cassandra-Pods im Cluster entsprechen.
Sicherung wiederherstellen
Verwenden Sie dieses Verfahren, um eine zuvor generierte CSI-Sicherung wiederherzustellen. Allgemeine Informationen zum Wiederherstellen von Sicherungen und eine Übersicht über das Verfahren finden Sie auf der Übersichtsseite zur Wiederherstellung
Folgen Sie der Anleitung für die Nicht-CSI-Hybrid-Wiederherstellung in einer einzelnen Region, um eine Wiederherstellung einer CSI-Sicherung zu starten. Verwenden Sie diese Werte jedoch im Block restore
in Ihrer overrides.yaml
.
Weitere Informationen zu den einzelnen Werten und ein Beispiel finden Sie in der Referenztabelle zu Sicherungsattributen bzw. in der Beispielkonfiguration für Wiederherstellungen.
- enabled: Legen Sie
true
fest, um die Wiederherstellung für die Sicherung zu aktivieren, auf die mit dem ZeitstempelsnapshotTimestamp
verwiesen wird. - snapshotTimestamp: Geben Sie den Zeitstempel einer vorherigen CSI-Sicherung an.
- pullPolicy im Image: Auf
Always
festlegen.
Um den wiederherzustellenden Wert snapshotTimestamp
zu finden, führen Sie diesen Befehl aus, um die Liste der verfügbaren Snapshots zu erhalten:
kubectl get volumesnapshot -n APIGEE_NAMESPACE
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
.
Beispiel für eine Wiederherstellungskonfiguration
In diesem Abschnitt werden die wiederherstellungsbezogenen Teile eineroverrides.yaml
-Beispieldatei gezeigt.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" cloudProvider: "CSI" image: pullPolicy: Always
Zur CSI-Sicherung und -Wiederherstellung migrieren
Wenn Sie noch keine Hybridsicherung und -wiederherstellung verwendet haben, folgen Sie der Anleitung unter CSI-Sicherungen einrichten, um eine neue CSI-Sicherung ohne die Schritte in diesem Abschnitt zu erstellen. Diese Schritte führen Sie durch die Migration von der Nicht-CSI-Sicherungs- und Wiederherstellungslösung zu CSI-Sicherungen.
- Generieren Sie eine neue Sicherung mit der derzeit konfigurierten Nicht-CSI-Sicherungsmethode.
- Ändern Sie die Sicherungskonfiguration in der hybriden
overrides.yaml
-Datei, um die CSI Sicherungsüberschreibungen zu verwenden, wie in der Beispiel-Sicherungskonfiguration gezeigt. - Wenden Sie die Änderungen in der
overrides.yaml
-Datei an:helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
- Überprüfen Sie den Sicherungsjob.
kubectl get cronjob -n APIGEE_NAMESPACE
- Prüfen Sie nach Abschluss eines Sicherungsjobs, ob die Snapshots erstellt wurden. Die Anzahl der generierten Snapshots sollte der Anzahl der Cassandra-Knoten in der Hybridinstanz entsprechen.
kubectl get volumesnapshot -n APIGEE_NAMESPACE