Como programar backups no Cloud Storage

Nesta página, descrevemos como programar backups do Cassandra no Cloud Storage. Nesse método, os backups são armazenados no bucket especificado do Cloud Storage.

Para programar backups do Cassandra, execute as seguintes etapas:

  1. Execute o comando create-service-account a seguir para criar uma conta de serviço (SA, na sigla em inglês) do Google Cloud com o papel padrão roles/storage.objectAdmin. Esse papel da SA permite gravar dados de backup no Cloud Storage. Execute o seguinte comando no diretório hybrid-base-directory/hybrid-files:
    ./tools/create-service-account --env non-prod --dir ./service-accounts
    Esse comando cria uma única conta de serviço chamada apigee-non-prod para uso em ambientes de não produção e coloca o arquivo de chave salvo no diretório ./service-accounts. Para mais informações sobre as contas de serviço do Google Cloud, consulte Como criar e gerenciar contas de serviço.
  2. O comando create-service-account salva um arquivo JSON que contém a chave privada da conta de serviço. O arquivo é salvo no mesmo diretório em que o comando é executado. Você precisará do caminho desse arquivo nas etapas a seguir.
  3. Crie um bucket do Cloud Storage. Especifique uma política de retenção de dados razoável para o bucket. A Apigee recomenda uma política de retenção de dados de 15 dias.
  4. Abra o arquivo overrides.yaml.
  5. Adicione as seguintes propriedades cassandra.backup para ativar o backup. Não remova nenhuma das propriedades já configuradas.

    Parâmetros

    cassandra:
        ...
    
        backup:
          enabled: true
          serviceAccountPath: SA_JSON_FILE_PATH
          dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
          schedule: BACKUP_SCHEDULE_CODE
          cloudProvider: "GCP"  # For remote server backup set this to HYBRID (all caps)
    
        ...
        

    Exemplo

      ...
    
      cassandra:
        storage:
          type: gcepd
          capacity: 50Gi
          gcepd:
            replicationType: regional-pd
        auth:
          default:
            password: "abc123"
          admin:
            password: "abc234"
          ddl:
            password: "abc345"
          dml:
            password: "abc456"
        nodeSelector:
          key: cloud.google.com/gke-nodepool
          value: apigee-data
        backup:
          enabled: true
          serviceAccountPath: "/Users/myhome/.ssh/my-cassandra-backup-sa.json"
          dbStorageBucket: "gs://myname-cassandra-backup"
          schedule: "45 23 * * 6"
          cloudProvider: "GCP"
          
    
        ... 
  6. Em que:
    Propriedade Descrição
    backup:enabled O backup está desativado por padrão. É preciso definir essa propriedade como true.
    backup:serviceAccountPath

    SA_JSON_FILE_PATH

    O caminho no seu sistema de arquivos para o arquivo JSON da conta de serviço que foi salvo quando você executou o comando ./tools/create-service-account.

    Você também pode fornecer um caminho de arquivo relativo. O caminho é relativo ao diretório hybrid-base-directory/hybrid-files.

    backup:dbStorageBucket

    CLOUD_STORAGE_BUCKET_PATH

    O caminho do bucket do Cloud Storage neste formato: gs://BUCKET_NAME. O gs:// é obrigatório.

    backup:cloudProvider

    GCP/HYBRID

    Para um backup do Cloud Storage, defina a propriedade como GCP. Exemplo, cloudProvider: "GCP".

    Para um backup remoto do servidor, defina a propriedade como HYBRID. Exemplo, cloudProvider: "HYBRID".

    backup:schedule

    BACKUP_SCHEDULE_CODE

    O horário de início do backup, especificado na sintaxe padrão de crontab. Padrão: 0 2 * * *

  7. Aplique as alterações de configuração ao novo cluster. Exemplo:
    $APIGEECTL_HOME/apigeectl apply --datastore -f YOUR_OVERRIDES_FILE

    Em que YOUR_OVERRIDES_FILE é o caminho para o arquivo de substituição que você acabou de editar.

  8. Verifique o job de backup. Exemplo:
    kubectl get cronjob -n apigee
      NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      apigee-cassandra-backup   33 * * * *   False     0        <none>          94s