Agende instantâneos do Filestore Enterprise


Este documento mostra como usar o Cloud Scheduler para agendar e ajudar a proteger as cópias instantâneas do Filestore.

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.

Os novos Google Cloud utilizadores podem ser elegíveis para uma avaliação gratuita.

Quando terminar este tutorial, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.

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. Verify that billing is enabled for your Google Cloud project.

  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. Verify that billing is enabled for your Google Cloud project.

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

    Enable the APIs

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

    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:

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

    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

    • No Cloud Shell, introduza o seguinte 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 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 Cloud
      • GCP_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 Engine us-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.
      • 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.

    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:

    • file.instances.get
    • file.snapshots.list
    • file.snapshots.create
    • file.operations.get
    • file.snapshots.delete
    • cloudfunctions.functions.invoke

    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:

    1. 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
      
    2. Crie a conta de serviço:

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

    Crie uma instância do Filestore Enterprise

    1. 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 Enterprise
      • SHARE_NAME: o nome de partilha da instância do Filestore Enterprise
      • NUMERIC_IN_GB: o tamanho da partilha da instância do Filestore Enterprise, um número entre 1024 e 10240, em incrementos de 256
      • VPC_NAME: o nome da rede VPC onde quer instalar a instância do Filestore Enterprise
    2. 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
      

    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.

    • 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
      

    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.

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

    Clonar o repositório

    Clone o repositório do laboratório e, em seguida, introduza o diretório:

    1. 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
      
    2. Introduza o diretório:

      cd Filestore-Snapshot-Scheduler
      

    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
    

    Valide os instantâneos do Filestore agendados

    1. Na Google Cloud consola, aceda à página Cloud Scheduler.

      Aceda ao Cloud Scheduler

    2. Na linha da tarefa que criou, clique em Ações > Forçar execução de tarefa.

    3. 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:

        1. Aceda à página Cloud Functions.

          Aceder às Cloud Functions

        2. Na linha da função que criou, clique em Ações > Ver registos.

        3. Procure uma mensagem de erro e resolva os problemas em conformidade.

    4. Na Google Cloud consola, aceda à página Instâncias do Filestore.

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

    Limpar

    Para evitar incorrer em custos na sua conta da Cloud Platform pelos recursos usados neste tutorial, elimine o projeto que contém os recursos.

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

    O que se segue?