Cópia de segurança e recuperação sem o Google Cloud

Esta secção aborda a configuração da cópia de segurança e da recuperação da sua base de dados Cassandra através do ssh e do seu sistema de ficheiros, em vez de usar o Google Cloud. Veja também:

O que é a cópia de segurança e a recuperação do Cassandra sem serviços na nuvem

A cópia de segurança sem serviços na nuvem armazena cópias de segurança da sua base de dados Cassandra em ficheiros comprimidos no sistema de ficheiros de um servidor que especificar. As cópias de segurança ocorrem de acordo com uma programação que especifica no ficheiro de substituições. A ligação ao servidor é feita através de SSH seguro.

Configurar cópias de segurança sem serviços na nuvem

Os passos seguintes incluem exemplos comuns para concluir tarefas específicas, como criar um par de chaves SSH. Use os métodos adequados à sua instalação.

O procedimento tem as seguintes partes:

Configure o servidor e o SSH

  1. Designe um servidor Linux ou Unix para as suas cópias de segurança. Este servidor tem de estar acessível através de SSH a partir do plano de tempo de execução híbrido do Apigee. Tem de ter armazenamento suficiente para as suas cópias de segurança.
  2. Configure um servidor SSH no servidor ou certifique-se de que tem um servidor SSH seguro configurado.
  3. Crie um par de chaves SSH e armazene o ficheiro de chave privada num caminho acessível a partir do plano de tempo de execução híbrido. Tem de usar uma palavra-passe em branco para o seu par de chaves, caso contrário, a cópia de segurança falha. 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]-----+
  4. Crie uma conta de utilizador no servidor de cópias de segurança com o nome apigee. Certifique-se de que o novo utilizador apigee tem um diretório pessoal em /home.
  5. No servidor de cópia de segurança, crie um diretório ssh no novo diretório /home/apigee.
  6. Copie a chave pública (ssh_key.pub no exemplo anterior) para um ficheiro com o nome authorized_keys no novo diretório /home/apigee/ssh. Por exemplo:
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. No servidor de cópias de segurança, crie um diretório de cópias de segurança no diretório /home/apigee/. O diretório de cópia de segurança pode ser qualquer diretório, desde que o utilizador apigee tenha acesso ao mesmo. Por exemplo:
    cd /home/apigee
    mkdir cassandra-backup
  8. Teste a ligação. Tem de garantir que os seus pods do Cassandra se podem ligar ao servidor de cópia de segurança através de SSH:
    1. Inicie sessão na shell do seu pod do Cassandra. Por 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 quer estabelecer ligação.

    2. Estabeleça ligação por SSH ao servidor de cópia de segurança através do endereço IP do servidor:
      ssh apigee@BACKUP_SERVER_IP

Defina a programação e o destino da cópia de segurança

Define o horário e o destino das cópias de segurança no ficheiro overrides.yaml.

  1. Adicione os seguintes parâmetros ao ficheiro 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 * * *"

    Onde:

    Propriedade Descrição
    backup:enabled A cópia de segurança está desativada por predefinição. Tem de definir esta propriedade como true.
    backup:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    O caminho no seu sistema de ficheiros local para o ficheiro de chave privada de SSH (denominado ssh_key no passo em que criou o par de chaves SSH).

    backup:server

    BACKUP_SERVER_IP

    O endereço IP do seu servidor de reserva.

    backup:storageDirectory

    BACKUP_DIRECTORY

    O nome do diretório de cópia de segurança no servidor de cópia de segurança. Tem de ser um diretório em home/apigee (o diretório de cópia de segurança tem o nome cassandra_backup no passo em que criou o diretório de cópia de segurança).

    backup:cloudProvider

    HYBRID

    A propriedade cloudProvider: "HYBRID" é obrigatória.

    backup:schedule

    SCHEDULE

    A hora em que a cópia de segurança é iniciada, especificada na sintaxe crontab padrão. Predefinição: 0 2 * * *

  2. Use apigeectl para aplicar a configuração da cópia de segurança ao âmbito de armazenamento do seu cluster:
    $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE

    Em que YOUR_OVERRIDES_FILE é o caminho para o ficheiro de substituições que acabou de editar.

Configure a restauro

O restauro transfere os dados da localização da cópia de segurança e restaura-os num novo cluster do Cassandra com o mesmo número de nós. Não são retirados dados do cluster do Cassandra antigo.

As instruções de restauro abaixo destinam-se a implementações de região única que não usam o Google Cloud Storage para cópias de segurança. Para outras implementações, consulte o seguinte:

Para restaurar cópias de segurança do Cassandra:

  1. Crie um novo espaço de nomes no cluster do Kubernetes existente que vai ser usado para restaurar a implementação do tempo de execução híbrido. Não use o nome do espaço de nomes original para o novo espaço de nomes. Não use o espaço de nomes antigo para o restauro.
  2. No diretório de instalação híbrida raiz, crie um novo ficheiro overrides-restore.yaml.
  3. Copie a configuração completa do Cassandra do ficheiro overrides.yaml original para o novo ficheiro overrides-restore.yaml. Por exemplo:
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. Adicione um elemento de espaço de nomes ao novo ficheiro overrides-restore.yaml.

    Parâmetros

    namespace: YOUR_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: "TIMESTAMP"
      ...

    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"
  5. Onde:

    Propriedade Descrição
    namespace

    YOUR_RESTORE_NAMESPACE

    O nome do novo espaço de nomes que criou no passo 1 para o novo cluster do Cassandra. Não use o mesmo espaço de nomes que usou para o cluster original.

    restore:enabled O restauro está desativado por predefinição. Tem de definir esta propriedade como true.
    restore:keyFile

    PATH_TO_PRIVATE_KEY_FILE

    O caminho no seu sistema de ficheiros local para o ficheiro de chave privada de SSH (denominado ssh_key no passo em que criou o par de chaves SSH).

    restore:server

    BACKUP_SERVER_IP

    O endereço IP do seu servidor de reserva.

    restore:storageDirectory

    BACKUP_DIRECTORY

    O nome do diretório de cópia de segurança no servidor de cópia de segurança. Tem de ser um diretório em home/apigee (o diretório de cópia de segurança chama-se cassandra_backup no passo em que criou o diretório de cópia de segurança).

    restore:cloudProvider

    HYBRID

    A propriedade cloudProvider: "HYBRID" é obrigatória.

    restore:snapshotTimestamp

    TIMESTAMP

    A data/hora do instantâneo da cópia de segurança a restaurar. Para verificar que datas/horas podem ser usadas, aceda ao dbStorageBucket e consulte os ficheiros presentes no contentor. Cada nome de ficheiro contém um valor de carimbo de data/hora, como o seguinte:

    backup_20210203213003_apigee-cassandra-default-0.tgz

    Onde 20210203213003 é o valor snapshotTimestamp que usaria se quisesse restaurar as cópias de segurança criadas nesse momento.

  6. Altere a etiqueta app em todos os nós do Cassandra no espaço de nomes antigo executando o seguinte comando:
    kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
    
  7. Crie uma nova implementação de tempo de execução híbrido. Esta ação cria um novo cluster do Cassandra e começa a restaurar os dados da cópia de segurança no cluster:
    ./apigeectl init  -f ../overrides-restore.yaml
    
    ./apigeectl apply  -f ../overrides-restore.yaml
    
  8. Assim que o restauro estiver concluído, o tráfego tem de ser comutado para usar o cluster do Cassandra no novo espaço de nomes. Execute os seguintes comandos para mudar o tráfego:

    kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
    
    kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}'
    
  9. Assim que a mudança de tráfego estiver concluída, pode reconfigurar as cópias de segurança no cluster restaurado removendo a configuração restore e adicionando a configuração backup ao ficheiro overrides-restore.yaml. Substitua YOUR_RESTORE_NAMESPACE pelo novo nome do espaço de nomes criado no passo 1.
    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      backup:
        enabled: true
        serviceAccountPath: SA_JSON_FILE_PATH
        dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH
        schedule: BACKUP_SCHEDULE_CODE
      ...

    Em seguida, aplique a configuração backup com o seguinte comando:

    ./apigeectl apply  -f ../overrides-restore.yaml