En esta página, se describe cómo programar copias de seguridad para Cassandra sin Cloud Storage. En este método, las copias de seguridad se almacenan en un servidor remoto que tú especificas en lugar de un bucket de Cloud Storage. Apigee usa SSH para comunicarse con el servidor remoto.
Debes programar las copias de seguridad como trabajos cron
. Una vez que se aplica una programación de copia de seguridad a tu clúster híbrido, se ejecuta un trabajo de copia de seguridad de Kubernetes de forma periódica según la programación en el plano de entorno de ejecución. El trabajo activa una secuencia de comandos de copia de seguridad en cada nodo de Cassandra en tu clúster híbrido que recopila todos los datos en el nodo, crea un archivo (comprimido) de los datos y envía el archivo al servidor especificado en tu archivo overrides.yaml
.
En los siguientes pasos, se incluyen ejemplos comunes para completar tareas específicas, como crear un par de claves SSH. Usa los métodos adecuados para tu instalación.
El procedimiento tiene las siguientes partes:
Configura el servidor y SSH
- Designa un servidor Linux o Unix para tus copias de seguridad. Se debe poder acceder a este servidor mediante SSH con el plano de entorno de ejecución de Apigee Hybrid. Debe tener suficiente almacenamiento para tus copias de seguridad.
- Configura un servidor SSH o asegúrate de que tenga configurado un servidor SSH seguro.
- Crea un par de claves SSH y almacena el archivo de claves privadas en una ruta a la que se pueda acceder desde tu plano de entorno de ejecución híbrido. Debes usar una contraseña en blanco para tu par de claves o la copia de seguridad no funcionará. Por ejemplo:
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]-----+En el ejemplo anterior, exampleuser@example.com es una cadena. Cualquier cadena que siga a
-C
en el comandossh-keygen
se convierte en un comentario incluido en la clavessh
recién creada. La cadena de entrada puede ser cualquier cadena. Cuando usas un nombre de cuenta con el formato exampleuser@example.com, puedes identificar rápidamente qué cuenta coincide con la clave - Crea una cuenta de usuario en el servidor de copia de seguridad con el nombre
apigee
. Asegúrate de que el usuarioapigee
nuevo tenga un directorio principal en/home
. - En el servidor de copia de seguridad, crea un directorio
ssh
en el directorio/home/apigee
nuevo. - Copia la clave pública (
ssh_key.pub
en el ejemplo anterior) en un archivo llamadoauthorized_keys
en el directorio/home/apigee/ssh
nuevo. Por ejemplo:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- En tu servidor de copia de seguridad, crea un directorio de copia de seguridad dentro del directorio
/home/apigee/
. El directorio de copia de seguridad puede ser cualquier directorio, siempre y cuando el usuarioapigee
tenga acceso a él. Por ejemplo:cd /home/apigee
mkdir cassandra-backup
- Prueba la conexión. Debes asegurarte de que los pods de Cassandra se puedan conectar al servidor de copia de seguridad mediante SSH:
- Accede a la shell de tu Pod de Cassandra. Por ejemplo:
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
En el que APIGEE_CASSANDRA_DEFAULT_0 es el nombre de un Pod de Cassandra. Cambia esto por el nombre del Pod desde el que deseas conectarte.
- Conéctate mediante SSH a tu servidor de copia de seguridad con la dirección IP del servidor:
ssh apigee@BACKUP_SERVER_IP
- Accede a la shell de tu Pod de Cassandra. Por ejemplo:
Configura el programa y el destino de la copia de seguridad
Tú estableces el programa y el destino de las copias de seguridad en tu archivo overrides.yaml
.
- Agrega los siguientes parámetros a tu archivo
overrides.yaml
:Parámetros
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"
Ejemplo
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 * * *"
Aquí:
Propiedad Descripción backup:enabled
La copia de seguridad está inhabilitada de forma predeterminada. Debes establecer esta propiedad en true
.backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
La ruta de tu sistema de archivos local al archivo de claves privadas SSH (llamado
ssh_key
en el paso en el que creaste el par de claves SSH).backup:server
BACKUP_SERVER_IP
La dirección IP de tu servidor de copia de seguridad.
backup:storageDirectory
BACKUP_DIRECTORY
El nombre del directorio de copia de seguridad de tu servidor de copia de seguridad. Debe ser un directorio dentro de
home/apigee
(el directorio de copia de seguridad se llamacassandra_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, establece la propiedad en
GCP
. Por ejemplo,cloudProvider: "GCP"
.Para una copia de seguridad del servidor remoto, configura la propiedad como
HYBRID
. Por ejemplo,cloudProvider: "HYBRID"
.backup:schedule
SCHEDULE
El momento en el que se inicia la copia de seguridad, especificado en sintaxis de crontab estándar. Predeterminada:
0 2 * * *
- Usa
apigeectl
para aplicar la configuración de copia de seguridad al permiso de almacenamiento de tu clúster:$APIGEECTL_HOME/apigeectl apply --datastore -f YOUR_OVERRIDES_FILE
En el que YOUR_OVERRIDES_FILE es la ruta de acceso al archivo de anulación que acabas de editar.
- Verifica el trabajo de copia de seguridad. Por ejemplo:
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s