Programar copias de seguridad en un servidor remoto

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.

El procedimiento consta de las siguientes partes:

Configurar el servidor y SSH

  1. Selecciona un servidor de copia de seguridad: elige un servidor Linux o Unix con suficiente almacenamiento para tus copias de seguridad y asegúrate de que se pueda acceder a él a través de SSH desde tu plano de ejecución de Apigee hybrid.
  2. Configura el servidor SSH: instala un servidor SSH o confirma que el que ya tienes es seguro.
  3. Crea un par de claves SSH: genera un par de claves SSH sin 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]-----+

    Donde exampleuser@example.com es una cadena. Cualquier cadena que siga a -C en el comando ssh-keygen se convierte en un comentario incluido en la clave ssh recién creada. La cadena de entrada puede ser cualquier cadena. Si usas un nombre de cuenta con el formato exampleuser@example.com, puedes identificar rápidamente a qué cuenta corresponde la clave.

    El 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 ejecución.

  4. Añadir 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 nuevo usuario de apigee tenga un directorio principal en /home.
  5. Configurar 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
  6. Instala la clave pública: coloca la clave pública en el archivo authorized_keys de la carpeta /home/apigee/. El directorio de copia de seguridad puede ser cualquier directorio, siempre que el usuario apigee tenga acceso a él.Pega el contenido del archivo ssh public key en el archivo.
  7. Verifica el acceso SSH: prueba la conexión desde tu máquina local o un nodo de clúster:
  8. ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP

Definir la programación y el destino de la copia de seguridad

Tú decides la programación y el destino de las copias de seguridad en tu archivo overrides.yaml.

  1. Añade los siguientes parámetros al 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 * * *"

    Donde:

    Propiedad Descripción
    backup:enabled La copia de seguridad está inhabilitada de forma predeterminada. Debe asignar el valor true a esta propiedad.
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    La ruta del archivo de clave privada SSH en tu sistema de archivos local (llamado ssh_key en el paso en el que creaste el par de claves SSH). Esta ruta debe ser relativa al directorio de gráficos apigee-datastore.

    backup:server

    BACKUP_SERVER_IP

    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

    HYBRID

    Para crear una copia de seguridad de un servidor remoto, asigna el valor HYBRID a la propiedad.

    backup:schedule

    SCHEDULE

    Hora en la que se inicia la copia de seguridad, especificada en la sintaxis estándar de crontab. Las horas se indican en la zona horaria local del clúster de Kubernetes. Predeterminado: 0 2 * * *

  2. Aplica la configuración de la copia de seguridad al ámbito de almacenamiento de tu clúster:
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    Donde OVERRIDES_FILE es la ruta del archivo de anulaciones que acabas de editar.

  3. Verifica el trabajo de copia de seguridad. Por ejemplo:
    kubectl get cronjob -n APIGEE_NAMESPACE
    NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

Iniciar una copia de seguridad manual

Las tareas de copia de seguridad se activan automáticamente según la programación cron definida en cassandra.backup.schedule en el archivo overrides.yaml. Sin embargo, también puedes iniciar un trabajo de copia de seguridad manualmente si es necesario con el siguiente comando:

kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME

Donde MANUAL_BACKUP_JOB_NAME es el nombre de una tarea de copia de seguridad manual que se va a crear.

Solución de problemas

  1. Prueba la conexión desde un pod de Cassandra. Debes asegurarte de que tus pods de Cassandra puedan conectarse a tu servidor de copia de seguridad mediante SSH:
    1. Inicia sesión en el shell de tu pod de Cassandra. Por ejemplo:
      kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash

      Donde APIGEE_CASSANDRA_POD es el nombre de un pod de Cassandra. Cambia este valor por el nombre del pod al que quieras conectarte.

    2. Conéctate mediante SSH a tu servidor de copia de seguridad con la clave SSH privada montada en el pod de Cassandra y la dirección IP del servidor:
      ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
  2. Si tienes problemas para acceder a tu servidor remoto desde el pod de Cassandra, vuelve a comprobar la configuración de SSH en el servidor remoto y asegúrate de que la actualización del almacén de datos se haya completado correctamente.
  3. Para comprobar si Cassandra usa la clave privada correcta, ejecuta el siguiente comando mientras estás conectado a tu pod de Cassandra y compara el resultado con la clave privada que has creado:
    cat /var/secrets/keys/key