Programa copias de seguridad en un servidor remoto

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

  1. 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.
  2. Configura un servidor SSH o asegúrate de que tenga configurado un servidor SSH seguro.
  3. 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 comando ssh-keygen se convierte en un comentario incluido en la clave ssh 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

  4. Crea una cuenta de usuario en el servidor de copia de seguridad con el nombre apigee. Asegúrate de que el usuario apigee nuevo tenga un directorio principal en /home.
  5. En el servidor de copia de seguridad, crea un directorio .ssh en el directorio /home/apigee nuevo.
  6. Copia la clave pública (ssh_key.pub en el ejemplo anterior) en un archivo llamado authorized_keys en el directorio /home/apigee/.ssh nuevo. Por ejemplo:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. 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 usuario apigee tenga acceso a él. Por ejemplo: 
    cd /home/apigee
    mkdir cassandra-backup
  8. Prueba la conexión. Debes asegurarte de que los pods de Cassandra se puedan conectar al servidor de copia de seguridad mediante SSH:
    1. 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.

    2. Conéctate mediante 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

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.

  1. 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 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, 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 * * *

  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.

  3. 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