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 de 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 os serviços do Google Cloud?
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
- Defina o horário e o destino da cópia de segurança
- Configurar para recuperação
Configure o servidor e o SSH
- 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 do Apigee Hybrid. Tem de ter armazenamento suficiente para as suas cópias de segurança.
- Configure um servidor SSH no servidor ou certifique-se de que tem um servidor SSH seguro configurado.
- 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. Não use uma palavra-passe em branco para o seu par de chaves. 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]-----+ - Crie uma conta de utilizador no servidor de cópia de segurança com o nome "
apigee
". Certifique-se de que o novo utilizador "apigee
" tem um diretório base em/home
. - No servidor de cópia de segurança, crie um diretório "
ssh
" no novo diretório/home/apigee
. - Copie a chave pública (
ssh_key.pub
no exemplo anterior) para um ficheiro denominado "authorized_keys
" no novo diretório/home/apigee/ssh
. Por exemplo:cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- 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
- Teste a ligação. Tem de se certificar de que os seus pods do Cassandra conseguem estabelecer ligação ao servidor de cópia de segurança através de SSH:
- 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.
- 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
- Inicie sessão na shell do seu pod do Cassandra. Por exemplo:
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
.
- 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
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-ip O endereço IP do seu servidor de reserva. 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 nomecassandra_backup
no passo em que criou o diretório de cópia de segurança).HYBRID
A propriedade cloudProvider: "HYBRID"
é obrigatória.schedule A hora em que a cópia de segurança começa, especificada na sintaxe crontab padrão. Predefinição: 0 2 * * *
Nota: evite agendar uma cópia de segurança que comece pouco tempo depois de aplicar a configuração da cópia de segurança ao cluster. Quando aplica a configuração da cópia de segurança, o Kubernetes recria os nós do Cassandra. Se a cópia de segurança for iniciada antes do reinício dos nós (possivelmente, vários minutos), a cópia de segurança falha.
- 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
A restauro usa os dados do ficheiro de cópia de segurança com a data/hora especificada e restaura-os num novo cluster do Cassandra com o mesmo número de pods. O novo cluster tem de ter um espaço de nomes diferente do cluster do plano de tempo de execução.
Para restaurar cópias de segurança do Cassandra:
- Crie um novo cluster do Kubernetes com um novo espaço de nomes. Não pode usar o mesmo cluster/espaço de nomes que usou para a instalação híbrida original.
- No diretório de instalação híbrida raiz, crie um novo ficheiro
overrides-restore.yaml
. - Copie a configuração completa do Cassandra do ficheiro
overrides.yaml
original para o novo. - Adicione os seguintes parâmetros ao ficheiro
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"
Onde:
Propriedade Descrição restore-namespace O nome do novo espaço de nomes 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
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-ip O endereço IP do seu servidor de reserva. 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 nomecassandra_backup
no passo em que criou o diretório de cópia de segurança).HYBRID
A propriedade cloudProvider: "HYBRID"
é obrigatória.backup-to-restore A cópia de segurança específica que quer restaurar, especificada na sintaxe crontab padrão (não são permitidos carateres universais). - 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-restore-file
Onde your-overrides-restore-file é o caminho para o ficheiro
overrides-restore.yaml
que acabou de editar.