Реализация аварийного восстановления с помощью функций резервного копирования и восстановления службы в Azure API Management

ОБЛАСТЬ ПРИМЕНЕНИЯ: Разработчик | Базовый | Стандартный | Премиум

Опубликовав интерфейсы API и управляя ими с помощью службы управления API Azure, вы получаете возможности по обеспечению отказоустойчивости и организации инфраструктуры, которые в противном случае вам пришлось бы проектировать и внедрять вручную. Платформа Azure устраняет большую часть потенциальных сбоев при относительно небольших затратах.

Чтобы обеспечить восстановление в случае проблем с доступностью службы Управления API, будьте готовы в любой момент воссоздать ее в другом регионе. В зависимости от того, насколько быстро нужно восстанавливать систему, вам может потребоваться держать службу в ожидании в одном или нескольких регионах. Также можно попробовать синхронизировать их конфигурацию и содержимое с действующей службой в соответствии с целевой точкой восстановления. Возможности резервного копирования и восстановления Управления API — это необходимые компоненты для реализации стратегии аварийного восстановления.

Резервное копирование и восстановление также можно использовать для репликации конфигурации Управления API между операционными средами, например между средой разработки и промежуточной средой. Обратите внимание, что данные среды выполнения, например пользователи и подписки, тоже копируются, что не всегда желательно.

В этой статье описаны инструкции по автоматизации резервного копирования и восстановления экземпляра Управления API с помощью внешней учетной записи хранения. Их можно выполнить с помощью командлетов Azure PowerShell Backup-AzApiManagement и Restore-AzApiManagement либо REST API Api Management Service - Backup и Api Management Service - Restore.

Предупреждение

Срок действия каждой резервной копии истекает через 30 дней. Если вы попытаетесь восстановить резервную копию по истечении 30 дней, восстановление завершится сбоем и будет отображено сообщение Cannot restore: backup expired.

Внимание

Операция восстановления не изменяет конфигурацию настраиваемого узла в целевой службе. Мы рекомендуем использовать одно и то же настраиваемое имя узла и сертификат TLS как для активных, так и для резервных служб. Тогда, после восстановления, трафик можно будет перенаправить в резервный экземпляр путем простого изменения CNAME в DNS.

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Необходимые компоненты

Настройка доступа к учетной записи хранения

При выполнении операции резервного копирования или восстановления необходимо настроить доступ к учетной записи хранения. Управление API поддерживает два механизма доступа к хранилищу: ключ доступа службы хранилища Azure и управляемое удостоверение Управления API.

Настройка ключа доступа учетной записи хранения

Azure создает два 512-битных ключа доступа для каждой учетной записи хранения. Их можно использовать для предоставления доступа к учетной записи хранения с помощью общего ключа. Сведения о просмотре и получении ключей, а также об управлении ими см. в статье Управление ключами доступа учетной записи хранения.

Настройка управляемого удостоверения Управления API

Примечание.

Использование управляемого удостоверения Управления API для операций с хранилищем во время резервного копирования и восстановления поддерживается в REST API службы Управления API версии 2021-04-01-preview или более поздней.

  1. Включите назначаемое системой или назначаемое пользователем управляемое удостоверение для Управления API в экземпляре Управления API.

    • Если вы включаете управляемое удостоверение, назначаемое пользователем, запишите идентификатор клиента удостоверения.
    • Если резервное копирование и восстановление выполняется в разных экземплярах Управления API, включите управляемое удостоверение как в исходном, так и в целевом экземплярах.
  2. Назначьте удостоверению роль Участник службы хранилища BLOB-объектов, ограниченную учетной записью хранения, используемой для резервного копирования и восстановления. Для назначения этой роли можно использовать портал Azure или другие инструменты Azure.

Архивация службы управления API

Выполните вход в Azure PowerShell.

В примерах ниже сделайте следующее:

  • Экземпляр Управления API под названием myapim находится в группе ресурсов apimresourcegroup.
  • Учетная запись хранения под названием backupstorageaccount находится в группе ресурсов storageresourcegroup. В учетной записи хранения содержится контейнер под названием backups.
  • Будет создан BLOB-объект архивации под названием ContosoBackup.apimbackup.

Определите переменные в PowerShell:

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

Доступ с помощью ключа доступа к хранилищу

$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

Доступ с помощью управляемого удостоверения

Чтобы настроить управляемое удостоверение в экземпляре Управления API для доступа к учетной записи хранения, см. раздел Настройка управляемого удостоверения Управления API, описанный выше в этой статье.

Доступ с помощью управляемого удостоверения, назначаемого системой

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Доступ с помощью управляемого удостоверения, назначаемого пользователем

В этом примере управляемое удостоверение, назначаемое пользователем, под названием myidentity находится в группе ресурсов 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

Резервное копирование — это длительная операция, которая может занять несколько минут. В течение этого времени шлюз API продолжает обрабатывать запросы, но состояние службы обновляется.

Восстановление службы управления API

Внимание

Не следует вносить изменения в конфигурацию службы (например, в API, политики, внешний вид портала разработчика) во время выполнения восстановления. Такие изменения могут быть перезаписаны.

В следующих примерах заданы следующие условия:

  • Экземпляр Управления API под названием myapim восстановлен из BLOB-объекта архивации ContosoBackup.apimbackup в учетной записи хранения backupstorageaccount.
  • BLOB-объект архивации находится в контейнере под названием backups.

Определите переменные в PowerShell:

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

Доступ с помощью ключа доступа к хранилищу

$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

Доступ с помощью управляемого удостоверения

Чтобы настроить управляемое удостоверение в экземпляре Управления API для доступа к учетной записи хранения, см. раздел Настройка управляемого удостоверения Управления API, описанный выше в этой статье.

Доступ с помощью управляемого удостоверения, назначаемого системой

$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName

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

Доступ с помощью управляемого удостоверения, назначаемого пользователем

В этом примере управляемое удостоверение, назначаемое пользователем, под названием myidentity находится в группе ресурсов 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

Восстановление — это длительная операция, которая может занять более 45 минут.

Ограничения

  • Восстановление резервной копии гарантируется только в течение 30 дней с момента ее создания.
  • Во время выполнения резервного копирования не меняйте условия работы службы. Например, не следует повышать или понижать ценовую категорию, менять имя домена и т. д.
  • Изменения конфигурации службы (например, интерфейсы API, политики, внешний вид портала разработчика), сделанные во время резервного копирования, могут быть исключены из резервного копирования и будут утрачены.
  • Во время резервного копирования не собираются предварительно объединенные данные журналов, используемые в отчетах, которые отображаются в окне Аналитика на портале Azure.
  • Общий доступ к ресурсам независимо от источника (CORS)не следует включать в службе BLOB-объектов в учетной записи хранения.
  • Ценовая категория восстанавливаемой службы должна совпадать с ценовой категорией службы из резервной копии.

Ограничения передачи данных хранилища по сети

Если учетная запись хранения включена, рекомендуется использовать назначаемое системой управляемое удостоверение экземпляра Управление API для доступа к учетной записи. Убедитесь, что учетная запись хранения предоставляет доступ к доверенным службам Azure.

Что не копируется в резерв

Частота резервного копирования службы влияет на целевую точку восстановления. Чтобы максимально снизить этот показатель, мы советуем настроить регулярное резервное копирование, а также выполнять резервное копирование по требованию после внесения изменений в службу управления API.

Следующие шаги

Чтобы узнать больше о процессах резервного копирования и восстановления, ознакомьтесь со следующими ресурсами: