Este documento é destinado a tomadores de decisão de TI, administradores de backup e administradores de recuperação de desastres (DR) que querem aprender ou criar snapshots programados do Filestore.
Objetivos
- Configure o Cloud Functions 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 de snapshots.
Custos
Neste documento, você 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
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se a cobrança está ativada para o seu projeto do Google Cloud.
-
Ative as APIs Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build.
Modelo de implantação
O diagrama a seguir mostra o modelo de implantação compatível com o Cloud Functions de snapshots do Filestore.
O job do Cloud Scheduler coordena com o Cloud Functions para programar e gerar snapshots e arquivos de registro do Filestore. 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 armazenamento, 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ê alterar a configuração, será necessário excluir os snapshots redundantes manualmente. - Como o limite do ID do snapshot é de 75 caracteres, o nome da política de retenção tem um limite de 50 caracteres.
prepare 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_NAME
Substitua:
PROJECT_ID
: o ID do projeto do Google Cloud em que você quer instalar a instância do Filestore Enterprise, a Função do Cloud e o programador do Cloud.GCP_REGION
: a região do Google Cloud em que você quer instalar a instância do Filestore Enterprise, o função do Cloud 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 única instância do App Engine, e a região do App Engine não pode ser alterada posteriormente.
- O job do Cloud Scheduler e a instância do App Engine precisam residir 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.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 cron job jobs.SCHEDULER_TZ
: o fuso horário do 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
.
Crie uma conta de serviço
Nesta seção, você cria uma conta de serviço dedicada, que permite criar e gerenciar o job do função do Cloud e do Cloud Scheduler.
Quando você faz esse procedimento, a conta de serviço requer as seguintes permissões:
file.instances.get
file.snapshots.list
file.snapshots.create
file.operations.get
file.snapshots.delete
cloudfunctions.functions.invoke
Para mais informações, consulte Permissões do IAM do Filestore ou Permissões do IAM do Cloud Functions.
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 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
Criar uma instância do Filestore Enterprise
Se você ainda não criou variáveis de ambiente para uma instância do Filestore Enterprise que quer usar, crie as seguintes variáveis no 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
Substitua:
FILESTORE_INSTANCE_ID
: o nome da instância do Filestore EnterpriseSHARE_NAME
: o nome de compartilhamento da instância do Filestore EnterpriseNUMERIC_IN_GB
: o tamanho de compartilhamento da instância do Filestore Enterprise, um número entre 1024 e 10240, em incrementos de 256VPC_NAME
: o nome da rede VPC em que você quer instalar a instância do Filestore
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
Para saber mais, consulte o artigo Criar instâncias.
Criar um App Engine
Nesta seção, você cria um App Engine para seu projeto do Google Cloud. Isso permite criar um job do Cloud Scheduler posteriormente neste tutorial.
Um projeto do Google Cloud pode ter apenas um único App Engine, e a região não pode ser alterada posteriormente.
No Cloud Shell, crie um App Engine, caso ainda não tenha um:
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 Functions. Se você tiver mais de oito instâncias do Filestore para programar snapshots, use outros jobs do Cloud Scheduler.
No Cloud Shell, crie um novo arquivo chamado
request.json
e edite o conteúdo de acordo com o 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 do snapshot, que se torna 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 insira o diretório:
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
Digite o diretório:
cd Filestore-Snapshot-Scheduler
Criar a Função do Cloud
No Cloud Shell, crie a solução do função do Cloud:
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 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 a seguir, o programador diário é executado às 20h:
gcloud scheduler jobs create http daily_scheduler --schedule "20 0 * * *" --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 os snapshots programados do Filestore
No Console do Google Cloud, acesse a página do 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 com sucesso, a coluna Resultado da última execução mostrará um carimbo de data/hora do último job bem-sucedido.
Se o job falhar, faça o seguinte:
Acesse a página Funções do Cloud.
Na linha da função que você criou, clique em
Ações > Ver registros.Procure uma mensagem de erro e solucione o problema de acordo.
No Console do Google Cloud, acesse a página Instâncias do Filestore.
Na lista Instâncias, selecione a instância e verifique se ela tem um instantâneo com o seguinte formato de nome:
sched-RETENTION_NAME-DATE-TIME
Por exemplo,
sched-daily-20220315-120640
.
Limpeza
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 do Google Cloud, 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 snapshots do Filestore.
- Saiba mais sobre backups do Filestore.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.