Este documento está dirigido a encargados de la toma de decisiones de TI, administradores de copias de seguridad y de recuperación ante desastres (DR) que quieran crear instantáneas programadas de Filestore.
Objetivos
- Configurar las funciones de Cloud Run y el archivo de configuración JSON
- Crear un trabajo de Cloud Scheduler
- Crear y etiquetar instantáneas programadas de Filestore
- Supervisar 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.
Antes de comenzar
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.
Modelo de implementación
En el siguiente diagrama, se muestra el modelo de implementación que admite Funciones de Cloud Run para 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. El están disponibles en el recurso compartido de Filestore.
Limitaciones conocidas
Prepárate para configurar un programador de instantáneas para Filestore instancias, 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 la política de retención. o si el archivo de configuración de la política de retención está para mantener menos instantáneas que antes.
- Si disminuyes el valor numérico de
snapshots
en archivo de configuración JSON, las instantáneas redundantes de la instancia no se se borran automáticamente. Si cambias la configuración, deberás borrar las copias las instantáneas de forma manual. - Como el límite para el ID de instantánea es de 75 caracteres, la el nombre de la política 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 las aplicaciones y los archivos que necesitas para este instructivo.
Configura 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
: Es el ID del proyecto de Google Cloud en el que si quieres instalar la instancia de Filestore Enterprise, la función de Cloud Run y Cloud Scheduler.GCP_REGION
: Es la región de Google Cloud en la que instalar la instancia de Filestore Enterprise, la función de Cloud Run y de Cloud Scheduler.APP_ENGINE_REGION
: Es una región de la Se enumeran las ubicaciones de App Engine en las que deseas instalar App Engine. Ten en cuenta los siguientes requisitos:- Un proyecto de Google Cloud puede tener solo 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
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 convención de nombres única para algunas regiones. Para obtener más detalles, consulta la lista de ubicaciones de App Engine.
- Por ejemplo, si los recursos de Cloud Scheduler usan
FUNCTION_NAME
: Es el nombre que deseas asignarle al Cloud Run.SCHEDULER_NAME
: Es el nombre que deseas asignarle al de Google Cloud Scheduler.SCHEDULER_EXPRESSION
: Cloud Scheduler expresión cron, por ejemplo,10 0 * * *
. Para obtener más información, consulta Configura trabajo cron cron.SCHEDULER_TZ
: Tu zona horaria del 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 permite crear y administrar la función de Cloud Run y el trabajo de Cloud Scheduler.
Cuando realices este procedimiento, la cuenta de servicio requerirá lo siguiente: 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:
En Cloud Shell, crea un rol exclusivo para la instantánea. programador 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
Cree 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
Crea una instancia de Filestore Enterprise
Si aún no creaste variables de entorno para un instancia de Filestore Enterprise que quieres usar, en Cloud Shell, crea las siguientes variables:
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
: la instancia de Filestore Enterprise nombreSHARE_NAME
: Es el nombre del recurso compartido de la instancia de Filestore Enterprise.NUMERIC_IN_GB
: Es el recurso compartido de la instancia de Filestore Enterprise. de tamaño, un número entre 1024 y 10240, en incrementos de 256VPC_NAME
: Es el nombre de la red de VPC en la que deseas instalar el Instancia de Filestore 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 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 una instancia de 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 una cuenta de App Engine, y la la región no se puede cambiar más adelante.
Si aún no tienes una, crea una en Cloud Shell 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 archivos instancias debido a una limitación de las funciones de Cloud Run. Si tienes más de ocho instancias de Filestore para programar instantáneas, usan Trabajos de Cloud Scheduler
En Cloud Shell, crea un archivo nuevo llamado
request.json
. 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 de la instantánea. Tipo de retención, 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:
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
Ingresa el directorio:
cd Filestore-Snapshot-Scheduler
Crea la función de Cloud Run
En Cloud Shell, crea la solución de la 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
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
En la consola de Google Cloud, ve a la página Programador de Cloud.
En la fila del trabajo que creaste, haz clic en
. Acciones > Fuerza la ejecución de un trabajo.Haz clic en Actualizar.
- Si el trabajo se ejecuta correctamente, la columna Resultado de la última ejecución muestra una marca de tiempo del último trabajo que se ejecutó correctamente.
Si el trabajo falla, haz lo siguiente:
Ve a la página de Cloud Functions.
En la fila de la función que creaste, haz clic en
. Acciones > Visualiza los registros.Busca un mensaje de error y soluciona el problema según corresponda.
En la consola de Google Cloud, ve a la página Instancias de Filestore.
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
Evitar que se apliquen cargos a tu cuenta de Cloud Platform por los recursos usadas en este instructivo, borra el proyecto que contiene los recursos.Borra el proyecto
- En la consola de Google Cloud, ve a la página Administrar recursos.
- En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
- En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
¿Qué sigue?
- Obtén más información sobre las instantáneas de Filestore.
- Obtén más información sobre las copias de seguridad de Filestore.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.