Auf dieser Seite wird beschrieben, wie Sie Sicherungen für Cassandra ohne Cloud Storage planen. Bei dieser Methode werden Sicherungen auf einem von Ihnen angegebenen Remoteserver und nicht in einem Cloud Storage-Bucket gespeichert. Apigee verwendet SSH, um mit dem Remote-Server zu kommunizieren.
Sie müssen die Sicherungen als cron
-Jobs planen. Nachdem ein Sicherungszeitplan auf Ihren Hybrid-Cluster angewendet wurde, wird regelmäßig ein Kubernetes-Sicherungsjob gemäß dem Zeitplan in der Laufzeitebene ausgeführt. Der Job löst auf jedem Cassandra-Knoten in Ihrem Hybridcluster ein Sicherungsskript aus, das alle Daten auf dem Knoten erfasst, eine (komprimierte) Archivdatei der Daten erstellt und das Archiv an den in der Datei overrides.yaml
angegeben Server sendet.
Die folgenden Schritte enthalten gängige Beispiele für die Ausführung bestimmter Aufgaben, z. B. das Erstellen eines SSH-Schlüsselpaars. Verwenden Sie die für Ihre Installation geeigneten Methoden.
Der Vorgang besteht aus folgenden Teilen:
Server und SSH einrichten
- Back-up-Server auswählen: Wählen Sie einen Linux- oder Unix-Server mit ausreichendem Speicherplatz für Ihre Sicherungen aus und achten Sie darauf, dass er über SSH von Ihrer Apigee Hybrid-Laufzeitebene aus erreichbar ist.
- SSH-Server konfigurieren: Installieren Sie einen SSH-Server oder prüfen Sie, ob ein vorhandener Server sicher ist.
- SSH-Schlüsselpaar erstellen: Generieren Sie ein SSH-Schlüsselpaar ohne Passphrase. Beispiel:
ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ssh_key Your public key has been saved in ssh_key.pub The key fingerprint is: SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com The key's randomart image is: +---[RSA 4096]----+ | +. ++X| | . . o.=.*+| | . o . . o==o | | . . . =oo+o...| | . S +E oo .| | . . .. . o .| | . . . . o.. | | . ...o ++. | | .. .. +o+. | +----[SHA256]-----+Dabei ist exampleuser@example.com ein String. Jeder String, der im Befehl
ssh-keygen
auf-C
folgt, wird zu einem Kommentar, der im neu erstellten Schlüsselssh
enthalten ist. Der Eingabestring kann ein beliebiger String sein. Wenn Sie einen Kontonamen im Format exampleuser@example.com verwenden, können Sie schnell feststellen, welches Konto mit dem Schlüssel verknüpft wird.Der Befehl generiert zwei SSH-Schlüsseldateien, eine private Schlüsseldatei (z. B. „ssh_key.rsa“) und eine öffentliche Schlüsseldatei (z. B. „ssh_key.pub“).
Speichern Sie den privaten Schlüssel an einem Ort, auf den Ihre Laufzeitebene zugreifen kann.
- Nutzerkonto hinzufügen: Erstellen Sie auf dem Sicherungsserver einen Nutzer namens „apigee“ mit einem Basisverzeichnis unter
/home/apigee
. Achten Sie darauf, dass der neueapigee
-Nutzer ein Basisverzeichnis unter/home
hat. - .ssh-Verzeichnis einrichten: Erstellen Sie auf dem Sicherungsserver das Verzeichnis
.ssh
in/home/apigee/.ssh
. Beispiel:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Öffentlichen Schlüssel installieren: Platzieren Sie den öffentlichen Schlüssel in der Datei
authorized_keys
im Verzeichnis/home/apigee/
. Das Sicherungsverzeichnis kann ein beliebiges Verzeichnis sein, solange der Nutzerapigee
Zugriff darauf hat. Fügen Sie den Inhalt der Dateissh public key
in die Datei ein. - SSH-Zugriff prüfen: Testen Sie die Verbindung von Ihrem lokalen Computer oder einem Clusterknoten aus:
ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP
Zeitplan und Ziel für Sicherung festlegen
Zeitplan und Ziel für Sicherungen werden in der Datei overrides.yaml
festgelegt.
- Fügen Sie der Datei
overrides.yaml
Folgendes hinzu:Parameter
cassandra: backup: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"
Beispiel
cassandra: backup: enabled: true keyFile: "private.key" # path relative to apigee-datastore path server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *"
Wobei:
Attribut Beschreibung backup:enabled
Die Sicherung ist standardmäßig deaktiviert. Sie müssen dieses Attribut auf true
festlegen.backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
Der Pfad in Ihrem lokalen Dateisystem zur privaten SSH-Schlüsseldatei, die Sie in dem Schritt, in dem Sie das SSH-Schlüsselpaar erstellt haben, mit
ssh_key
benannt haben. Dieser Pfad muss sich auf das Diagrammverzeichnisapigee-datastore
beziehen.backup:server
BACKUP_SERVER_IP
Die IP-Adresse des Sicherungsservers.
backup:storageDirectory
BACKUP_DIRECTORY
Der Name des Sicherungsverzeichnisses auf dem Sicherungsserver. Dies muss ein Verzeichnis innerhalb
home/apigee
(das Sicherungsverzeichnis heißtcassandra_backup
in dem Schritt, in dem Sie das Sicherungsverzeichnis erstellt haben) sein.backup:cloudProvider
GCP/HYBRID
Legen Sie für eine Cloud Storage-Sicherung das Attribut auf
GCP
fest. Beispiel:cloudProvider: "GCP"
.Legen Sie für eine Remote-Serversicherung das Attribut
HYBRID
fest. Beispiel:cloudProvider: "HYBRID"
.backup:schedule
SCHEDULE
Die Zeit, zu der das Backup startet, angegeben in der Standard-Crontab-Syntax. Die Zeitangaben werden in der lokalen Zeitzone des Kubernetes-Clusters angegeben. Standard:
0 2 * * *
- Wenden Sie die Sicherungskonfiguration auf den Speicherbereich Ihres Clusters an:
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
Dabei ist OVERRIDES_FILE der Pfad zu der Überschreibungsdatei, die Sie gerade bearbeitet haben.
- Überprüfen Sie den Sicherungsjob. Beispiel:
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
Fehlerbehebung
- Testen Sie die Verbindung von einem Cassandra-Pod aus. Sie müssen sicherstellen, dass Ihre Cassandra-Pods über SSH eine Verbindung zu Ihrem Sicherungsserver herstellen können:
- Melden Sie sich in der Shell des Cassandra-Pods an. Beispiel:
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
Dabei ist APIGEE_CASSANDRA_DEFAULT_0 der Name eines Cassandra-Pods. Ändern Sie dies in den Namen des Pods, von dem Sie eine Verbindung herstellen möchten.
- Stellen Sie per SSH eine Verbindung zu Ihrem Sicherungsserver her. Verwenden Sie dazu den privaten SSH-Schlüssel, der den Cassandra-Pod und die IP-Adresse des Servers bereitgestellt hat:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
- Melden Sie sich in der Shell des Cassandra-Pods an. Beispiel:
- Wenn Sie vom Cassandra-Pod aus nicht auf Ihren Remote-Server zugreifen können, prüfen Sie noch einmal Ihre SSH-Konfiguration auf dem Remote-Server und ob das Upgrade des Datenspeichers erfolgreich war.
- Sie können prüfen, ob Cassandra den richtigen privaten Schlüssel verwendet, indem Sie den folgenden Befehl ausführen, während Sie in Ihrem Cassandra-Pod angemeldet sind, und die Ausgabe mit dem von Ihnen erstellten privaten Schlüssel vergleichen:
cat /var/secrets/keys/key