Come implementare il ripristino di emergenza usando il backup e il ripristino dei servizi in Gestione API di Azure

SI APPLICA A: Sviluppatore | Basic | Standard | Premium

Pubblicando e gestendo le API tramite Gestione API di Azure è possibile sfruttare funzionalità di tolleranza di errore e di infrastruttura che sarebbe altrimenti necessario progettare, implementare e gestire manualmente. La piattaforma di Azure permette di mitigare una vasta gamma di potenziali errori a un costo nettamente inferiore.

Per risolvere i problemi di disponibilità che interessano il servizio Gestione API, è possibile ricostituire il servizio in un'altra area in qualsiasi momento. A seconda dell'obiettivo del tempo di ripristino, è possibile mantenere un servizio di standby in una o più aree. È anche possibile provare a mantenere la configurazione e il contenuto sincronizzati con il servizio attivo in base all'obiettivo del punto di ripristino. Le funzionalità di backup e ripristino di Gestione API forniscono i blocchi predefiniti necessari per implementare la strategia di ripristino di emergenza.

Le operazioni di backup e ripristino possono essere usate anche per replicare la configurazione del servizio Gestione API tra ambienti operativi, ad esempio sviluppo e gestione temporanea. Tenere presente che verranno copiati anche i dati di runtime, ad esempio utenti e sottoscrizioni, che potrebbero non essere sempre auspicabili.

Questo articolo illustra come automatizzare le operazioni di backup e ripristino dell'istanza di Gestione API usando un account di archiviazione esterno. I passaggi illustrati di seguito usano i cmdlet di Azure PowerShell Backup-AzApi Management e Restore-AzApiManagement, oppure il servizio Gestione API - Backup e le API REST Servizio Gestione API - Ripristinare.

Avviso

Ogni backup scade dopo 30 giorni. Se si tenta di ripristinare un backup dopo la scadenza del periodo di 30 giorni, il ripristino avrà esito negativo e verrà visualizzato il messaggio Cannot restore: backup expired.

Importante

L'operazione di ripristino non modifica la configurazione del nome host personalizzato del servizio di destinazione. È consigliabile usare lo stesso nome host personalizzato e lo stesso certificato TLS per i servizi attivi e standby, in modo che, dopo il completamento dell'operazione di ripristino, il traffico possa essere reindirizzato all'istanza di standby da una semplice modifica di CNAME DNS.

Nota

È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.

Prerequisiti

Configurare l'accesso all'account di archiviazione

Quando si esegue un'operazione di backup o ripristino, è necessario configurare l'accesso all'account di archiviazione. Gestione API supporta due meccanismi di accesso alle risorse di archiviazione: una chiave di accesso di Archiviazione di Azure o un'identità gestita di Gestione API.

Configurare la chiave di accesso dell'account di archiviazione

Azure genera due chiavi di accesso dell'account di archiviazione a 512 bit per ogni account di archiviazione. Queste chiavi possono essere usate per autorizzare l'accesso ai dati nell'account di archiviazione tramite l'autorizzazione con chiave condivisa. Per visualizzare, recuperare e gestire le chiavi, vedere Gestire le chiavi di accesso dell'account di archiviazione.

Configurare l'identità gestita di Gestione API

Nota

L'uso di un'identità gestita di Gestione API per le operazioni di archiviazione durante il backup e il ripristino è supportato nella versione dell'API REST di Gestione API 2021-04-01-preview o versione successiva.

  1. Abilitare un'identità gestita assegnata dal sistema o assegnata dall'utente per Gestione API nell'istanza di Gestione API.

    • Se si abilita un'identità gestita assegnata dall'utente, prendere nota dell'ID client dell'identità.
    • Se si esegue il backup e il ripristino in istanze di Gestione API diverse, abilitare un'identità gestita nelle istanze di origine e di destinazione.
  2. Assegnare l'identità al ruolo Collaboratore ai dati dei BLOB di archiviazione, con ambito per l'account di archiviazione usato per il backup e il ripristino. Per assegnare il ruolo, usare il portale di Azure o altri strumenti di Azure.

Backup di un servizio di Gestione API

Accedere con Azure PowerShell.

Negli esempi seguenti:

  • Un'istanza di Gestione API denominata myapim si trova nel gruppo di risorse apimresourcegroup.
  • Un account di archiviazione denominato backupstorageaccount si trova nel gruppo di risorse storageresourcegroup. L'account di archiviazione ha un contenitore denominato backup.
  • Verrà creato un BLOB di backup con il nome ContosoBackup.apimbackup.

Impostare le variabili in PowerShell:

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

Accesso tramite la chiave di accesso alle risorse di archiviazione

$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

Accesso tramite l'identità gestita

Per configurare un'identità gestita nell'istanza di Gestione API per accedere all'account di archiviazione, vedere Configurare un'identità gestita, più indietro in questo articolo.

Accesso tramite l'identità gestita assegnata dal sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Accesso tramite l'identità gestita assegnata dall'utente

In questo esempio un'identità gestita assegnata dall'utente denominata myidentity si trova nel gruppo di risorse 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

Il backup è un'operazione a esecuzione prolungata che può richiedere alcuni minuti. Durante questo periodo il gateway API continua a gestire le richieste, ma lo stato del servizio è In aggiornamento.

Ripristino di un servizio di Gestione API

Attenzione

Evitare modifiche alla configurazione del servizio (ad esempio, API, criteri, aspetto del portale per sviluppatori) mentre l'operazione di ripristino è in corso. È possibile sovrascrivere le modifiche.

Negli esempi seguenti,

  • Un'istanza di Gestione API denominata myapim viene ripristinata dal BLOB di backup denominato ContosoBackup.apimbackup nell'account di archiviazione backupstorageaccount.
  • Il BLOB di backup si trova in un contenitore denominato backup.

Impostare le variabili in PowerShell:

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

Accesso tramite la chiave di accesso alle risorse di archiviazione

$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

Accesso tramite l'identità gestita

Per configurare un'identità gestita nell'istanza di Gestione API per accedere all'account di archiviazione, vedere Configurare un'identità gestita, più indietro in questo articolo.

Accesso tramite l'identità gestita assegnata dal sistema

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Accesso tramite l'identità gestita assegnata dall'utente

In questo esempio un'identità gestita assegnata dall'utente denominata myidentity si trova nel gruppo di risorse 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

Il ripristino è un'operazione a esecuzione prolungata che può richiedere fino a 45 minuti o più per il completamento.

Vincoli

  • Il ripristino di un backup è garantito solo per 30 giorni dal momento della sua creazione.
  • Mentre il backup è in corso, evitare modifiche alla gestione nel servizio, ad esempio l'aggiornamento o il downgrade del piano tariffario, la modifica del nome di dominio e altro ancora.
  • Le modifiche apportate alla configurazione del servizio (ad esempio alle API, ai criteri e all'aspetto del portale per sviluppatori) durante l'esecuzione del processo di backup potrebbero essere escluse dal backup e potrebbero andare perse.
  • Il backup non acquisisce i dati di log preaggregati usati nei report visualizzati nella finestra Analisi del portale di Azure.
  • La condivisione di risorse tra le origini (CORS)non deve essere abilitata nel servizio BLOB nell'account di archiviazione.
  • Il piano tariffario del servizio in cui si effettua il ripristino deve corrispondere al piano tariffario del servizio che è stato ripristinato.

Vincoli di rete di archiviazione

Se l'account di archiviazione è firewall abilitato, è consigliabile usare l'identità gestita assegnata dal sistema dell'istanza di Gestione API per l'accesso all'account. Assicurarsi che l'account di archiviazione conceda l'accesso ai servizi di Azure attendibili.

Cosa non viene sottopost a backup

La frequenza con cui si eseguono backup del servizio influisce sull'obiettivo del punto di ripristino. Per ridurla al minimo, si consiglia di implementare backup regolari e di eseguire backup su richiesta dopo aver apportato modifiche al servizio di Gestione API.

Passaggi successivi

Per il processo di backup/ripristino, vedere le risorse correlate seguenti: