Procedimiento para implementar la recuperación ante desastres mediante copias de seguridad y restauración del servicio en Azure API Management
SE APLICA A: Desarrollador | Básico | Estándar | Premium
Si publica y administra las API a través de Azure API Management, podrá aprovechar numerosas funcionalidades de infraestructura y tolerancia a errores que, de lo contrario, debería diseñar, implementar y administrar de manera manual. La plataforma Azure mitiga una gran cantidad de posibles errores a un costo reducido.
Para recuperarse de los problemas de disponibilidad que afectan a su servicio API Management, esté preparado para reconstituir su servicio en otra región en cualquier momento. Según el objetivo de tiempo de recuperación, puede que quiera mantener un servicio en espera en una o varias regiones. También, puede que quiera intentar mantener sincronizados la configuración y el contenido con el servicio activo según el objetivo de punto de recuperación. Las características de copia de seguridad y restauración del API Management ofrecen los bloques de creación necesarios para implementar una estrategia de recuperación ante desastres.
Las operaciones de copia de seguridad y restauración también pueden usarse para replicar la configuración del servicio API Management entre entornos operativos, por ejemplo, desarrollo y almacenamiento provisional. Sepa que los datos del entorno de ejecución, como los usuarios y las suscripciones, también se copiarán, lo que no siempre podría ser deseable.
En este artículo se muestra cómo automatizar las operaciones de copia de seguridad y restauración de la instancia de API Management mediante una cuenta de almacenamiento externa. Los pasos que se muestran aquí usan los cmdlets Backup-AzApiManagement y Restore-AzApiManagement de Azure PowerShell o las API REST Management Service - Backup y Api Management Service - Restore.
Advertencia
Cada copia de seguridad expira después de treinta días. Si intenta restaurar una copia de seguridad una vez transcurrido el período de expiración de treinta días, se producirá un error en la restauración con un mensaje Cannot restore: backup expired
.
Importante
La operación de restauración no cambia la configuración del nombre de host personalizado del servicio de destino. Se recomienda usar el mismo nombre de host personalizado y el mismo certificado TLS para los servicios activos y en espera, de modo que, una vez finalizada la operación de restauración, el tráfico pueda redirigirse a la instancia en espera mediante un simple cambio de DNS CNAME.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Requisitos previos
Una instancia de servicio de API Management. Si no tiene una, consulte Creación de una instancia del servicio Azure API Management.
Una cuenta de almacenamiento de Azure. Si aún no tiene una, cree una cuenta de almacenamiento.
- Cree un contenedor en la cuenta de almacenamiento para que contenga los datos de copia de seguridad.
La versión más reciente de Azure PowerShell, si tiene previsto usar cmdlets de Azure PowerShell. Si todavía no lo ha hecho, instale Azure PowerShell.
Configuración del acceso de la cuenta de almacenamiento
Al ejecutar una operación de copia de seguridad o restauración, debe configurar el acceso a la cuenta de almacenamiento. API Management admite dos mecanismos de acceso de almacenamiento: una clave de acceso de Azure Storage o una identidad administrada de API Management.
Configuración de la clave de acceso de la cuenta de almacenamiento
Azure genera dos claves de acceso de 512 bits para cada cuenta de almacenamiento. Estas claves se pueden usar para autorizar el acceso a los datos de su cuenta de almacenamiento mediante la autorización con clave compartida. Para ver, recuperar y administrar las claves, consulte Administración de claves de acceso de la cuenta de almacenamiento.
Configuración de la identidad administrada de API Management
Nota
El uso de una identidad administrada de API Management para operaciones de almacenamiento durante la copia de seguridad y la restauración requiere la versión 2021-04-01-preview
o posterior de la API REST de API Management.
Habilite una identidad administrada asignada por el sistema o por el usuario para API Management en la instancia de API Management.
- Si habilita una identidad administrada asignada por el usuario, tome nota del id. de cliente de la identidad.
- Si va a realizar una copia de seguridad y restaurar contenido en diferentes instancias de API Management, habilite una identidad administrada en las instancias de origen y de destino.
Asigne a la identidad la función Colaborador de datos de blobs de almacenamiento, en el ámbito de la cuenta de almacenamiento que se usa para realizar copias de seguridad y restauraciones. Puede usar Azure Portal u otras herramientas de Azure para asignar el rol.
Crear una copia de seguridad del servicio API Management
Inicio de sesión con Azure PowerShell.
En los siguientes ejemplos:
- Una instancia de API Management denominada myapim está en el grupo de recursos apimresourcegroup.
- Una cuenta de almacenamiento denominada backupstorageaccount está en el grupo de recursos storageresourcegroup. La cuenta de almacenamiento tiene un contenedor denominado backups.
- Se creará un blob de copia de seguridad con el nombre ContosoBackup.apimbackup.
Establezca las variables en PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acceso mediante la clave de acceso de almacenamiento
$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
Acceso mediante la identidad administrada
Para configurar una identidad administrada en la instancia de API Management para acceder a la cuenta de almacenamiento, consulte Configuración de una identidad administrada, anteriormente en este artículo.
Acceso con una identidad administrada asignada por el sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Backup-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -TargetContainerName $containerName `
-TargetBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acceso con una identidad administrada asignada por el usuario
En este ejemplo, una identidad administrada asignada por el usuario denominada myidentity está en el 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
La creación de una copia de seguridad es una operación de larga duración que puede tardar varios minutos en completarse. Durante este tiempo, la puerta de enlace de API sigue controlando las solicitudes, pero el estado del servicio es Actualizando.
Restaurar el servicio API Management
Precaución
Evite cambios en la configuración del servicio (por ejemplo, en la API, las directivas o la apariencia del portal para desarrolladores) mientras la operación de restauración está en curso. Los cambios se pueden sobrescribir.
En los siguientes ejemplos:
- Se restaura una instancia de API Management denominada myapim del blob de copia de seguridad denominado ContosoBackup.apimbackup en la cuenta de almacenamiento backupstorageaccount.
- El blob de copia de seguridad está en un contenedor denominado backups.
Establezca las variables en PowerShell:
$apiManagementName="myapim";
$apiManagementResourceGroup="apimresourcegroup";
$storageAccountName="backupstorageaccount";
$storageResourceGroup="storageresourcegroup";
$containerName="backups";
$blobName="ContosoBackup.apimbackup"
Acceso mediante la clave de acceso de almacenamiento
$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
Acceso mediante la identidad administrada
Para configurar una identidad administrada en la instancia de API Management para acceder a la cuenta de almacenamiento, consulte Configuración de una identidad administrada, anteriormente en este artículo.
Acceso con una identidad administrada asignada por el sistema
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName
Restore-AzApiManagement -ResourceGroupName $apiManagementResourceGroup -Name $apiManagementName `
-StorageContext $storageContext -SourceContainerName $containerName `
-SourceBlobName $blobName -AccessType "SystemAssignedManagedIdentity"
Acceso con una identidad administrada asignada por el usuario
En este ejemplo, una identidad administrada asignada por el usuario denominada myidentity está en el 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
La restauración es una operación de larga duración que puede tardar 45 minutos o más en completarse.
Restricciones
- La restauración de una copia de seguridad se garantiza solo durante 30 días a partir del momento en que esta se crea.
- Mientras la copia de seguridad esté en curso, evite hacer cambios de administración en el servicio, como una actualización o un cambio a una versión anterior de un plan de tarifa, el cambio en un nombre de dominio, etc.
- Es posible que los cambios que se realicen en la configuración del servicio (por ejemplo, las API, las directivas y la apariencia del portal para desarrolladores) mientras se está realizando la operación de copia de seguridad no se incluyan en la copia de seguridad y se pierdan.
- La copia de seguridad no captura los datos de registro previamente agregados usados en los informes mostrados en la hoja Analytics de Azure Portal.
- El uso compartido de recursos entre orígenes (CORS)no debería estar habilitado en Blob service en la cuenta de almacenamiento.
- El plan de tarifa del servicio en el que se restaura debe coincidir con el plan de tarifa del servicio en copia de seguridad que se restaura.
Restricciones de redes de almacenamiento
Si la cuenta de almacenamiento está habilitada por firewall se recomienda usar la identidad administrada asignada por el sistema de la instancia de API Management para acceder a la cuenta. Asegúrese de que la cuenta de almacenamiento concede acceso a los servicios de Azure de confianza.
De lo que no se hace una copia de seguridad
- Los datos de uso con los que se crean informes de análisis no se incluyen en la copia de seguridad. La API de REST de Azure API Management permite recibir de forma periódica informes de análisis para guardarlos en un lugar seguro.
- Certificados TLS/SSL de dominio personalizado.
- Certificados personalizados de entidades de certificación, que incluyen certificados raíz o intermedios cargados por el cliente.
- Configuración de integración de red virtual.
- Configuración de identidad administrada.
- Configuración de diagnóstico de Azure Monitor.
- Configuración de protocolos y cifrado.
- Contenido del portal para desarrolladores.
La frecuencia con la que se crean las copias de seguridad afecta al objetivo de punto de recuperación. Para minimizarlo, se recomienda implementar copias de seguridad habituales y realizar copias de seguridad a petición después de hacer cambios en el servicio API Management.
Pasos siguientes
Consulte los siguientes recursos relacionados para el proceso de copia de seguridad y restauración:
- Automating API Management Backup and Restore with Logic Apps (Automatización de la copia de seguridad y restauración de API Management con Logic Apps)
- Migración de Azure API Management entre regiones
- El nivel Premium de API Management también admite la redundancia de zona, ya que proporciona resistencia y alta disponibilidad a una instancia de servicio en una región (ubicación) de Azure específica.