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
- Selecciona un servidor de copia de seguridad: Elige un servidor Linux o Unix con el almacenamiento adecuado para tus copias de seguridad y asegúrate de que se pueda acceder a él a través de SSH desde tu plano de entorno de ejecución de Apigee Hybrid.
- Configura el servidor SSH: Instala un servidor SSH o confirma que uno existente sea seguro.
- Crea un par de claves SSH: Genera un par de claves SSH sin una frase de contraseña. 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 claveEl comando generará dos archivos de claves SSH: un archivo de clave privada (por ejemplo, “ssh_key.rsa”) y un archivo de clave pública (por ejemplo, “ssh_key.pub”).
Guarda la clave privada en una ubicación a la que pueda acceder tu plano de entorno de ejecución.
- Agrega una cuenta de usuario: En el servidor de copia de seguridad, crea un usuario llamado apigee con un directorio principal en
/home/apigee
. Asegúrate de que el usuarioapigee
nuevo tenga un directorio principal en/home
. - Configura el directorio .ssh: En el servidor de copia de seguridad, crea un directorio
.ssh
en/home/apigee/.ssh
. Por ejemplo:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- Instala la clave pública: Coloca la clave pública en el archivo
authorized_keys
dentro del directorio/home/apigee/
. El directorio de copia de seguridad puede ser cualquier directorio, siempre y cuando el usuarioapigee
tenga acceso a él. Pega el contenido del archivossh public key
en el archivo. - Verifica el acceso de SSH: Prueba la conexión desde tu máquina local o un nodo del clúster:
ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP
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: "private.key" # path relative to apigee-datastore path 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). Esta ruta de acceso debe ser relativa al directorio del gráficoapigee-datastore
.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. Los horarios se encuentran en la zona horaria local del clúster de Kubernetes. Predeterminada:
0 2 * * *
- Aplica la configuración de copia de seguridad al permiso de almacenamiento de tu
clúster:
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
En el que 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
Soluciona problemas
- Prueba la conexión desde un Pod de Cassandra. 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 a través de SSH a tu servidor de copia de seguridad con la clave SSH privada activada en el pod de Cassandra y la dirección IP del servidor:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
- Accede a la shell de tu Pod de Cassandra. Por ejemplo:
- Si tienes problemas para acceder al servidor remoto desde el Pod de Cassandra, vuelve a verificar la configuración de SSH en el servidor remoto y asegúrate de que la actualización del almacén de datos se haya realizado correctamente.
- Para verificar si Cassandra usa la clave privada correcta, ejecuta el siguiente comando mientras accediste a tu Pod de Cassandra y compara el resultado con la clave privada que creaste:
cat /var/secrets/keys/key