Programa instantáneas de Filestore Enterprise


En este documento, se muestra cómo usar Cloud Scheduler para programar y proteger instantáneas de Filestore.

Este documento está dirigido a los administradores de copias de seguridad y recuperación ante desastres (DR), y a los encargados de tomar decisiones de TI que deseen obtener información sobre las instantáneas programadas de Filestore o crearlas.

Objetivos

  • Configura Cloud Run Functions y el archivo de configuración JSON.
  • Crear un trabajo de Cloud Scheduler
  • Crea y etiqueta instantáneas programadas de Filestore.
  • Supervisa el proceso de creación de la instantánea.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.

Es posible que los usuarios de Google Cloud nuevos cumplan con los requisitos para acceder a una prueba gratuita.

Cuando finalices este instructivo, podrás borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

  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 las funciones de Cloud Run de instantáneas de Filestore.

    Es un modelo de Deployment que admite funciones de Cloud Run de instantáneas de Filestore.

    El trabajo de Cloud Scheduler se coordina con las funciones de Cloud Run para programar y generar instantáneas y archivos de registro de Filestore. 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 borra solo una instantánea cuando es necesario, incluso si hay más instantáneas del programador de las que se definen en el archivo de configuración de la política de retención o si el archivo de configuración de la política de retención se actualiza para conservar menos instantáneas que antes.
    • Si disminuyes el valor numérico de snapshots en el archivo de configuración JSON, no se borrarán automáticamente las instantáneas redundantes de la instancia. Si cambias el parámetro de configuración, deberás borrar manualmente las instantáneas redundantes.
    • Debido a que el límite para el ID de instantánea es de 75 caracteres, el nombre de la política de retención tiene un límite de 50 caracteres.

    Prepara el entorno

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

    Configure las variables de entorno

    • En Cloud Shell, ingresa 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
      

      Reemplaza lo siguiente:

      • PROJECT_ID: ID del proyecto en el que deseas instalar la instancia empresarial, la función de Cloud Run y Cloud Scheduler. Google Cloud
      • GCP_REGION: La Google Cloud región en la que deseas instalar la instancia empresarial, la función de Cloud Run y Cloud Scheduler.
      • APP_ENGINE_REGION: Es una región de la lista de ubicaciones de App Engine en la que deseas instalar App Engine. Ten en cuenta los siguientes requisitos:
        • Un proyecto Google Cloud solo puede tener una instancia de App Engine, y la región de App Engine no se puede cambiar más adelante.
        • El trabajo de Cloud Scheduler y la instancia de App Engine deben residir 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 convención de nombres única para algunas regiones. Para obtener más detalles, consulta la lista de ubicaciones de App Engine.
      • FUNCTION_NAME: Es el nombre que deseas asignarle a la función de Cloud Run.
      • SCHEDULER_NAME: Es el nombre que deseas darle a Cloud Scheduler.
      • SCHEDULER_EXPRESSION: La expresión cron de Cloud Scheduler, por ejemplo, 10 0 * * *. Para obtener más información, consulta Configura trabajo cron cron.
      • SCHEDULER_TZ: Tu zona horaria para 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: Es el nombre de la cuenta de servicio recién creada, por ejemplo, scheduler-sa.

    Crea una cuenta de servicio

    En esta sección, crearás una cuenta de servicio dedicada que te permitirá crear y administrar la función de Cloud Run y el trabajo de Cloud Scheduler.

    Cuando realices este procedimiento, la cuenta de servicio requerirá 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 Permisos de IAM de Filestore o Permisos de IAM de Cloud Run Functions.

    Para crear la cuenta de servicio, haz lo siguiente:

    1. En Cloud Shell, crea un rol dedicado para el programador de instantáneas 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
      

    Crea una instancia empresarial

    1. Si aún no creaste variables de entorno para una instancia empresarial que deseas 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
      

      Reemplaza lo siguiente:

      • FILESTORE_INSTANCE_ID: Es el nombre de la instancia empresarial.
      • SHARE_NAME: Es el nombre de uso compartido de la instancia empresarial.
      • NUMERIC_IN_GB: Tamaño de la instancia empresarial compartida, un número entre 1,024 y 10,240, en incrementos de 256
      • VPC_NAME: Es el nombre de la red de VPC en la que deseas instalar la instancia empresarial.
    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 Crea instancias.

    Crea una aplicación de App Engine

    En esta sección, crearás una aplicación de App Engine para tu proyecto deGoogle Cloud . Esto te permite crear un trabajo de Cloud Scheduler más adelante en este instructivo.

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

    • 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
      

    Crea 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 Cloud Run Functions. Si tienes más de ocho instancias de Filestore para las que programar instantáneas, usa trabajos adicionales de Cloud Scheduler.

    • En Cloud Shell, crea un archivo nuevo 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
                      }
                  ]
      }
      

      Reemplaza lo siguiente:

      • RETENTION_NAME: Es el nombre del tipo de retención de instantáneas, que se convierte en parte del nombre de la instantánea, por ejemplo, daily.
      • NUMBER_OF_SNAPSHOTS: Es la cantidad de instantáneas.

    Clona el repositorio

    Clona el repositorio del lab y, luego, ingresa al directorio:

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

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

      El resultado es similar a este:

      Cloning into Filestore-Snapshot-Scheduler
      
    2. Ingresa al directorio:

      cd Filestore-Snapshot-Scheduler
      

    Crea la Cloud Run Function

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

    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
    

    Crea un trabajo de Cloud Scheduler

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

    En Cloud Shell, crea un trabajo de Cloud Scheduler con uno o más 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 8:00 p.m.:

    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
    

    Valida las instantáneas programadas de Filestore

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

      Ir a Cloud Scheduler

    2. En la fila del trabajo que creaste, haz clic en Acciones > Forzar una ejecución de trabajo.

    3. Haz clic en Actualizar.

      • Si el trabajo se ejecuta correctamente, en la columna Resultado de la última ejecución, se mostrará la marca de tiempo del último trabajo exitoso.
      • Si el trabajo falla, haz lo siguiente:

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

          Ir a Cloud Functions

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

        3. Busca un mensaje de error y soluciona el problema según corresponda.

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

    5. En la lista Instances, selecciona tu instancia y asegúrate de que tenga una instantánea con el siguiente formato de nombre:

      sched-RETENTION_NAME-DATE-TIME
      

      Por ejemplo, sched-daily-20220315-120640.

    Limpia

    Limpia

    Para evitar que se apliquen cargos a tu cuenta de Cloud Platform por los recursos que usaste en este instructivo, borra el proyecto que contiene los recursos.

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

    ¿Qué sigue?