En esta página se describe cómo programar copias de seguridad de Cassandra sin Cloud Storage.
En este método, las copias de seguridad se almacenan en un servidor remoto que especifiques en lugar de en un segmento de Cloud Storage. Apigee usa SSH para comunicarse con el servidor remoto.
Debes programar las copias de seguridad como tareas cron. Una vez que se ha aplicado una programación de copias de seguridad a tu clúster híbrido, se ejecuta periódicamente un trabajo de copia de seguridad de Kubernetes según la programación del plano de tiempo de ejecución. La tarea activa una secuencia de comandos de copia de seguridad en cada nodo de Cassandra de tu clúster híbrido que recoge todos los datos del nodo, crea un archivo (comprimido) de los datos y envía el archivo al servidor especificado en el archivo overrides.yaml.
En los pasos que se indican a continuación se incluyen ejemplos habituales para completar tareas específicas, como crear un par de claves SSH. Usa los métodos adecuados para tu instalación.
Designa un servidor Linux o Unix para tus copias de seguridad. Se debe poder acceder a este servidor mediante SSH desde tu plano de tiempo de ejecución de Apigee hybrid. Debe tener suficiente almacenamiento para tus copias de seguridad.
Configura un servidor SSH en el servidor o asegúrate de que tenga configurado un servidor SSH seguro.
Crea un par de claves SSH y almacena el archivo de clave privada en una ruta a la que se pueda acceder desde tu plano de ejecución híbrido. Debes usar una contraseña en blanco para tu par de claves o la copia de seguridad fallará. Por ejemplo:
Crea una cuenta de usuario en el servidor de copia de seguridad con el nombre apigee. Asegúrate de que
el nuevo usuario de apigee tenga un directorio principal en /home.
En el servidor de copia de seguridad, crea un directorio ssh en el nuevo directorio /home/apigee.
Copia la clave pública (ssh_key.pub en el ejemplo anterior) en un archivo llamado
authorized_keys en el nuevo directorio /home/apigee/ssh. Por ejemplo:
cd /home/apigee
mkdir .sshcd .sshvi authorized_keys
En el servidor de copia de seguridad, crea un directorio de copia de seguridad en el directorio /home/apigee/. El directorio de copia de seguridad puede ser cualquier directorio, siempre que el usuario de apigee tenga acceso a él. Por ejemplo:
cd /home/apigee
mkdir cassandra-backup
Prueba la conexión. Debes asegurarte de que tus pods de Cassandra puedan conectarse a tu servidor de copia de seguridad mediante SSH:
Inicia sesión en el shell de tu pod de Cassandra. Por ejemplo:
La dirección IP de tu servidor de copia de seguridad.
backup:storageDirectory
BACKUP_DIRECTORY
Nombre del directorio de la copia de seguridad en el servidor de copias de seguridad. Debe ser un directorio de home/apigee (el directorio de copia de seguridad se llama cassandra_backup
en el paso en el que creaste el directorio de copia de seguridad).
backup:cloudProvider
GCP/HYBRID
Para una copia de seguridad de Cloud Storage, asigna el valor GCP a la propiedad. Por ejemplo, cloudProvider: "GCP".
Para crear una copia de seguridad de un servidor remoto, asigna el valor HYBRID a la propiedad. Por ejemplo, cloudProvider: "HYBRID".
backup:schedule
SCHEDULE
Hora en la que se inicia la copia de seguridad, especificada en la sintaxis estándar de crontab. Predeterminado: 0 2 * * *
Usa apigeectl para aplicar la configuración de la copia de seguridad al ámbito de almacenamiento de tu clúster:
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-21 (UTC)."],[[["\u003cp\u003eThis document outlines how to schedule backups for Cassandra in Apigee hybrid environments without using Cloud Storage, instead utilizing a remote server accessible via SSH.\u003c/p\u003e\n"],["\u003cp\u003eBackups are scheduled as \u003ccode\u003ecron\u003c/code\u003e jobs, executed periodically by a Kubernetes job that triggers a backup script on each Cassandra node, and these backups are stored on a designated remote server, not in cloud storage.\u003c/p\u003e\n"],["\u003cp\u003eSetting up the remote server involves configuring an SSH server, creating an SSH key pair (with no passphrase), creating a specific user \u003ccode\u003eapigee\u003c/code\u003e, and creating appropriate directories for storing the backed-up data.\u003c/p\u003e\n"],["\u003cp\u003eThe backup schedule and destination are defined in the \u003ccode\u003eoverrides.yaml\u003c/code\u003e file, which includes parameters like the private key file path, the remote server's IP, the storage directory on the remote server, and the \u003ccode\u003ecron\u003c/code\u003e schedule.\u003c/p\u003e\n"],["\u003cp\u003eApplying the backup configuration to an existing cluster will cause a rolling restart of Cassandra pods and the initial backup might fail if the schedule is set to immediately afterwards, and so the schedule should be setup to avoid such conflict.\u003c/p\u003e\n"]]],[],null,["# Scheduling backups in a remote server\n\n| You are currently viewing version 1.6 of the Apigee hybrid documentation. **This version is end of life.** You should upgrade to a newer version. For more information, see [Supported versions](/apigee/docs/hybrid/supported-platforms#supported-versions).\n\nThis page describes how to schedule backups for Cassandra without the Cloud Storage.\nIn this method, backups are stored on a remote server specified by you instead of a Cloud Storage bucket. Apigee uses\nSSH to communicate with the remote server.\n\nYou must schedule the backups as `cron` jobs. Once a backup schedule\nhas been applied to your hybrid cluster, a Kubernetes backup job is\nperiodically executed according to the schedule in the runtime plane. The job triggers a\nbackup script on each Cassandra node in your hybrid cluster that collects all the\ndata on the node, creates an archive (compressed) file of the data, and sends the archive\nto the server specified in your `overrides.yaml` file.\n| **Note:**\n|\n| - You must ensure there is enough space on the file system for the backups, and adjust the frequency of the backups to avoid unnecessarily filling the allotted storage space. Apigee does not dictate a retention policy for the backup files. You may want to create a retention policy for files appropriate to your installation.\n| - Applying backup configuration on the existing cluster will rolling restart Cassandra pods.\n\n\nThe following steps include common examples for completing specific tasks, like creating an SSH\nkey pair. Use the methods that are appropriate to your installation.\n\n\nThe procedure has the following parts:\n\n- [Set up the server and SSH](#server-ssh)\n- [Set the schedule and destination for backup](#overrides-backup)\n\n### Set up the server and SSH\n\n1. Designate a Linux or Unix server for your backups. This server must be reachable using SSH from your Apigee hybrid runtime plane. It must have enough storage for your backups.\n2. Set up an SSH server on the server, or ensure that it has a secure SSH server configured. **Caution:** For security purposes, make sure your SSH server is up to date.\n3. Create an SSH key pair and store the private key file in a path that is accessible from your hybrid runtime plane. **You must use a blank password for your key pair or the backup will fail** . For example: \n\n ssh-keygen -t rsa -b 4096 -C \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-n\"\u003eexampleuser\u003c/span\u003e\u003cspan class=\"devsite-syntax-nv\"\u003e@example\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-n\"\u003ecom\u003c/span\u003e\u003c/var\u003e\n Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key\n Enter passphrase (empty for no passphrase):\n Enter same passphrase again:\n Your identification has been saved in ssh_key\n Your public key has been saved in ssh_key.pub\n The key fingerprint is:\n SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com\n The key's randomart image is:\n +---[RSA 4096]----+\n | +. ++X|\n | . . o.=.*+|\n | . o . . o==o |\n | . . . =oo+o...|\n | . S +E oo .|\n | . . .. . o .|\n | . . . . o.. |\n | . ...o ++. |\n | .. .. +o+. |\n +----[SHA256]-----+\n\n4. Create a user account on the backup server with the name `apigee`. Make sure the new `apigee` user has a home directory under `/home`.\n5. On the backup server, create an `ssh` directory in the new `/home/apigee` directory.\n6. Copy the public key (`ssh_key.pub` in the previous example) into a file named `authorized_keys` in the new `/home/apigee/ssh` directory. For example: \n\n cd /home/apigee\n mkdir .ssh\n cd .ssh\n vi authorized_keys\n\n7. On your backup server, create a backup directory within the `/home/apigee/` directory. The backup directory can be any directory as long as the `apigee` user has access to it. For example: \n\n cd /home/apigee\n mkdir cassandra-backup\n\n8. Test the connection. You need to make sure that your Cassandra pods can connect to your backup server using SSH:\n 1. Log into the shell of your Cassandra pod. For example: \n\n ```\n kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eAPIGEE_CASSANDRA_DEFAULT_0\u003c/var\u003e is the name of a Cassandra pod. Change this to\n the name of the pod you want to connect from.\n 2. Connect by SSH to your backup server, using the server IP address: \n\n ```\n ssh apigee@BACKUP_SERVER_IP\n ```\n | **Note:** You may see a warning at this point saying your server's fingerprint is unrecognized and asks if you would like to continue. For purposes of this test, this means you can successfully reach your backup server from your Cassandra pod. You do not need to continue.\n\n### Set the schedule and destination for backup\n\n\nYou set the schedule and destination for backups in your `overrides.yaml` file.\n\n1. Add the following parameters to your `overrides.yaml` file:\n\n ### Parameters\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"\u003cvar translate=\"no\"\u003ePATH_TO_PRIVATE_KEY_FILE\u003c/var\u003e\"\n server: \"\u003cvar translate=\"no\"\u003eBACKUP_SERVER_IP\u003c/var\u003e\"\n storageDirectory: \"/home/apigee/\u003cvar translate=\"no\"\u003eBACKUP_DIRECTORY\u003c/var\u003e\"\n cloudProvider: \"HYBRID\" # required verbatim \"HYBRID\" (all caps)\n schedule: \"\u003cvar translate=\"no\"\u003eSCHEDULE\u003c/var\u003e\"\n ```\n\n ### Example\n\n ```actionscript-3\n cassandra:\n backup:\n enabled: true\n keyFile: \"/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key\"\n server: \"34.56.78.90\"\n storageDirectory: \"/home/apigee/cassbackup\"\n cloudProvider: \"HYBRID\"\n schedule: \"0 2 * * *\"\n ```\n\n\n Where:\n\n2. Use `apigeectl` to apply the backup configuration to the storage scope of your cluster: \n\n ```\n $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE\n ```\n\n\n Where \u003cvar translate=\"no\"\u003eYOUR_OVERRIDES_FILE\u003c/var\u003e is the path to the overrides file you just edited.\n3. Verify the backup job. For example: \n\n ```\n kubectl get cronjob -n apigee\n ``` \n\n ```component-pascal\n NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE\n apigee-cassandra-backup 33 * * * * False 0 \u003cnone\u003e 94s\n ```"]]