Programar capturas de Filestore Enterprise


En este documento se explica cómo usar Cloud Scheduler para programar y proteger las copias de seguridad de Filestore.

Este documento está dirigido a responsables de la toma de decisiones de TI, administradores de copias de seguridad y administradores de recuperación tras desastres que quieran obtener información sobre las instantáneas programadas de Filestore o crearlas.

Objetivos

  • Configura las funciones de Cloud Run y el archivo de configuración JSON.
  • Crea una tarea de Cloud Scheduler.
  • Crea y etiqueta capturas de Filestore programadas.
  • Monitoriza el proceso de creación de la captura.

Costes

En este documento, se utilizan los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costes basada en el uso previsto, utiliza la calculadora de precios.

Los usuarios nuevos Google Cloud pueden disfrutar de una prueba gratuita.

Cuando termines este tutorial, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.

Antes de empezar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  8. Modelo de implementación

    En el siguiente diagrama se muestra el modelo de implementación que admite funciones de Cloud Run de instantáneas de Filestore.

    Modelo de implementación compatible con funciones de Cloud Run de instantáneas de Filestore.

    La tarea de Cloud Scheduler se coordina con las funciones de Cloud Run para programar y generar las instantáneas de Filestore y los archivos de registro. Las instantáneas están disponibles en el recurso compartido de Filestore.

    Limitaciones conocidas

    Cuando te prepares para configurar un programador de instantáneas para instancias de Filestore, ten en cuenta las siguientes limitaciones:

    • La función solo elimina una única instantánea cuando es necesario, aunque haya más instantáneas programadas de las que se definen en el archivo de configuración de la política de conservación o si el archivo de configuración de la política de conservación se actualiza para conservar menos instantáneas que antes.
    • Si reduces el valor numérico de snapshots en el archivo de configuración JSON, las copias de seguridad redundantes de la instancia no se eliminarán automáticamente. Si cambias el ajuste, tendrás que eliminar manualmente las copias redundantes.
    • Como el límite del ID de la instantánea es de 75 caracteres, el nombre de la política de conservación tiene un límite de 50 caracteres.

    Prepara tu entorno

    En esta sección, configurarás las variables de entorno, clonarás el repositorio y crearás las aplicaciones y los archivos que necesitas para este tutorial.

    Establece variables de entorno:

    • En Cloud Shell, introduce el siguiente comando:
    gcloud components update
    
    • En Cloud Shell, crea las siguientes variables:

      export PROJECT_ID=PROJECT_ID
      export GCP_REGION=GCP_REGION
      export APP_ENGINE_REGION=APP_ENGINE_REGION
      export FUNCTION_NAME=FUNCTION_NAME
      export SCHEDULER_NAME=SCHEDULER_NAME
      export SCHEDULER_EXPRESSION="SCHEDULER_EXPRESSION"
      export SCHEDULER_TZ=SCHEDULER_TZ
      export SERVICE_ACCOUNT_NAME=SERVICE_ACCOUNT_NAME
      

      Haz los cambios siguientes:

      • PROJECT_ID: el ID del proyecto Google Cloud en el que quieras instalar la instancia de empresa, la función de Cloud Run y Cloud Scheduler.
      • GCP_REGION: la Google Cloud región en la que quieres instalar la instancia de empresa, la función de Cloud Run y Cloud Scheduler.
      • APP_ENGINE_REGION: una región de la lista de ubicaciones de App Engine en la que quieras instalar App Engine. Ten en cuenta los siguientes requisitos:
        • Un proyecto solo puede tener una instancia de App Engine y la región de App Engine no se puede cambiar más adelante. Google Cloud
        • La tarea de Cloud Scheduler y la instancia de App Engine deben estar en la misma región.
          • Por ejemplo, si los recursos de Cloud Scheduler usan us-central1, usa el equivalente de App Engine us-central.
          • App Engine aplica una nomenclatura única a algunas regiones. Para obtener más información, consulta la lista de ubicaciones de App Engine.
      • FUNCTION_NAME: el nombre que quieras dar a la función de Cloud Run.
      • SCHEDULER_NAME: el nombre que quieras asignar al programador de Cloud.
      • SCHEDULER_EXPRESSION: la expresión cron de Cloud Scheduler, por ejemplo, 10 0 * * *. Para obtener más información, consulta Configurar programaciones de tareas cron.
      • SCHEDULER_TZ: tu zona horaria de Cloud Scheduler, en el formato de nombre de la lista de zonas horarias de la base de datos TZ. Por ejemplo, America/Los_Angeles.
      • SERVICE_ACCOUNT_NAME: el nombre de la cuenta de servicio que acabas de crear (por ejemplo, scheduler-sa).

    Crear una cuenta de servicio

    En esta sección, creará una cuenta de servicio específica que le permitirá crear y gestionar la función de Cloud Run y el trabajo de Cloud Scheduler.

    Cuando sigas este procedimiento, la cuenta de servicio necesitará los siguientes permisos:

    • file.instances.get
    • file.snapshots.list
    • file.snapshots.create
    • file.operations.get
    • file.snapshots.delete
    • cloudfunctions.functions.invoke

    Para obtener más información, consulta los permisos de gestión de identidades y accesos de Filestore o los permisos de gestión de identidades y accesos de las funciones de Cloud Run.

    Para crear la cuenta de servicio, sigue estos pasos:

    1. En Cloud Shell, crea un rol específico para el programador de capturas con los permisos necesarios:

      gcloud iam roles create snapshot_scheduler --project $PROJECT_ID --permissions file.instances.get,file.snapshots.list,file.snapshots.create,file.operations.get,file.snapshots.delete,logging.logEntries.create,cloudfunctions.functions.invoke --stage GA
      
    2. Crea la cuenta de servicio:

      gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
      
    3. Vincula el rol a la cuenta de servicio:

      gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --role projects/$PROJECT_ID/roles/snapshot_scheduler
      

    Crear una instancia Enterprise

    1. Si aún no has creado variables de entorno para una instancia de empresa que quieras usar, crea las siguientes variables en Cloud Shell:

      export FILESTORE_INSTANCE_ID=FILESTORE_INSTANCE_ID
      export FILESTORE_SHARE_NAME=SHARE_NAME
      export FILESTORE_SHARE_SIZE=NUMERIC_IN_GB
      export NETWORK_NAME=VPC_NAME
      

      Haz los cambios siguientes:

      • FILESTORE_INSTANCE_ID: nombre de la instancia de empresa
      • SHARE_NAME: el nombre de la instancia de empresa compartida
      • NUMERIC_IN_GB: el tamaño de la instancia compartida de la empresa, un número entre 1024 y 10240, en incrementos de 256
      • VPC_NAME: el nombre de la red de VPC en la que quieres instalar la instancia Enterprise.
    2. Si aún no tienes una, crea una instancia de Filestore:

      gcloud filestore instances create $FILESTORE_INSTANCE_ID --network name=$NETWORK_NAME --file-share=capacity=$FILESTORE_SHARE_SIZE,name=$FILESTORE_SHARE_NAME --tier ZONAL --project=$PROJECT_ID --location=$GCP_REGION
      

    Para obtener más información, consulta el apartado sobre crear instancias.

    Crear una aplicación de App Engine

    En esta sección, creará una aplicación de App Engine para suGoogle Cloud proyecto. Esto te permitirá crear una tarea de Cloud Scheduler más adelante en este tutorial.

    Un proyecto solo puede tener una aplicación de App Engine y la región no se puede cambiar más adelante. Google Cloud

    • Si aún no tienes una, crea una aplicación de App Engine en Cloud Shell:

      gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
      

    Crear el archivo de configuración JSON

    El archivo de configuración JSON puede tener hasta ocho instancias de Filestore debido a una limitación de las funciones de Cloud Run. Si tienes más de ocho instancias de Filestore para las que quieres programar capturas, usa trabajos adicionales de Cloud Scheduler.

    • En Cloud Shell, crea un archivo llamado request.json y edita el contenido según tu entorno:

      {
                  "retention_policy": "RETENTION_NAME",
                  "instances": [
                      {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/",
                          "snapshots": NUMBER_OF_SNAPSHOTS
                      }
                  ]
      }
      

      Haz los cambios siguientes:

      • RETENTION_NAME: el nombre del tipo de retención de la instantánea, que se convierte en parte del nombre de la instantánea (por ejemplo, daily).
      • NUMBER_OF_SNAPSHOTS: número de copias.

    Clonar el repositorio

    Clona el repositorio del laboratorio y, a continuación, accede al directorio:

    1. En Cloud Shell, clona el repositorio del laboratorio:

      git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
      

      El resultado debería ser similar al siguiente:

      Cloning into Filestore-Snapshot-Scheduler
      
    2. Introduce el directorio:

      cd Filestore-Snapshot-Scheduler
      

    Crear la función de Cloud Run

    En Cloud Shell, crea la solución de función de Cloud Run:

    gcloud functions deploy $FUNCTION_NAME --region $GCP_REGION --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account $SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --entry-point main --project $PROJECT_ID
    

    Por ejemplo:

    gcloud functions deploy scheduler_func --region us-central1 --runtime=python39 --trigger-http --source scheduler/ --timeout 540 --service-account scheduler-sa@project1.iam.gserviceaccount.com --entry-point main --project project1
    

    Crear una tarea de Cloud Scheduler

    La tarea de Cloud Scheduler debe estar en una región equivalente a la región de App Engine.

    En Cloud Shell, crea una tarea de Cloud Scheduler con uno o varios programadores en la misma instancia de Filestore:

    gcloud scheduler jobs create http $SCHEDULER_NAME --schedule "$SCHEDULER_EXPRESSION" --uri "https://$GCP_REGION-$PROJECT_ID.cloudfunctions.net/$FUNCTION_NAME"  --http-method POST --message-body-from-file ../request.json --oidc-service-account-email $SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com --time-zone $SCHEDULER_TZ --project $PROJECT_ID
    

    En el siguiente ejemplo, el programador diario se ejecuta a las 20:00:

    gcloud scheduler jobs create http daily_scheduler --schedule "0 20 * * *" --uri "https://us-central1-project1.cloudfunctions.net/scheduler_func"  --http-method POST --message-body-from-file ../request.json --oidc-service-account-email scheduler-sa@project1.iam.gserviceaccount.com --time-zone America/Los_angeles --project project1
    

    Validar las capturas de Filestore programadas

    1. En la Google Cloud consola, ve a la página Cloud Scheduler.

      Ir a Cloud Scheduler

    2. En la fila del trabajo que ha creado, haga clic en Acciones > Forzar la ejecución de un trabajo.

    3. Haz clic en Renovar.

      • Si la tarea se ejecuta correctamente, en la columna Resultado de la última ejecución se muestra la marca de tiempo de la última tarea correcta.
      • Si el trabajo falla, haz lo siguiente:

        1. Ve a la página Funciones de Cloud.

          Ir a Cloud Functions

        2. En la fila de la función que has creado, haz clic en Acciones > Ver registros.

        3. Busca un mensaje de error y soluciona el problema correspondiente.

    4. En la consola, ve a la página Instancias de Filestore. Google Cloud

    5. En la lista Instancias, selecciona tu instancia y comprueba que tenga una instantánea con el siguiente formato de nombre:

      sched-RETENTION_NAME-DATE-TIME
      

      Por ejemplo, sched-daily-20220315-120640.

    Limpieza

    Limpieza

    Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Cloud Platform, elimina el proyecto que contiene los recursos.

    Eliminar el proyecto

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    Siguientes pasos