Programar snapshots do Filestore empresarial


Neste documento, mostramos como usar o Cloud Scheduler para programar e ajudar você proteger os snapshots do Filestore.

Este documento é destinado a tomadores de decisões de TI, administradores de backup e administradores de recuperação de desastres (DR, na sigla em inglês) que querem saber mais ou 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 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. Novos usuários do Google Cloud podem estar qualificados para uma avaliação gratuita.

Ao concluir este tutorial, exclua os recursos criados para evitar o faturamento contínuo. Para mais informações, consulte Faça a limpeza.

Antes de começar

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  4. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Verifique se a cobrança está ativada para o seu projeto do Google Cloud.

  7. Enable the Filestore, Cloud Scheduler, Cloud Functions, App Engine, and Cloud Build APIs.

    Enable the APIs

Modelo de implantação

O diagrama a seguir mostra o modelo de implantação que oferece suporte às funções do Cloud Run para snapshots do Filestore.

Modelo de implantação que oferece suporte a funções do Cloud Run para snapshots do Filestore.

O job do Cloud Scheduler coordena com as funções do Cloud Run para programar e gerar snapshots e arquivos de registro do Filestore. Os snapshots estão disponíveis no compartilhamento do Filestore.

Limitações conhecidas

Quando você se prepara para configurar um programador de snapshots para o Filestore instâncias, considere as seguintes limitações:

  • A função exclui apenas um snapshot quando necessário, mesmo que não haja há mais snapshots do programador do que o definido na política de retenção ou se o arquivo de configuração da política de retenção estiver 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, vai precisar excluir os dados snapshots manualmente.
  • Como o limite do ID do snapshot é de 75 caracteres, a retenção nome de política tem um limite de 50 caracteres.

Prepare o ambiente

Nesta seção, você vai configurar as variáveis de ambiente, clonar o repositório e criar 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 Run e o agendador do Cloud.
    • GCP_REGION: a região do Google Cloud em que você instalar a instância Enterprise do Filestore, função do Cloud Run e Cloud Scheduler.
    • APP_ENGINE_REGION: uma região do 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 mais tarde.
      • 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 us-central equivalente do App Engine.
        • 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.
    • FUNCTION_NAME: o nome que você quer dar ao objeto. 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-criado, 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 a função do Cloud Run e o job do Cloud Scheduler.

Ao realizar esse procedimento, a conta de serviço precisa das 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 das funções do Cloud Run.

Para criar a conta de serviço, faça o seguinte:

  1. No Cloud Shell, crie um papel dedicado para o snapshot programador 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
    
  2. Crie a conta de serviço:

    gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --project $PROJECT_ID
    
  3. 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

  1. Se você ainda não criou variáveis de ambiente para um instância do Filestore Enterprise que você quer usar, 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: a instância do Filestore Enterprise nome
    • SHARE_NAME: o nome de compartilhamento da instância do Filestore Enterprise
    • NUMERIC_IN_GB: o compartilhamento de instâncias do Filestore Enterprise tamanho, um número entre 1024 e 10240, em incrementos de 256
    • VPC_NAME: o nome da rede VPC em que você quer instalar o Instância Enterprise do Filestore
  2. 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ê vai criar um App Engine para sua projeto do Google Cloud. Isso permite criar um job do Cloud Scheduler mais adiante neste tutorial.

Um projeto do Google Cloud só pode ter um App Engine, e a a região não poderá ser alterada posteriormente.

  • Se você ainda não tiver uma, no Cloud Shell, crie uma App Engine:

    gcloud app create --region=$APP_ENGINE_REGION --project=$PROJECT_ID
    

Crie 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 outros jobs do Cloud Scheduler.

  • No Cloud Shell, crie um novo 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 snapshot. o tipo de retenção, 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 entre no diretório:

  1. 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
    
  2. Entre no 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.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 à do App Engine.

No Cloud Shell, criar um job do Cloud Scheduler com um ou mais 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

Valide os snapshots programados do Filestore

  1. No console do Google Cloud, acesse a página Cloud Scheduler.

    Acessar o Cloud Scheduler

  2. Na linha do job que você criou, clique em Ações > Force a execução de um job.

  3. Clique em Atualizar.

    • Se o job for executado com êxito, a coluna Resultado da última execução vai mostrar um carimbo de data/hora do último job bem-sucedido.
    • Se o job falhar, faça o seguinte:

      1. Acesse a página Cloud Functions.

        Acessar o Cloud Functions

      2. Na linha da função que você criou, clique em Ações > Conferir registros.

      3. Procure uma mensagem de erro e resolva o problema.

  4. No console do Google Cloud, acesse a página Instâncias do Filestore.

  5. 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

Limpar

Para evitar cobranças na sua conta do Cloud Platform pelos recursos usados neste tutorial, exclua o projeto que contém os recursos.

Exclua o projeto

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

A seguir