Copia de seguridad y recuperación sin Google Cloud

En esta sección, se explica cómo configurar la copia de seguridad y recuperación de tu base de datos de Cassandra con sshSSH y tu sistema de archivos en lugar de usar Google Cloud. También consulta lo siguiente:

Qué es la copia de seguridad y recuperación de Cassandra sin servicios de Cloud

La copia de seguridad sin los servicios de Cloud almacena copias de seguridad de tu base de datos de Cassandra en archivos comprimidos en el sistema de archivos del servidor que especifiques. Las copias de seguridad se realizan en el programa que especifiques del archivo de anulaciones. La conexión al servidor se realiza mediante SSH seguro.

Configura copias de seguridad sin los servicios de Cloud

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]-----+
  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 dirección IP del servidor:
      ssh 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

    HYBRID

    La propiedad cloudProvider: "HYBRID" es obligatoria.

    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. Usa apigeectl para aplicar la configuración de copia de seguridad al permiso de almacenamiento de tu clúster:
    $APIGEECTL_HOME/apigeectl --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.

  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

Configura el restablecimiento

El restablecimiento toma tus datos de la ubicación de la copia de seguridad y los restablece en un clúster de Cassandra nuevo con la misma cantidad de nodos. No se toman datos del clúster anterior de Cassandra.

Las siguientes instrucciones de restablecimiento se aplican a implementaciones de una sola región que no usan Google Cloud Storage para copias de seguridad. Para otras implementaciones, consulta lo siguiente:

Para restablecer copias de seguridad de Cassandra, haz lo siguiente:

  1. Crea un espacio de nombres nuevo dentro del clúster de Kubernetes existente que se usará para restablecer la implementación del entorno de ejecución híbrido. No uses el nombre del espacio de nombres original para el nuevo. No uses el espacio de nombres anterior para el restablecimiento.
  2. En el directorio raíz de la instalación híbrida, crea un archivo overrides-restore.yaml nuevo.
  3. Copia la configuración completa de Cassandra del archivo overrides.yaml original al archivo overrides-restore.yamlnuevo. Por ejemplo:
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. Agrega un elemento de espacio de nombres al nuevo archivo overrides-restore.yaml.

    Parámetros

    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      restore:
        enabled: true
        keyFile: "PATH_TO_PRIVATE_KEY_FILE"
        server: "BACKUP_SERVER_IP"
        storageDirectory: "/home/apigee/BACKUP_DIRECTORY"
        cloudProvider: "HYBRID"  # required verbatim "HYBRID" (all caps)
        snapshotTimestamp: "TIMESTAMP"
      ..

    Ejemplo

    namespace: cassandra-restore
    cassandra:
      restore:
        enabled: true
        keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
        server: "34.56.78.90"
        storageDirectory: "/home/apigee/cassbackup"
        cloudProvider: "HYBRID"
        snapshotTimestamp: "20201001183903"
  5. Aquí:

    Propiedad Descripción
    namespace

    YOUR_RESTORE_NAMESPACE

    El nombre del espacio de nombres nuevo que creaste en el paso 1 para el clúster de Cassandra nuevo. No uses el mismo espacio de nombres que usaste para tu clúster original.

    restore:enabled La opción para restablecer está inhabilitada de forma predeterminada. Debes establecer esta propiedad en true.
    restore: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).

    restore:server

    BACKUP_SERVER_IP

    La dirección IP de tu servidor de copia de seguridad.

    restore: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).

    restore:cloudProvider

    HYBRID

    La propiedad cloudProvider: "HYBRID" es obligatoria.

    restore:snapshotTimestamp

    TIMESTAMP

    La marca de tiempo de la instantánea de la copia de seguridad que se restablecerá. Para comprobar qué marcas de tiempo se pueden usar, ve a dbStorageBucket y consulta los archivos que están presentes en el bucket. Cada nombre de archivo contiene un valor de marca de tiempo como el siguiente:

    backup_20210203213003_apigee-cassandra-default-0.tgz

    En el ejemplo anterior, 20210203213003 es el valor snapshotTimestamp que usarías si quisieras restablecer las copias de seguridad creadas en ese momento.

  6. Cambia la etiqueta app en todos los nodos de Cassandra en el espacio de nombres antiguo mediante la ejecución del siguiente comando:
    kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
    
  7. Crea una nueva implementación de entorno de ejecución híbrido. Esto creará un nuevo clúster de Cassandra y comenzará a restablecer los datos de copia de seguridad en el clúster:
    ./apigeectl init  -f ../overrides-restore.yaml
    
    ./apigeectl apply  -f ../overrides-restore.yaml
    
  8. Una vez que se completa el restablecimiento, se debe cambiar el tráfico para usar el clúster de Cassandra en el espacio de nombres nuevo. Ejecuta los siguientes comandos para cambiar el tráfico:

    kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
    
    kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}'
    
  9. Una vez que finalice el cambio del tráfico, puedes volver a configurar las copias de seguridad en el clúster restablecido si quitas la configuración restore y agregas la configuración backup al archivo overrides-restore.yaml. Reemplaza YOUR_RESTORE_NAMESPACE por el nombre del espacio de nombres nuevo que creaste en el paso 1.
    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      backup:
        enabled: true
        serviceAccountPath: SA_JSON_FILE_PATH
        dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
        schedule: BACKUP_SCHEDULE_CODE
      ...

    Luego, aplica la configuración backup con el siguiente comando:

    ./apigeectl apply  -f ../overrides-restore.yaml