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. 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.
  2. Configura el servidor SSH: Instala un servidor SSH o confirma que uno existente sea seguro.
  3. 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 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

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

  4. 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 usuario apigee nuevo tenga un directorio principal en /home.
  5. 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
  6. 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 usuario apigee tenga acceso a él. Pega el contenido del archivo ssh public key en el archivo.
  7. Verifica el acceso de SSH: Prueba la conexión desde tu máquina local o un nodo del clúster:
  8. 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.

  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: "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áfico apigee-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 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. Los horarios se encuentran en la zona horaria local del clúster de Kubernetes. 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

Soluciona problemas

  1. 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:
    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 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
  2. 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.
  3. 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