Como programar backups em um servidor remoto

Nesta página, descrevemos como programar backups do Cassandra sem o Cloud Storage. Neste método, os backups são armazenados em um servidor remoto especificado por você, em vez de um bucket do Cloud Storage. A Apigee usa SSH para se comunicar com o servidor remoto.

É necessário programar os backups como jobs cron. Depois que uma programação de backup é aplicada ao cluster híbrido, um job de backup do Kubernetes é executado periodicamente de acordo com a programação no plano de ambiente de execução. O job aciona um script de backup em cada nó do Cassandra no cluster híbrido que coleta todos os dados no nó, cria um arquivo arquivado (compactado) e envia o arquivo ao servidor especificado no arquivo overrides.yaml.

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. Selecionar um servidor de backup: escolha um servidor Linux ou Unix com armazenamento adequado para seus backups e verifique se ele pode ser acessado via SSH pelo plano de ambiente de execução híbrido da Apigee.
  2. Configure o servidor SSH: instale um servidor SSH ou confirme se um servidor existente é seguro.
  3. Criar um par de chaves SSH: gere um par de chaves SSH sem uma senha longa. Por 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]-----+

    Em que: exampleuser@example.com é uma string. Qualquer string após -C no comando ssh-keygen se torna um comentário incluído na chave ssh recém-criada. A string de entrada pode ser qualquer string. Quando você usa um nome de conta no formato exampleuser@example.com, é possível identificar rapidamente qual conta corresponde à chave.

    O comando vai gerar dois arquivos de chaves SSH, um de chave privada (por exemplo, "ssh_key.rsa") e um de chave pública (por exemplo, "ssh_key.pub").

    Salve a chave privada em um local que o plano de ambiente de execução possa acessar.

  4. Adicionar uma conta de usuário: no servidor de backup, crie um usuário chamado "apigee" com um diretório principal em /home/apigee. Verifique se o novo usuário apigee tem um diretório principal em /home.
  5. Configurar o diretório .ssh: no servidor de backup, crie um diretório .ssh em /home/apigee/.ssh. Exemplo:
    cd /home/apigee
          mkdir .ssh
          cd .ssh
          vi authorized_keys
  6. Instalar a chave pública: coloque a chave pública no arquivo authorized_keys no diretório /home/apigee/. O diretório de backup pode ser qualquer diretório, desde que o usuário apigee tenha acesso a ele.Cole o conteúdo do arquivo ssh public key nele.
  7. Verificar o acesso SSH: teste a conexão na máquina local ou em um nó do cluster:
  8. ssh -i PATH_TO_PRIVATE_KEY_FILE 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: "private.key" # path relative to apigee-datastore path
        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.
    backup:keyFile

    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). O caminho precisa ser relativo ao diretório do gráfico apigee-datastore.

    backup:server

    BACKUP_SERVER_IP

    O endereço IP do servidor de backup.

    backup:storageDirectory

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

    backup:cloudProvider

    GCP/HYBRID

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

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

    backup:schedule

    SCHEDULE

    O horário de início do backup, especificado na sintaxe padrão de crontab. As horas estão no fuso horário local do cluster do Kubernetes. Padrão: 0 2 * * *

  2. Aplique a configuração de backup ao escopo de armazenamento do cluster:
    helm upgrade datastore apigee-datastore/ \
      --namespace apigee \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

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

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

Solução de problemas

  1. Teste a conexão de um pod do Cassandra. Verifique se os pods do Cassandra podem se conectar ao servidor de backup usando 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 servidor de backup usando a chave SSH privada ativa o pod e o endereço IP do servidor do Cassandra:
      ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
  2. Se você tiver problemas para acessar o servidor remoto no pod do Cassandra, verifique novamente a configuração do SSH no servidor remoto e verifique se a atualização do repositório de dados foi concluída.
  3. Para verificar se o Cassandra usa a chave privada correta, execute o comando a seguir enquanto estiver conectado ao pod do Cassandra e compare a saída com a chave privada que você criou:
    cat /var/secrets/keys/key