Este documento é destinado a tomadores de decisões de TI, administradores de backup e de recuperação de desastres (DR, na sigla em inglês) que querem aprender a criar snapshots programados do Filestore.
Objetivos
- Configure as funções do Cloud Run e o arquivo de configuração JSON.
- Criar um job do Cloud Scheduler.
- Criar e rotular snapshots programados do Filestore.
- Monitore o processo de criação do snapshot.
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, 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 exclui apenas um snapshot quando necessário, mesmo que haja mais snapshots do programador do que o definido no arquivo de configuração da política de retenção ou se o arquivo de configuração da política de retenção for atualizado para manter menos snapshots do que antes.
- Se você diminuir o valor numérico de
snapshots
no arquivo de configuração JSON, os snapshots redundantes da instância não serão excluídos automaticamente. Se você mudar a configuração, precisará excluir manualmente os snapshots redundantes. - Como o limite para o ID do snapshot é de 75 caracteres, o nome da política de retenção tem um limite de 50 caracteres.
- No Cloud Shell, digite este 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:
PROJECT_ID
: o ID do projeto Google Cloud em que você quer instalar a instância do Filestore Enterprise, a função do Cloud Run e o Cloud Scheduler.GCP_REGION
: a região Google Cloud em que você 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 locais do App Engine em que você quer instalar o App Engine. Considere os seguintes requisitos:- Um projeto do Google Cloud pode ter apenas uma instância do App Engine, e a região do App Engine não pode ser alterada depois.
- O job do Cloud Scheduler e a instância do App Engine precisam 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 mais detalhes, consulte a lista de locais do App Engine.
- Por exemplo, se os recursos do Cloud Scheduler usarem
FUNCTION_NAME
: o nome que você quer dar à função do Cloud Run.SCHEDULER_NAME
: o nome que você quer dar ao Cloud Scheduler.SCHEDULER_EXPRESSION
: a expressão cron do Cloud Scheduler. Por exemplo,10 0 * * *
. Para mais informações, consulte Configurar programações de cron job.SCHEDULER_TZ
: seu fuso horário para o Cloud Scheduler, no formato de nome da lista de fusos horários do banco 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 um papel dedicado para o programador de snapshots com as permissõ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
Vincule o papel à 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 você 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:
FILESTORE_INSTANCE_ID
: o nome da instância do Filestore EnterpriseSHARE_NAME
: o nome do compartilhamento da instância do Filestore EnterpriseNUMERIC_IN_GB
: o tamanho do compartilhamento da instância do Filestore Enterprise, um número entre 1024 e 10240, em incrementos de 256.VPC_NAME
: o nome da rede VPC em que você quer instalar a instância do Filestore Enterprise.
Se você 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 você ainda não tiver um, crie um no Cloud Shell:
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
No Cloud Shell, crie um arquivo chamado
request.json
e edite o conteúdo de acordo com seu ambiente:{ "retention_policy": "RETENTION_NAME", "instances": [ {"instance_path": "projects/PROJECT_ID/locations/GCP_REGION/instances/FILESTORE_INSTANCE_ID/", "snapshots": NUMBER_OF_SNAPSHOTS } ] }
Substitua:
RETENTION_NAME
: o nome do tipo de retenção de snapshot, que faz parte do nome do snapshot. Por exemplo,daily
.NUMBER_OF_SNAPSHOTS
: o número de snapshots.
No Cloud Shell, clone o repositório do laboratório:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-Scheduler
O resultado será assim:
Cloning into Filestore-Snapshot-Scheduler
Insira o diretório:
cd Filestore-Snapshot-Scheduler
No console Google Cloud , acesse a página Cloud Scheduler.
Na linha do job que você criou, clique em
Ações > Forçar a execução de um job.Clique em Atualizar.
- Se o job for executado sem erros, a coluna Resultado da última execução vai mostrar um carimbo de data/hora do último job concluído.
Se o job falhar, faça o seguinte:
Acesse a página Cloud Functions.
Na linha da função que você criou, clique em
Ações > Conferir registros.Procure uma mensagem de erro e resolva o problema de acordo com ela.
No console do Google Cloud , acesse a página Instâncias do Filestore.
Na lista Instâncias, selecione sua instância e verifique se ela tem um snapshot 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 os snapshots do Filestore.
- Saiba mais sobre os backups do Filestore.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.
Modelo de implantação
O diagrama a seguir mostra o modelo de implantação que oferece suporte a funções do Cloud Run de snapshots do Filestore.
O job do Cloud Scheduler coordena com as funções do Cloud Run para programar e gerar snapshots do Filestore e arquivos de registro. Os snapshots estão disponíveis no compartilhamento do Filestore.
Limitações conhecidas
Ao se preparar para configurar um programador de snapshots para instâncias do Filestore, considere as seguintes limitações:
Preparar o ambiente
Nesta seção, você configura as variáveis de ambiente, clona o repositório e cria os aplicativos e arquivos necessários para este tutorial.
Defina as variáveis de ambiente
gcloud components update
Criar uma conta de serviço
Nesta seção, você cria uma conta de serviço dedicada, que permite criar e gerenciar a função do Cloud Run e o job do Cloud Scheduler.
Ao fazer esse procedimento, a conta de serviço precisa das seguintes permissões:
Para mais informações, consulte Permissões do IAM do Filestore ou Permissões do IAM das funções do Cloud Run.
Para criar a conta de serviço, faça o seguinte:
Criar uma instância do Filestore Enterprise
Para saber mais, consulte o artigo Criar instâncias.
Criar um App Engine
Nesta seção, você vai criar um App Engine para seu projetoGoogle Cloud . Isso permite criar um job do Cloud Scheduler mais tarde neste tutorial.
Um projeto do Google Cloud pode ter apenas um App Engine, e a região não pode ser alterada depois.
Criar o arquivo de configuração JSON
O arquivo de configuração JSON pode ter até oito instâncias do Filestore devido a uma limitação das funções do Cloud Run. Se você tiver mais de oito instâncias do Filestore para programar snapshots, use mais jobs do Cloud Scheduler.
Clonar o repositório
Clone o repositório do laboratório e entre no diretório:
Criar 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
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
Criar um job do Cloud Scheduler
O job do Cloud Scheduler precisa estar em uma região equivalente à região do App Engine.
No Cloud Shell, crie um job do Cloud Scheduler com um ou mais schedulers 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 a seguir, o programador diário é executado às 20h:
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