Agende instantâneos empresariais do Filestore

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.

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 empresarial, 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 empresarial, 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 única 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 agendador 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 empresarial

  1. Se ainda não tiver criado 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_NAME
    

    Substitua o seguinte:

    • FILESTORE_INSTANCE_ID: o nome da instância empresarial
    • SHARE_NAME: o nome da partilha da instância empresarial
    • NUMERIC_IN_GB: o tamanho da partilha da instância empresarial, um número entre 1024 e 10240, em incrementos de 256
    • VPC_NAME: o nome da rede VPC onde quer instalar a instância empresarial
  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 ZONAL --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 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 Funções do Google Cloud

      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.