Este documento destina-se aos responsáveis de TI, aos administradores de cópias de segurança e aos administradores de recuperação de desastres (RD) que querem saber mais ou criar instantâneos agendados do Filestore.
Objetivos
- Configurar funções do Cloud Run e o ficheiro de configuração JSON.
- Crie uma tarefa do Cloud Scheduler.
- Crie e etiquete instantâneos agendados do Filestore.
- Monitorize o processo de criação do instantâneo.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Antes de começar
- 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.
-
Verify that billing is enabled for your Google Cloud project.
-
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.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.
- A função elimina apenas uma única captura de ecrã quando necessário, mesmo que existam mais capturas de ecrã do agendador do que as definidas no ficheiro de configuração da política de retenção ou se o ficheiro de configuração da política de retenção for atualizado para manter menos capturas de ecrã do que antes.
- Se diminuir o valor numérico de
snapshots
no ficheiro de configuração JSON, as capturas de ecrã redundantes da instância não são eliminadas automaticamente. Se alterar a definição, tem de eliminar manualmente as capturas de ecrã redundantes. - Uma vez que o limite para o ID da imagem instantânea é de 75 carateres, o nome da política de retenção tem um limite de 50 carateres.
- No Cloud Shell, introduza o seguinte comando:
No Cloud Shell, crie as seguintes variáveis:
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
Substitua o seguinte:
PROJECT_ID
: o ID do projeto onde quer instalar a instância do Filestore Enterprise, a função do Cloud Run e o Cloud Scheduler. Google CloudGCP_REGION
: a Google Cloud região onde quer instalar a instância do Filestore Enterprise, a função do Cloud Run e o Cloud Scheduler.APP_ENGINE_REGION
: uma região da lista de localizações do App Engine onde quer instalar o App Engine. Considere os seguintes requisitos:- Um Google Cloud projeto só pode ter uma única instância do App Engine e não é possível alterar a região do App Engine mais tarde.
- A tarefa do Cloud Scheduler e a instância do App Engine têm de estar na mesma região.
- Por exemplo, se os recursos do Cloud Scheduler usarem
us-central1
, use o equivalente do App Engineus-central
. - O App Engine aplica uma convenção de nomenclatura exclusiva para algumas regiões. Para ver detalhes, consulte a lista de localizações do App Engine.
- Por exemplo, se os recursos do Cloud Scheduler usarem
FUNCTION_NAME
: o nome que quer dar à função do Cloud Run.SCHEDULER_NAME
: o nome que quer dar ao Cloud Scheduler.SCHEDULER_EXPRESSION
: a expressão cron do Cloud Scheduler, por exemplo,10 0 * * *
. Para mais informações, consulte o artigo Configure programações de tarefas cron.SCHEDULER_TZ
: o seu fuso horário para o Cloud Scheduler, no formato de nome da lista de fusos horários da base de dados tz, por exemplo,America/Los_Angeles
.SERVICE_ACCOUNT_NAME
: o nome da conta de serviço recém-criada, por exemplo,scheduler-sa
.
file.instances.get
file.snapshots.list
file.snapshots.create
file.operations.get
file.snapshots.delete
cloudfunctions.functions.invoke
No Cloud Shell, crie uma função dedicada para o programador de instantâneos com as autorizações necessárias:
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
Crie a conta de serviço:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
Associe a função à conta de serviço:
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
Se ainda não tiver criado variáveis de ambiente para uma instância do Filestore Enterprise que quer usar, no Cloud Shell, crie as seguintes variáveis:
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
Substitua o seguinte:
FILESTORE_INSTANCE_ID
: o nome da instância do Filestore EnterpriseSHARE_NAME
: o nome de partilha da instância do Filestore EnterpriseNUMERIC_IN_GB
: o tamanho da partilha da instância do Filestore Enterprise, um número entre 1024 e 10240, em incrementos de 256VPC_NAME
: o nome da rede VPC onde quer instalar a instância do Filestore Enterprise
Se ainda não tiver uma, crie uma instância do 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
Se ainda não tiver uma, no Cloud Shell, crie uma app do App Engine:
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
No Cloud Shell, crie um novo ficheiro denominado
request.json
e edite o conteúdo de acordo com o seu ambiente:{ "retention_policy": "RETENTION_NAME", "instances": [ {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/", "snapshots": NUMBER_OF_SNAPSHOTS } ] }
Substitua o seguinte:
RETENTION_NAME
: o nome do tipo de retenção do instantâneo, que passa a fazer parte do nome do instantâneo, por exemplo,daily
.NUMBER_OF_SNAPSHOTS
: o número de instantâneos.
No Cloud Shell, clone o repositório do laboratório:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
O resultado é semelhante ao seguinte:
Cloning into Filestore-Snapshot-Scheduler
Introduza o diretório:
cd Filestore-Snapshot-Scheduler
Na Google Cloud consola, aceda à página Cloud Scheduler.
Na linha da tarefa que criou, clique em
Ações > Forçar execução de tarefa.Clique em Atualizar.
- Se a tarefa for executada com êxito, a coluna Resultado da última execução mostra uma data/hora da última tarefa bem-sucedida.
Se a tarefa falhar, faça o seguinte:
Aceda à página Cloud Functions.
Na linha da função que criou, clique em
Ações > Ver registos.Procure uma mensagem de erro e resolva os problemas em conformidade.
Na Google Cloud consola, aceda à página Instâncias do Filestore.
Na lista Instâncias, selecione a sua instância e certifique-se de que tem uma captura de ecrã com o seguinte formato de nome:
sched-RETENTION_NAME-DATE-TIME
Por exemplo,
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.
- Saiba mais sobre as cópias instantâneas do Filestore.
- Saiba mais sobre as cópias de segurança do Filestore.
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.
Modelo de implementação
O diagrama seguinte mostra o modelo de implementação que suporta funções do Cloud Run de instantâneos do Filestore.
O trabalho do Cloud Scheduler coordena-se com as funções do Cloud Run para agendar e gerar instantâneos do Filestore e ficheiros de registo. As cópias instantâneas estão disponíveis na partilha do Filestore.
Limitações conhecidas
Quando se preparar para configurar um programador de instantâneos para instâncias do Filestore, considere as seguintes limitações:
Prepare o seu ambiente
Nesta secção, configura as variáveis de ambiente, clona o repositório e cria as aplicações e os ficheiros necessários para este tutorial.
Defina variáveis de ambiente
gcloud components update
Criar uma conta de serviço
Nesta secção, cria uma conta de serviço dedicada que lhe permite criar e gerir a função do Cloud Run e a tarefa do Cloud Scheduler.
Quando realiza este procedimento, a conta de serviço requer as seguintes autorizações:
Para mais informações, consulte as autorizações de IAM do Filestore ou as autorizações de IAM das funções do Cloud Run.
Para criar a conta de serviço, faça o seguinte:
Crie uma instância do Filestore Enterprise
Para mais informações, consulte o artigo Criar instâncias.
Crie um App Engine
Nesta secção, cria um App Engine para o seu projetoGoogle Cloud . Isto permite-lhe criar um trabalho do Cloud Scheduler mais tarde neste tutorial.
Um Google Cloud projeto só pode ter um único App Engine e não é possível alterar a região mais tarde.
Crie o ficheiro de configuração JSON
O ficheiro de configuração JSON pode ter até oito instâncias do Filestore, devido a uma limitação das funções do Cloud Run. Se tiver mais de oito instâncias do Filestore para agendar instantâneos, use tarefas adicionais do Cloud Scheduler.
Clonar o repositório
Clone o repositório do laboratório e, em seguida, introduza o diretório:
Crie a função do Cloud Run
No Cloud Shell, crie a solução de função do 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 exemplo:
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
Crie uma tarefa do Cloud Scheduler
A tarefa do Cloud Scheduler tem de estar numa região equivalente à região do App Engine.
No Cloud Shell, crie uma tarefa do Cloud Scheduler com um ou mais programadores na mesma instância do 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
No exemplo seguinte, o agendador diário é executado às 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