Copia de seguridad y recuperación sin Google Cloud

En esta sección se explica cómo configurar la copia de seguridad y la recuperación de tu base de datos de Cassandra mediante SSH y tu sistema de archivos en lugar de usar Google Cloud. Consulta también:

¿Qué es la copia de seguridad y la recuperación de Cassandra sin los servicios de Google Cloud?

La copia de seguridad sin servicios en la nube almacena copias de seguridad de tu base de datos de Cassandra en archivos comprimidos en el sistema de archivos de un servidor que especifiques. Las copias de seguridad se realizan según la programación que especifiques en el archivo de anulaciones. La conexión al servidor se realiza mediante SSH seguro.

Configurar copias de seguridad sin servicios en la nube:

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. Designa un servidor Linux o Unix para tus copias de seguridad. Se debe poder acceder a este servidor a través de SSH desde tu plano del entorno de ejecución de Apigee hybrid. Debe tener suficiente almacenamiento para tus copias de seguridad.
  2. Configura un servidor SSH en el servidor o asegúrate de que tenga configurado un servidor SSH seguro.
  3. Crea un par de claves SSH y almacena el archivo de clave privada en una ruta a la que se pueda acceder desde tu plano de ejecución híbrido. No uses una contraseña en blanco para tu par de claves. 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 nuevo usuario "apigee" tenga un directorio principal en /home.
  5. En el servidor de copia de seguridad, crea un directorio "ssh" en el nuevo directorio /home/apigee.
  6. Copia la clave pública (ssh_key.pub en el ejemplo anterior) en un archivo llamado "authorized_keys" en el nuevo directorio /home/apigee/ssh. Por ejemplo:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. En el servidor de copia de seguridad, crea un directorio de copia de seguridad en el directorio /home/apigee/. El directorio de copia de seguridad puede ser cualquier directorio, siempre que el usuario "apigee" tenga acceso a él. Por ejemplo:
    cd /home/apigee
    mkdir cassandra-backup
  8. Prueba la conexión. 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 apigee-cassandra-default-0 -- /bin/bash

      Donde apigee-cassandra-default-0 es el nombre de un pod de Cassandra. Cambia este valor por el nombre del pod al que quieras conectarte.

    2. Conéctate a tu servidor de copia de seguridad mediante SSH con la dirección IP del servidor:
      ssh 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: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
         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. Debes asignar el valor true a esta propiedad.
    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).
    backup-server-ip La dirección IP de tu servidor de copia de seguridad.
    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).
    HYBRID La propiedad cloudProvider: "HYBRID" es obligatoria.
    schedule Hora en la que se inicia la copia de seguridad, especificada en la sintaxis estándar de crontab. Predeterminado: 0 2 * * *

    Nota: No programes una copia de seguridad que empiece poco después de aplicar la configuración de copia de seguridad a tu clúster. Cuando apliques la configuración de la copia de seguridad, Kubernetes volverá a crear los nodos de Cassandra. Si la copia de seguridad se inicia antes de que se reinicien los nodos (posiblemente varios minutos), se producirá un error.

  2. Usa apigeectl para aplicar la configuración de la copia de seguridad al ámbito de almacenamiento de tu clúster:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file

    Donde your-overrides-file es la ruta del archivo de anulaciones que acabas de editar.

Configurar restauración

La restauración toma los datos del archivo de copia de seguridad con la marca de tiempo que especifiques y los restaura en un nuevo clúster de Cassandra con el mismo número de pods. El nuevo clúster debe tener un espacio de nombres diferente al del clúster del plano de ejecución.

Para restaurar copias de seguridad de Cassandra, sigue estos pasos:

  1. Crea un clúster de Kubernetes con un espacio de nombres nuevo. No puedes usar el mismo clúster o espacio de nombres que usaste en la instalación híbrida original.
  2. En el directorio raíz de la instalación híbrida, crea un archivo overrides-restore.yaml.
  3. Copia la configuración completa de Cassandra del archivo overrides.yaml original en el nuevo.
  4. Añade los siguientes parámetros al archivo overrides-restore.yaml:

    Parámetros

    namespace: 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: "backup-to-restore"
    

    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"
    

    Donde:

    Propiedad Descripción
    restore-namespace El nombre del nuevo espacio de nombres del nuevo clúster de Cassandra. No uses el mismo espacio de nombres que usaste para el clúster original.
    restore:enabled La restauración está inhabilitada de forma predeterminada. Debes asignar el valor true a esta propiedad.
    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).
    backup-server-ip La dirección IP de tu servidor de copia de seguridad.
    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).
    HYBRID La propiedad cloudProvider: "HYBRID" es obligatoria.
    backup-to-restore La copia de seguridad específica que quieres restaurar, especificada en sintaxis crontab estándar (no se permiten comodines).
  5. Usa apigeectl para aplicar la configuración de la copia de seguridad al ámbito de almacenamiento de tu clúster:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file

    Donde your-overrides-restore-file es la ruta al archivo overrides-restore.yaml que acabas de editar.