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 responsables de tomar decisiones de TI, administradores de copias de seguridad y administradores de recuperación ante desastres (DR) que quieran obtener información sobre las instantáneas programadas de Filestore o crearlas.

Objetivos

  • Configurar Cloud Functions y el archivo de configuración JSON
  • Crear un trabajo de Cloud Scheduler
  • Crear y etiquetar instantáneas programadas de Filestore
  • Supervisa el proceso de creación de instantáneas.

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 nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando termines este instructivo, puedes borrar los recursos que creaste para evitar que se te sigan facturando. Para obtener más información, consulta Realiza una limpieza.

Antes de comenzar

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita las API de Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.

    Habilita las API

Modelo de implementación

En el siguiente diagrama, se muestra el modelo de implementación que admite la instantánea de Filestore de Cloud Functions.

Modelo de Deployment que admite Cloud Functions de instantáneas de Filestore.

El trabajo de Cloud Scheduler se coordina con Cloud Functions 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 preparas a fin de 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 que las definidas 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 mantener menos instantáneas que antes.
  • Si disminuyes el valor numérico de snapshots en el archivo de configuración JSON, las instantáneas redundantes de la instancia no se borran de forma automática. Si cambias la configuración, deberás borrar las instantáneas redundantes de forma manual.
  • Debido a que el límite del ID de la instantánea es de 75 caracteres, el nombre de la política de retención tiene un límite de 50 caracteres.

Prepare el 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 instructivo.

Configura 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: El ID del proyecto de Google Cloud en el que deseas instalar la instancia de Filestore Enterprise, Cloud Function y el programador de Cloud
    • GCP_REGION: La región de Google Cloud en la que deseas instalar la instancia de Filestore Enterprise, Cloud Function 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 de Google Cloud solo puede tener una instancia de App Engine. 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 información, consulta la lista de ubicaciones de App Engine.
    • FUNCTION_NAME: Es el nombre que deseas asignar a la Cloud Function.
    • SCHEDULER_NAME: Es el nombre que deseas asignar a Cloud Scheduler.
    • SCHEDULER_EXPRESSION: Es la expresión cron de Cloud Scheduler, por ejemplo, 10 0 * * *. Para obtener más información, consulta Configuratrabajo crons cron.
    • SCHEDULER_TZ: Es la 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: Es el nombre de la cuenta de servicio recién creada, por ejemplo, scheduler-sa.

Crear una cuenta de servicio

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

Cuando realizas este procedimiento, la cuenta de servicio requiere 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 Functions.

Para crear la cuenta de servicio, haz lo siguiente:

  1. En Cloud Shell, crea una función dedicada 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 de Filestore Enterprise

  1. Si aún no creaste variables de entorno para la instancia de Filestore Enterprise 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 de Filestore Enterprise.
    • SHARE_NAME: Es el nombre de uso compartido de la instancia de Filestore Enterprise.
    • NUMERIC_IN_GB: La instancia de Filestore Enterprise comparte el tamaño, 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 de Filestore 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 ENTERPRISE --project=$PROJECT_ID --location=$GCP_REGION
    

Para obtener más información, consulta Crea instancias.

Crea una instancia de App Engine

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

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

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

    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 Functions. Si tienes más de ocho instancias de Filestore para 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 vuelve 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 el directorio:

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

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

    El resultado es similar al siguiente:

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

    cd Filestore-Snapshot-Scheduler
    

Crea la Cloud Function

En Cloud Shell, crea la solución de Cloud 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 de Google Cloud, ve a la página del programador de Cloud.

    Ir al programador de Cloud

  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 de forma correcta, la columna Resultado de la última ejecución muestra una 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 los problemas según corresponda.

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

  5. En la lista Instancias, 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

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

Borra el proyecto

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?