Реализация аварийного восстановления с помощью функций резервного копирования и восстановления службы в 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". Если у вас его нет, см. статью Создание экземпляра службы Управления API.
Учетная запись хранения Azure. Если у вас ее нет, см. статью Создание учетной записи хранения.
- Создайте контейнер в учетной записи для хранения данных резервных копий.
Последняя версия Azure PowerShell, если вы планируете использовать командлеты Azure PowerShell. Если у вас нет модуля Azure PowerShell, установите его.
Настройка доступа к учетной записи хранения
При выполнении операции резервного копирования или восстановления необходимо настроить доступ к учетной записи хранения. Управление API поддерживает два механизма доступа к хранилищу: ключ доступа службы хранилища Azure и управляемое удостоверение Управления API.
Настройка ключа доступа учетной записи хранения
Azure создает два 512-битных ключа доступа для каждой учетной записи хранения. Их можно использовать для предоставления доступа к учетной записи хранения с помощью общего ключа. Сведения о просмотре и получении ключей, а также об управлении ими см. в статье Управление ключами доступа учетной записи хранения.
Настройка управляемого удостоверения Управления API
Примечание.
Использование управляемого удостоверения Управления API для операций с хранилищем во время резервного копирования и восстановления поддерживается в REST API службы Управления API версии 2021-04-01-preview
или более поздней.
Включите назначаемое системой или назначаемое пользователем управляемое удостоверение для Управления API в экземпляре Управления API.
- Если вы включаете управляемое удостоверение, назначаемое пользователем, запишите идентификатор клиента удостоверения.
- Если резервное копирование и восстановление выполняется в разных экземплярах Управления API, включите управляемое удостоверение как в исходном, так и в целевом экземплярах.
Назначьте удостоверению роль Участник службы хранилища 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.
Что не копируется в резерв
- Данные об использовании, применяемые при создании аналитических отчетов, не включаются в резервную копию. Для периодического извлечения аналитических отчетов с целью их дальнейшего помещения на хранение используйте интерфейс REST API управления API Azure.
- Сертификаты TLS/SSL личных доменов.
- Настраиваемые сертификаты ЦС, в том числе промежуточные или корневые сертификаты, отправленные клиентом.
- Параметры интеграции виртуальных сетей.
- Конфигурация управляемого удостоверения.
- Конфигурация диагностики Azure Monitor.
- Параметры протоколов и шифрования.
- Содержимое портала разработчика.
Частота резервного копирования службы влияет на целевую точку восстановления. Чтобы максимально снизить этот показатель, мы советуем настроить регулярное резервное копирование, а также выполнять резервное копирование по требованию после внесения изменений в службу управления API.
Следующие шаги
Чтобы узнать больше о процессах резервного копирования и восстановления, ознакомьтесь со следующими ресурсами:
- Automating API Management Backup and Restore with Logic Apps (Автоматизация управления API резервного копирования и восстановления с помощью Logic Apps)
- Перемещение Управление API Azure между регионами
- Служба "Управление API" ценовой категории Премиум также поддерживает избыточность между зонами, которая обеспечивает устойчивость и высокий уровень доступности экземпляра службы в определенном регионе Azure (расположении).