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. Consulte Instalación de Azure PowerShell para empezar. 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

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.

  1. 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.
  2. 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

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: