É possível fazer backup e restaurar seus dados híbridos usando snapshots da interface CSI (Container Storage Interface). O backup da CSI aciona snapshots de disco feitos pelo sistema de armazenamento subjacente usando o driver CSI fornecido. O backup de CSI não precisa de um bucket do Google Cloud Storage ou de um servidor remoto para armazenar dados de backup.
O backup de CSI é recomendado para instâncias híbridas hospedadas no Google Cloud, na AWS ou no Azure.
Esta página descreve as etapas para usar o backup e a restauração do CSI híbrido. Para uma visão geral do backup e da restauração híbridos, consulte a visão geral de backup e restauração do Cassandra.
Limitações de backup e restauração
Esteja ciente destas limitações ao usar o backup e a restauração do CSI:
- O driver CSI usado pela classe de armazenamento configurada precisa ser compatível com snapshots da CSI. Consulte esta lista de drivers CSI do Kubernetes (em inglês) para informações sobre o driver.
- Nem todas as plataformas são compatíveis. Somente as plataformas Google Cloud, AWS e Azure são compatíveis.
- O ContainerShift da OpenShift não oferece suporte devido às limitações de snapshot de volume.
- Apenas as plataformas de nuvem são compatíveis. Não há suporte para plataformas no local.
- Os dados de backup de CSI e os dados híbridos sem CIS são incompatíveis. Os backups sem CSI não podem ser usados com a restauração de CSI, e os backups de CSI não podem ser usados com a restauração sem CSI.
- A instalação e funcionalidade do driver CSI é de responsabilidade do fornecedor do driver CSI.
- Os usuários são responsáveis por garantir que os recursos de cluster adequados estejam disponíveis para o provisionamento de snapshots da CSI.
- Os usuários são responsáveis por remover dados de snapshots antigos.
Configurar backups de CSI
Para programar backups híbridos usando o CSI, siga estas etapas:
- Se você não tiver configurado o backup híbrido:
- Execute o comando
create-service-account
a seguir para criar uma conta de serviço (SA) do Google Cloud com o papel padrãoroles/storage.objectAdmin
. Esse papel da SA permite gravar dados de backup no Cloud Storage. E Execute o seguinte comando no diretório adequado para sua ferramenta de gerenciamento:- Gráficos do Helm:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/
apigeectl
: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.
- Gráficos do Helm:
- 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.
- Execute o comando
- Abra o arquivo
overrides.yaml
. Defina os parâmetros a seguir, conforme mostrado em Exemplos de modificação de arquivos.- Defina os parâmetros gerais mostrados abaixo no bloco
backup
. Se você já tiver definido esses parâmetros para a solução de backup híbrida sem CIS, será possível usar os mesmos parâmetros para seus snapshots de CSI. Consulte a tabela de referência de propriedades de backup para mais informações sobre cada valor.
Para obter
backup
:- enabled: defina como
true
para ativar os backups programados. - pullPolicy na imagem: defina como
Always
. - schedule: forneça uma programação de expressão cron.
- enabled: defina como
- Defina estes parâmetros para o backup específico da CSI:
- Valores do grupo de armazenamento do Cassandra: a classe de armazenamento do Cassandra configurada precisa ser compatível com snapshots da CSI
para que o backup e a restauração da CSI funcionem. Para verificar se uma classe de armazenamento é compatível com snapshots da CSI, execute
o seguinte comando para ver as classes de armazenamento disponíveis:
Observe a saída de "Provisionador" em cada classe de armazenamento. Os provisionadores que usam CSI geralmente têm um ".csi". ao nome, como "pd.csi.storage.gke.io". Procure o nome do provisionador nesta lista de drivers CSI do Kubernetes. Se a coluna "Outros recursos" do provisionador contiver a palavra "SNAPSHOT", a classe de armazenamento que usa o provisionador será compatível com snapshots da CSI.kubectl get sc
Adicione esses parâmetros ao grupo de armazenamento. Os dois valores são obrigatórios.
- storageclass: um nome de classe de armazenamento com snapshot instantâneo da CSI.
- capacity: a capacidade do disco.
- Tipo de provedor do Cloud:
Depois que o recurso de instantâneo CSI for verificado, modifique o arquivo de substituição para usar o backup e a restauração do CSI:
- cloudProvider: defina
cloudProvider
embackup
erestore
comoCSI
.
- cloudProvider: defina
- Valores do grupo de armazenamento do Cassandra: a classe de armazenamento do Cassandra configurada precisa ser compatível com snapshots da CSI
para que o backup e a restauração da CSI funcionem. Para verificar se uma classe de armazenamento é compatível com snapshots da CSI, execute
o seguinte comando para ver as classes de armazenamento disponíveis:
- Defina os parâmetros gerais mostrados abaixo no bloco
Exemplo de configuração de backup
Esta seção mostra as partes relacionadas a backup de um arquivooverrides.yaml
de exemplo.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always cloudProvider: "CSI" schedule: "0 * * 11 *"
Iniciar um backup manual
Os backups de CSI são gerados automaticamente de acordo com a programação do cron definida no arquivo overrides.yaml
.
Para iniciar um backup CSI manual, use este comando:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME
BACKUP_POD_NAME
é o nome do pod de backup que será criado.
Verificar backups
Uma maneira de verificar se um backup foi criado com sucesso é verificar os snapshots de volume no cluster do Kubernetes usando este comando:
kubectl get volumesnapshot -n APIGEE_NAMESPACE
A saída mostra a lista atual de snapshots no cluster. O processo de backup do CSI cria um snapshot de cada disco do Cassandra. O número de snapshots gerados precisa corresponder ao número total de pods do cassandra no cluster.
Restaurar um backup
Use esse processo para restaurar um backup CSI gerado anteriormente. Para informações gerais sobre como restaurar backups e uma visão geral do processo, consulte a página de visão geral de restauração.
Para iniciar a restauração de um backup de CSI, siga as instruções para a
restauração híbrida de região única sem CSI,
mas use esses valores no bloco restore
no overrides.yaml
.
Consulte a tabela de referência de propriedades de backup
para ver mais informações sobre cada valor e a
configuração de restauração de exemplo para ver um exemplo.
- enabled: defina como
true
para ativar a restauração do backup referenciado com o carimbo de data/horasnapshotTimestamp
. - snapshotTimestamp: mostra o carimbo de data/hora de um backup anterior da CSI.
- pullPolicy na imagem: defina como
Always
.
Para encontrar o valor snapshotTimestamp
a ser restaurado, execute este comando para receber a
lista de snapshots disponíveis:
kubectl get volumesnapshot -n APIGEE_NAMESPACE
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907
.
Exemplo de configuração de restauração
Esta seção mostra as partes relacionadas à restauração de um arquivooverrides.yaml
de exemplo.
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" cloudProvider: "CSI" image: pullPolicy: Always
Migrar para backup e restauração de CSI
Se você não tiver usado o backup e a restauração híbridas, siga as instruções em Configurar backups de CSI para criar um novo backup de CSI sem as etapas desta seção. Estas etapas orientam você na migração da solução de backup e restauração sem CSI para backups de CSI.
- Gere um novo backup usando o método de backup sem CSI configurado atualmente.
- Mude a configuração de backup no arquivo
overrides.yaml
híbrido para usar as modificações de backup de CSI, conforme mostrado na configuração de backup de exemplo. - Aplique as alterações no arquivo
overrides.yaml
:helm upgrade datastore apigee-datastore/ \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
- Verifique o job de backup:
kubectl get cronjob -n APIGEE_NAMESPACE
- Depois que um job de backup for concluído, verifique se os snapshots foram criados. O número de
snapshots gerados precisa ser equivalente ao número de nós do Cassandra na instância híbrida.
kubectl get volumesnapshot -n APIGEE_NAMESPACE