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 Cloud de Confiance by S3NS:
Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Limpeza.
Antes de começar
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance 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 role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
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:
- 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
snapshotsno 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.
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
- No Cloud Shell, digite este comando:
gcloud components update
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_NAMESubstitua:
PROJECT_ID: o ID do projeto Cloud de Confiance em que você quer instalar a instância empresarial, a função do Cloud Run e o Cloud Scheduler.GCP_REGION: a Cloud de Confiance região em que você quer instalar a instância empresarial, 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 Cloud de Confiance 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.
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:
file.instances.getfile.snapshots.listfile.snapshots.createfile.operations.getfile.snapshots.deletecloudfunctions.functions.invoke
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:
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 GACrie a conta de serviço:
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_IDVincule o papel à conta de serviço:
gcloud projects add-iam-policy-binding $PROJECT_ID --member serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.s3ns.iam.gserviceaccount.com --role projects/$PROJECT_ID/roles/snapshot_scheduler
Criar uma instância empresarial
Se você ainda não criou variáveis de ambiente para uma instância empresarial 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_NAMESubstitua:
FILESTORE_INSTANCE_ID: o nome da instância empresarialSHARE_NAME: o nome do compartilhamento da instância empresarialNUMERIC_IN_GB: o tamanho do compartilhamento da instância empresarial, um número entre 1.024 e 10.240, em incrementos de 256.VPC_NAME: o nome da rede VPC em que você quer instalar a instância empresarial
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 ZONAL --project=$PROJECT_ID --location=$GCP_REGION
Para saber mais, consulte o artigo Criar instâncias.
Criar um App Engine
Nesta seção, você vai criar um App Engine para seu projetoCloud de Confiance . Isso permite criar um job do Cloud Scheduler mais tarde neste tutorial.
Um projeto do Cloud de Confiance pode ter apenas um App Engine, e a região não pode ser alterada depois.
Se você ainda não tiver um, crie um App Engine no Cloud Shell:
gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
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 do Cloud Run Functions. Se você tiver mais de oito instâncias do Filestore para programar snapshots, use mais jobs do Cloud Scheduler.
No Cloud Shell, crie um arquivo chamado
request.jsone 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.
Clonar o repositório
Clone o repositório do laboratório e entre no diretório:
No Cloud Shell, clone o repositório do laboratório:
git clone https://github.com/GoogleCloudPlatform/Filestore-Snapshot-SchedulerO resultado será o seguinte:
Cloning into Filestore-Snapshot-SchedulerInsira o diretório:
cd Filestore-Snapshot-Scheduler
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.s3ns.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.s3ns.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.s3ns.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.s3ns.iam.gserviceaccount.com --time-zone America/Los_angeles --project project1
Validar os snapshots programados do Filestore
No console Cloud de Confiance , 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 Cloud de Confiance , 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-TIMEPor exemplo,
sched-daily-20220315-120640
Limpar
Limpar
Para evitar cobranças na sua conta do Cloud Platform pelos recursos usados neste tutorial, exclua o projeto que contém os recursos.
Excluir o projeto
- No console Cloud de Confiance , acesse a página Gerenciar recursos.
- Na lista de projetos, selecione o projeto que você quer excluir e clique em Excluir .
- Na caixa de diálogo, digite o ID do projeto e clique em Encerrar para excluí-lo.
A seguir
- 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.