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.
Antes de empezar
- 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.
-
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. -
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 theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enable
permission. Learn how to grant roles. - 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.
- En Cloud Shell, introduce el siguiente comando:
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 Engineus-central
. - App Engine aplica una nomenclatura única a algunas regiones. Para obtener más información, consulta la lista de ubicaciones de App Engine.
- Por ejemplo, si los recursos de Cloud Scheduler usan
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
).
file.instances.get
file.snapshots.list
file.snapshots.create
file.operations.get
file.snapshots.delete
cloudfunctions.functions.invoke
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
Crea la cuenta de servicio:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
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
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 empresaSHARE_NAME
: el nombre de la instancia de empresa compartidaNUMERIC_IN_GB
: el tamaño de la instancia compartida de la empresa, un número entre 1024 y 10240, en incrementos de 256VPC_NAME
: el nombre de la red de VPC en la que quieres instalar la instancia Enterprise.
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
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
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.
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
Introduce el directorio:
cd Filestore-Snapshot-Scheduler
En la Google Cloud consola, ve a la página Cloud Scheduler.
En la fila del trabajo que ha creado, haga clic en
Acciones > Forzar la ejecución de un trabajo.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:
Ve a la página Funciones de Cloud.
En la fila de la función que has creado, haz clic en
Acciones > Ver registros.Busca un mensaje de error y soluciona el problema correspondiente.
En la consola, ve a la página Instancias de Filestore. Google Cloud
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
.- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
- Consulta más información sobre las capturas de Filestore.
- Más información sobre las copias de seguridad de Filestore
- Consulta arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Centro de arquitectura de Cloud.
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.
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:
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:
gcloud components update
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:
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:
Crear una instancia Enterprise
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
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.
Clonar el repositorio
Clona el repositorio del laboratorio y, a continuación, accede al directorio:
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
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.