Como implementar a recuperação de desastre usando o backup de serviço e restaurar no Gerenciamento de API no Azure
APLICA-SE A: Desenvolvedor | Básico | Standard | Premium
Ao publicar e gerenciar suas APIs através do Gerenciamento de API do Azure, você está tirando proveito de muitos recursos de tolerância e infraestrutura que você precisaria criar, implementar e gerenciar manualmente. A plataforma Azure atenua grande parte das falhas potenciais a uma fração do custo.
Para se recuperar de problemas de disponibilidade que afetam o seu serviço de Gerenciamento de API, esteja pronto para reconstituir o seu serviço em outra região a qualquer momento. Dependendo do objetivo do tempo de recuperação, talvez você queira manter um serviço em espera em uma ou mais regiões. Também é possível tentar manter a configuração e o conteúdo em sincronia com o serviço ativo de acordo com o objetivo do ponto de recuperação. As funcionalidades de backup e de restauração de gerenciamento de API fornecem os blocos de construção necessários para implementar uma estratégia de recuperação de desastre.
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 preparo. Lembre-se de que os dados de runtime, como usuários e assinaturas, também serão copiados, o que talvez nem sempre seja desejável.
Este artigo mostra como automatizar operações de backup e restauração da sua instância de Gerenciamento de API usando uma conta de armazenamento externa. As etapas mostradas aqui usam os cmdlets do Azure PowerShell Backup-AzApiManagement e Restore-AzApiManagement ou as APIs REST Serviço de Gerenciamento de API – Backup e Serviço de Gerenciamento de API – Restaurar.
Aviso
Cada backup expira após 30 dias. Se você tentar restaurar um backup após o período de expiração de 30 dias, a restauração falhará com uma mensagem Cannot restore: backup expired
.
Importante
A operação de restauração não altera a configuração de nome de host personalizado do serviço de destino. É recomendável usar o mesmo nome de host e TLS personalizados para serviços ativos e em espera, de modo 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 alteração simples de CNAME de DNS.
Observação
Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.
Pré-requisitos
Uma instância do Serviço de Gerenciamento de API. Se você não tiver uma, confira Criar uma instância de serviço de Gerenciamento de API.
Uma conta de armazenamento do Azure. Se você não tiver uma, confira Criar uma conta de armazenamento.
- Crie um contêiner para armazenar os dados de backup na conta de armazenamento.
A versão mais recente do Azure PowerShell, se você planeja usar cmdlets do Azure PowerShell. Instale o Azure PowerShell, caso ainda não tenha feito isso.
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 de armazenamento: uma chave de acesso do Armazenamento do Microsoft Azure ou uma identidade gerenciada do Gerenciamento de API.
Configurar a chave de acesso da conta de armazenamento
O Azure gera duas chaves de acesso à conta de armazenamento de 512 bits para cada conta de armazenamento. Essas chaves podem ser usadas para autorizar o acesso à sua conta de armazenamento por meio de autorização de Chave Compartilhada. Para exibir, recuperar e gerenciar as chaves, confira Gerenciar chaves de acesso da conta de armazenamento.
Configurar a identidade gerenciada do Gerenciamento de API
Observação
Usar uma identidade gerenciada do Gerenciamento de API para operações de armazenamento durante o backup e a restauração tem suporte na API REST do Gerenciamento de API na versão 2021-04-01-preview
ou superiores.
Habilite uma identidade gerenciada atribuída pelo sistema ou pelo usuário para Gerenciamento de API em sua instância do API Management.
- Se você habilitar uma identidade gerenciada atribuída ao usuário, anote a ID do Cliente da identidade.
- Se você for fazer backup e restaurar para diferentes instâncias do Gerenciamento de API, habilite uma identidade gerenciada nas instâncias de origem e destino.
Atribua à identidade a função Colaborador de dados de blob de armazenamento , com escopo 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
Entrar 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.
Defina variáveis no PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acesso usando a 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 a identidade gerenciada
Para configurar uma identidade gerenciada na sua instância de Gerenciamento de API para acessar a conta de armazenamento, confira Configurar uma identidade gerenciada, anteriormente neste artigo.
Acesso usando a identidade gerenciada atribuída pelo sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acesso usando a identidade gerenciada atribuída pelo usuário
Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está em um 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 esse tempo, o gateway de API continua a lidar com solicitações, mas o estado do serviço é Atualizar.
Restaurar um serviço de Gerenciamento de API
Cuidado
Evite alterações na configuração do serviço (por exemplo, APIs, políticas, aparência do portal do desenvolvedor) enquanto uma operação de restauração está em andamento. As alterações podem ser substituídas.
Nos seguintes exemplos,
- Uma instância de Gerenciamento de API chamada myapim é restaurada do blob de backup chamado ContosoBackup.apimbackup na conta de armazenamento backupstorageaccount.
- O blob de backup está em um contêiner chamado backups.
Defina variáveis no PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acesso usando a 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 a identidade gerenciada
Para configurar uma identidade gerenciada na sua instância de Gerenciamento de API para acessar a conta de armazenamento, confira Configurar uma identidade gerenciada, anteriormente neste artigo.
Acesso usando a identidade gerenciada atribuída pelo sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acesso usando a identidade gerenciada atribuída pelo usuário
Neste exemplo, uma identidade gerenciada atribuída pelo usuário chamada myidentity está em um 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
A restauração é uma operação de execução longa que pode levar até 45 minutos ou mais para ser concluída.
Restrições
- A restauração de um backup é garantida somente por 30 dias desde o momento de sua criação.
- Enquanto o backup estiver em andamento, evite fazer alterações de gerenciamento no serviço, como upgrade do tipo de preço ou fazer downgrade, alterar o nome de domínio e outros.
- As alterações feitas na configuração do serviço (por exemplo, APIs, políticas, aparência do portal do desenvolvedor) enquanto uma operação de backup está em andamento podem não ser incluídas no backup e, portanto, serão perdidas.
- O backup não captura dados de log previamente agregados usados em relatórios mostrados na janela Análise no portal do Azure.
- O CORS (compartilhamento de recursos entre origem)não deve ser habilitado no serviço de blob na conta de armazenamento.
- O tipo de preço do serviço que está sendo restaurado precisa corresponder ao tipo de preço do serviço copiado em backup que está sendo restaurado.
Restrições de rede de armazenamento
Se a conta de armazenamento estiver habilitada para firewall, é recomendável usar a identidade gerenciada atribuída pelo sistema da instância de Gerenciamento de API para acessar a conta. Verifique se a conta de armazenamento concede acesso a serviços confiáveis do Azure.
O que não é submetido a backup
- Os Dados de uso utilizados para a criação de relatórios de análise não estão incluídos no backup. Use o API REST de Gerenciamento de API do Azure para recuperar periodicamente os relatórios analíticos por questões de segurança.
- Certificados TLS/SSL de domínio personalizado.
- Certificados de autoridade de certificação personalizados, que incluem certificados intermediários ou raiz carregados pelo cliente.
- Configurações de integração de Rede Virtual.
- Configuração de identidade gerenciada.
- Configuração de diagnóstico do Azure Monitor.
- Configurações de Protocolos e criptografia.
- Conteúdo do portal do desenvolvedor.
A frequência com que você executa backups de serviço afeta o seu objetivo de ponto de recuperação. Para minimizar, aconselhamos a implementação de backups regulares e realizar backups sob demanda depois de fazer as mudanças ao seu serviço de Gerenciamento de API.
Próximas etapas
Confira os seguintes recursos relacionados para o processo de backup/restauração:
- Automatizar backup e restauração do Gerenciamento de API com Aplicativos Lógicos
- Como migrar o Gerenciamento de API do Azure de uma região para outra
- O nível Premium do Gerenciamento de API também oferece suporte a redundância de zona, que oferece resiliência e alta disponibilidade para uma instância de serviço em uma região específica do Azure (local).