Backup e recuperação sem o Google Cloud

Esta seção discute como configurar o backup e a recuperação do seu banco de dados do Cassandra usando ssh e seu sistema de arquivos em vez de usar o Google Cloud. Consulte também:

O que é o backup e a recuperação do Cassandra sem os serviços do Google Cloud?

O backup sem os serviços do Cloud armazena backups do banco de dados do Cassandra para arquivos compactados no sistema de arquivos do servidor especificado. Os backups ocorrem de acordo com uma programação especificada por você no arquivo de modificações. A conexão com o servidor é feita pelo SSH seguro.

Como configurar backups sem serviços do Cloud:

As etapas a seguir incluem exemplos comuns de como concluir tarefas específicas, como criar um par de chaves SSH. Use os métodos apropriados para a instalação.

O procedimento tem as seguintes partes:

Configurar o servidor e o SSH

  1. Designe um servidor Linux ou Unix para seus backups. Este servidor precisa ser acessível via SSH pelo seu plano de ambiente de execução híbrido da Apigee. Ele deve ter armazenamento suficiente para seus backups.
  2. Configure um servidor SSH ou verifique se há um servidor SSH seguro configurado.
  3. Crie um par de chaves SSH e armazene o arquivo da chave privada em um caminho acessível no plano do ambiente de execução híbrido. Não use uma senha em branco para o par de chaves. Exemplo:
    ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
      Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key
      Enter passphrase (empty for no passphrase):
      Enter same passphrase again:
      Your identification has been saved in ssh_key
      Your public key has been saved in ssh_key.pub
      The key fingerprint is:
      SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com
      The key's randomart image is:
      +---[RSA 4096]----+
      |          +.  ++X|
      |     .   . o.=.*+|
      |    . o . . o==o |
      |   . . . =oo+o...|
      |  .     S +E oo .|
      |   . .   .. . o .|
      |    . . .  . o.. |
      |     .  ...o ++. |
      |      .. .. +o+. |
      +----[SHA256]-----+
  4. Crie uma conta de usuário no servidor de backup com o nome "apigee". Verifique se o novo usuário "apigee" tem um diretório principal em /home.
  5. No servidor de backup, crie um diretório "ssh" no novo diretório /home/apigee.
  6. Copie a chave pública (ssh_key.pub no exemplo anterior) em um arquivo chamado "authorized_keys" no novo diretório /home/apigee/ssh. Exemplo:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. No servidor de backup, crie um diretório de backup dentro do diretório /home/apigee/. O diretório de backup pode ser qualquer diretório, desde que o usuário "apigee" tenha acesso a ele. Exemplo:
    cd /home/apigee
    mkdir cassandra-backup
  8. Teste a conexão. É preciso garantir que os pods do Cassandra possam se conectar ao servidor de backup via SSH:
    1. Faça login no shell do pod do Cassandra. Exemplo:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash

      Em que apigee-cassandra-default-0 é o nome de um pod do cassandra. Altere para o nome do pod a partir do qual você quer se conectar.

    2. Conecte-se por SSH ao seu servidor de backup usando o endereço IP do servidor:
      ssh apigee@backup-server-ip

Definir a programação e o destino do backup

Você define a programação e o destino dos backups no arquivo overrides.yaml.

  1. Adicione os seguintes parâmetros ao seu arquivo overrides.yaml:

    Parâmetros

    cassandra:backup:
         enabled: true
         keyFile: "path-to-private-key-file"
         server: "backup-server-ip"
         storageDirectory: "/home/apigee/backup-directory"
         cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps)
         schedule: "schedule"
    

    Exemplo

    cassandra:backup:
         enabled: true
         keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
         server: "34.56.78.90"
         storageDirectory: "/home/apigee/cassbackup"
         cloudProvider: "HYBRID"
         schedule: "0 2 * * *"
    

    Em que:

    Propriedade Descrição
    backup:enabled O backup está desativado por padrão. É preciso definir essa propriedade como true
    path-to-private-key-file O caminho no sistema de arquivos local para o arquivo de chave privada SSH (chamado ssh_key na etapa em que você criou o par de chaves SSH).
    backup-server-ip O endereço IP do servidor de backup.
    backup-directory O nome do diretório de backup no servidor de backup. Precisa ser um diretório dentro de home/apigee (o diretório de backup se chama cassandra_backup na etapa em que você criou o diretório de backup).
    HYBRID A propriedade cloudProvider: "HYBRID" é obrigatória.
    schedule O horário de início do backup, especificado na sintaxe padrão de crontab. Padrão: 0 2 * * *

    Observação: evite programar um backup que inicie pouco tempo depois de aplicar a configuração de backup ao cluster. Quando você aplica a configuração de backup, o Kubernetes recria os nós do Cassandra. Se o backup começar antes da reinicialização dos nós (possivelmente vários minutos), ele falhará.

  2. Use apigeectl para aplicar a configuração de backup ao escopo de armazenamento do cluster:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file

    Em que your-overrides-file é o caminho para o arquivo de substituição que você acabou de editar.

Configurar restauração

A restauração usa os dados do arquivo de backup com o carimbo de data/hora especificado e os restaura em um novo cluster do Cassandra com o mesmo número de pods. O novo cluster precisa ter um namespace diferente do cluster do plano de ambiente de execução.

Para restaurar backups do Cassandra:

  1. Crie um novo cluster do Kubernetes com um novo namespace. Não é possível usar o mesmo cluster/namespace que você utilizou para a instalação híbrida original.
  2. No diretório raiz da instalação híbrida, crie um novo arquivo overrides-restore.yaml.
  3. Copie a configuração completa do Cassandra do arquivo overrides.yaml original para o novo.
  4. Adicione os seguintes parâmetros ao seu arquivo overrides-restore.yaml:

    Parâmetros

    namespace: restore-namespace
    
    cassandra:
      restore:
         enabled: true
         keyFile: "path-to-private-key-file"
         server: "backup-server-ip"
         storageDirectory: "/home/apigee/backup-directory"
         cloudProvider: "HYBRID"  # required verbatim "HYBRID" (all caps)
         snapshotTimestamp: "backup-to-restore"
    

    Exemplo

    namespace: cassandra-restore
    
    cassandra:
      restore:
         enabled: true
         keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key"
         server: "34.56.78.90"
         storageDirectory: "/home/apigee/cassbackup"
         cloudProvider: "HYBRID"
         snapshotTimestamp: "20201001183903"
    

    Em que:

    Propriedade Descrição
    restore-namespace O nome do novo namespace que você usará para o novo cluster do Cassandra. Não use o mesmo namespace usado no cluster original.
    restore:enabled A restauração é desativada por padrão. É preciso definir essa propriedade como true
    path-to-private-key-file O caminho no sistema de arquivos local para o arquivo de chave privada SSH (chamado ssh_key na etapa em que você criou o par de chaves SSH).
    backup-server-ip O endereço IP do servidor de backup.
    backup-directory O nome do diretório de backup no servidor de backup. Precisa ser um diretório dentro de home/apigee (o diretório de backup se chama cassandra_backup na etapa em que você criou o diretório de backup).
    HYBRID A propriedade cloudProvider: "HYBRID" é obrigatória.
    backup-to-restore O backup específico que você quer restaurar, especificado na sintaxe crontab padrão (não é permitido usar caracteres curinga).
  5. Use apigeectl para aplicar a configuração de backup ao escopo de armazenamento do cluster:
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file

    Em que your-overrides-restore-file é o caminho para o arquivo overrides-restore.yaml que você acabou de editar.