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
- Geben Sie einen Linux- oder Unix-Server für Ihre Sicherungen an. Dieser Server muss über SSH von Ihrer Apigee Hybrid-Laufzeitebene erreichbar sein. Es muss genügend Speicherplatz für die Sicherungen haben.
- Richten Sie einen SSH-Server auf dem Server ein bzw. prüfen Sie, ob ein sicherer SSH-Server konfiguriert ist.
- Erstellen Sie ein SSH-Schlüsselpaar und speichern Sie die Datei mit dem privaten Schlüssel in einem Pfad, auf den von der Hybrid-Laufzeitebene aus zugegriffen werden kann. Sie müssen ein leeres Passwort für Ihr Schlüsselpaar verwenden. Andernfalls schlägt die Sicherung fehl. 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. - Erstellen Sie auf dem Sicherungsserver ein Nutzerkonto mit dem Namen
apigee
. Achten Sie darauf, dass der neueapigee
-Nutzer ein Basisverzeichnis unter/home
hat. - Erstellen Sie auf dem Sicherungsserver das Verzeichnis
.ssh
im neuen Verzeichnis/home/apigee
. - Kopieren Sie den öffentlichen Schlüssel (im vorherigen Beispiel
ssh_key.pub
) in eine Datei mit dem Namenauthorized_keys
im neuen Verzeichnis/home/apigee/.ssh
. Beispiel:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Erstellen Sie auf dem Sicherungsserver ein Sicherungsverzeichnis im Verzeichnis
/home/apigee/
. Das Sicherungsverzeichnis kann ein beliebiges Verzeichnis sein, solange der Nutzerapigee
Zugriff darauf hat. Beispiel:cd /home/apigee
mkdir cassandra-backup
- Testen Sie die Verbindung. 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_NAMESPACE 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:
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: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" 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.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_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
Dabei ist OVERRIDES_FILE der Pfad zu der Überschreibungsdatei, die Sie gerade bearbeitet haben.
- Überprüfen Sie den Sicherungsjob. Beispiele:
kubectl get cronjob -n APIGEE_NAMESPACE
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s