Partilhar via


Como implementar a recuperação após desastre através do serviço de cópia de segurança e restauro na Gestão de API do Azure

APLICA-SE A: Desenvolvedor | Básico | Padrão | Avançado

Ao publicar e gerenciar suas APIs por meio do Gerenciamento de API do Azure, você está aproveitando a tolerância a falhas e os recursos de infraestrutura que, de outra forma, projetaria, implementaria e gerenciaria manualmente. A plataforma Azure atenua uma grande fração de falhas potenciais a uma fração do custo.

Para se recuperar de problemas de disponibilidade que afetam seu serviço de Gerenciamento de API, esteja pronto para reconstituir seu serviço em outra região a qualquer momento. Dependendo do seu objetivo de tempo de recuperação, convém manter um serviço em espera em uma ou mais regiões. Você também pode tentar manter sua configuração e conteúdo sincronizados com o serviço ativo de acordo com seu objetivo de ponto de recuperação. Os recursos de backup e restauração de gerenciamento de API fornecem os blocos de construção necessários para implementar a estratégia de recuperação de desastres.

As operações de backup e restauração também podem ser usadas para replicar a configuração do serviço de Gerenciamento de API entre ambientes operacionais, por exemplo, desenvolvimento e preparação. Tenha cuidado que os dados de tempo de execução, como usuários e assinaturas, também serão copiados, o que nem sempre pode ser desejável.

Este artigo mostra como automatizar as operações de backup e restauração de sua instância de Gerenciamento de API usando uma conta de armazenamento externo. As etapas mostradas aqui usam os cmdlets Backup-AzApiManagement e Restore-AzApiManagement do Azure PowerShell ou o API Management Service - Backup and API Management Service - Restore REST APIs.

Aviso

Cada cópia de segurança expira após 30 dias. Se você tentar restaurar um backup após o período de expiração de 30 dias ter expirado, a restauração falhará com uma Cannot restore: backup expired mensagem.

Importante

A operação de restauração não altera a configuração personalizada do nome do host do serviço de destino. Recomendamos usar o mesmo nome de host personalizado e certificado TLS para serviços ativos e em espera, para que, após a conclusão da operação de restauração, o tráfego possa ser redirecionado para a instância em espera por uma simples alteração CNAME DNS.

Nota

Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, consulte Migrar o Azure PowerShell do AzureRM para o Az.

Importante

As alterações na infraestrutura do serviço de Gerenciamento de API (como configuração de domínios personalizados, adição de certificados de CA, dimensionamento, configuração de rede virtual, alterações de zona de disponibilidade e adições de região) podem levar 15 minutos ou mais para serem concluídas, dependendo da camada de serviço e do tamanho da implantação. Espere tempos mais longos para uma instância com um número maior de unidades de escala ou configuração de várias regiões. As alterações contínuas no Gerenciamento de API são executadas cuidadosamente para preservar a capacidade e a disponibilidade.

Enquanto o serviço está sendo atualizado, outras alterações na infraestrutura do serviço não podem ser feitas. No entanto, você pode definir APIs, produtos, políticas e configurações de usuário. O serviço não enfrentará tempo de inatividade do gateway e o Gerenciamento de API continuará a atender solicitações de API sem interrupção (exceto na camada de desenvolvedor).

Pré-requisitos

Configurar o acesso à conta de armazenamento

Ao executar uma operação de backup ou restauração, você precisa configurar o acesso à conta de armazenamento. O Gerenciamento de API dá suporte a dois mecanismos de acesso ao armazenamento: uma chave de acesso do Armazenamento do Azure ou uma identidade gerenciada do Gerenciamento de API.

Configurar chave de acesso à conta de armazenamento

O Azure gera duas chaves de acesso de conta de armazenamento de 512 bits para cada conta de armazenamento. Essas chaves podem ser usadas para autorizar o acesso aos dados em sua conta de armazenamento por meio da autorização de Chave Compartilhada. Para visualizar, recuperar e gerenciar as chaves, consulte Gerenciar chaves de acesso da conta de armazenamento.

Configurar identidade gerenciada do Gerenciamento de API

Nota

O uso de uma identidade gerenciada pelo Gerenciamento de API para operações de armazenamento durante o backup e a restauração é suportado na versão 2021-04-01-preview da API REST de Gerenciamento de API ou posterior.

  1. Habilite uma identidade gerenciada atribuída pelo sistema ou pelo usuário para o Gerenciamento de API em sua instância de Gerenciamento de API.

    • Caso atives uma identidade gerida atribuída pelo usuário, anota a ID do Cliente da identidade.
    • Caso faça backup e restore para diferentes instâncias de Gestão de API, habilite uma identidade gerida nas instâncias de origem e de destino.
  2. Atribua à identidade a função Colaborador de Dados de Blob de Armazenamento, com escopo definido para a conta de armazenamento usada para backup e restauração. Para atribuir a função, use o portal do Azure ou outras ferramentas do Azure.

Fazer backup de um serviço de Gerenciamento de API

Inicie sessão com o Azure PowerShell.

Nos seguintes exemplos:

  • Uma instância de Gerenciamento de API chamada myapim está no grupo de recursos apimresourcegroup.
  • Uma conta de armazenamento chamada backupstorageaccount está no grupo de recursos storageresourcegroup. A conta de armazenamento tem um contêiner chamado backups.
  • Um blob de backup será criado com o nome ContosoBackup.apimbackup.

Definir variáveis no PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Acesso usando chave de acesso de armazenamento

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName -TargetBlobName $blobName

Acesso usando identidade gerenciada

Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.

Acesso usando identidade gerenciada atribuída ao sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Acesso usando identidade gerenciada atribuída pelo usuário

Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -TargetContainerName $containerName `
    -TargetBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

O backup é uma operação de longa execução que pode levar vários minutos para ser concluída. Durante este tempo, o gateway de API continua a processar requisições, mas o estado do serviço está em atualização.

Restaurar um serviço de Gerenciamento de API

Atenção

Evite alterações na configuração do serviço (por exemplo, APIs, políticas, aparência do portal do desenvolvedor) enquanto a operação de restauração estiver em andamento. As alterações podem ser substituídas.

Nos exemplos a seguir,

  • Uma instância de Gerenciamento de API chamada myapim é restaurada a partir do blob de backup chamado ContosoBackup.apimbackup na conta de armazenamento backupstorageaccount.
  • O blob de backup está em um contêiner chamado backups.

Definir variáveis no PowerShell:

$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"

Acesso usando chave de acesso de armazenamento

$storageKey = (Get-AzStorageAccountKey -ResourceGroupName $storageResourceGroup -StorageAccountName $storageAccountName)[0].Value

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageKey

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName -SourceBlobName $blobName

Acesso usando identidade gerenciada

Para configurar uma identidade gerenciada em sua instância de Gerenciamento de API para acessar a conta de armazenamento, consulte Configurar uma identidade gerenciada, anteriormente neste artigo.

Acesso usando identidade gerenciada atribuída ao sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"

Acesso usando identidade gerenciada atribuída pelo usuário

Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está no grupo de recursos identityresourcegroup.

$identityName = "myidentity";
$identityResourceGroup = "identityresourcegroup";

$identityId = (Get-AzUserAssignedIdentity -Name $identityName -ResourceGroupName $identityResourceGroup).ClientId

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
    -StorageContext $storageContext -SourceContainerName $containerName `
    -SourceBlobName $blobName -AccessType "UserAssignedManagedIdentity" ` -identityClientId $identityid

Restrições

  • A restauração de um backup é garantida apenas por 30 dias desde o momento de sua criação.
  • Enquanto o backup estiver em andamento, evite alterações de gerenciamento no serviço , como upgrade ou downgrade de nível de preço, alteração no nome de domínio e muito mais.
  • As alterações feitas na configuração do serviço (por exemplo, APIs, políticas e aparência do portal do desenvolvedor) enquanto a operação de backup está em processo podem ser excluídas do backup e serão perdidas.
  • O backup não captura dados de log pré-agregados usados em relatórios mostrados na janela do Google Analytics no portal do Azure.
  • O CORS (Cross-Origin Resource Sharing)não deve ser habilitado no serviço Blob na conta de armazenamento.
  • O nível de preço do serviço que está sendo restaurado deve corresponder ao nível de preço do serviço de backup que está sendo restaurado.

Restrições de rede de armazenamento

Se a firewall estiver ativada na conta de armazenamento, recomenda-se usar a identidade gerida atribuída pelo sistema da instância de Gestão de API para aceder à conta. Certifique-se de que a conta de armazenamento conceda acesso a serviços confiáveis do Azure.

O que não está sujeito a cópia de segurança

A frequência com que você executa backups de serviço afeta seu objetivo de ponto de recuperação. Para minimizá-lo, recomendamos implementar backups regulares e executar backups sob demanda depois de fazer alterações no serviço de Gerenciamento de API.

Confira os seguintes recursos relacionados para o processo de backup/restauração: