Надежность в Экземпляры контейнеров Azure
Внимание
Эта функция в настоящее время доступна для предварительного ознакомления. Предварительные версии предоставляются только в том случае, если вы принимаете дополнительные условия использования.
В этой статье описывается поддержка надежности в Экземпляры контейнеров Azure (ACI) и рассматриваются как внутрирегиональная устойчивость с зонами доступности, так и сведениями о аварийном восстановлении. Более подробный обзор надежности в Azure см. в статье "Надежность Azure".
Поддержка зоны доступности
Зоны доступности Azure — это по крайней мере три физически отдельные группы центров обработки данных в каждом регионе Azure. Центры обработки данных в каждой зоне оснащены независимой питанием, охлаждения и сетевой инфраструктурой. В случае сбоя локальной зоны зоны зоны создаются таким образом, чтобы при возникновении влияния одной зоны, региональных служб, емкости и высокой доступности поддерживались остальными двумя зонами.
Сбои могут варьироваться от сбоев программного обеспечения и оборудования до таких событий, как землетрясения, наводнения и пожары. Устойчивость к сбоям достигается с избыточностью и логической изоляцией служб Azure. Дополнительные сведения о зонах доступности в Azure см. в разделе "Регионы и зоны доступности".
Службы с поддержкой зон доступности Azure предназначены для обеспечения правильного уровня надежности и гибкости. Их можно настроить двумя способами. Они могут быть избыточными по зонам с автоматической репликацией между зонами или зональными экземплярами, закрепленными в определенной зоне. Эти подходы также можно объединить. Дополнительные сведения об зональной архитектуре, избыточной между зонами, см . в рекомендациях по использованию зональных зон и регионов.
Экземпляры контейнеров Azure поддерживает развертывания зональных групп контейнеров, что означает, что экземпляр закрепляется в определенной локально выбранной зоне доступности. Зона доступности указывается на уровне группы контейнеров. Контейнеры в группе не могут иметь уникальные зоны доступности. Чтобы изменить зону доступности группы контейнеров, необходимо удалить существующую и создать другую группу контейнеров с новой зоной доступности.
Необходимые компоненты
Внимание
Эта функция в настоящее время недоступна для портала Azure.
- Развертывания зональных групп контейнеров поддерживаются в большинстве регионов, где служба ACI доступна для групп контейнеров Linux и Windows Server 2019. Дополнительные сведения см. в статье Регионы и доступность ресурсов.
- При использовании Azure CLI убедитесь, что установлена версия
2.30.0
или более поздняя. - При использовании PowerShell убедитесь, что установлена версия
2.1.1-preview
или более поздняя. - При использовании пакета SDK для Java убедитесь, что установлена версия
2.9.0
или более поздняя. - Поддержка зоны доступности доступна только в версии
09-01-2021
API ACI или более поздней.
Внимание
В настоящее время группы контейнеров с ресурсами GPU не поддерживают зоны доступности.
Развертывание и миграция зон доступности
Чтобы изменить зону доступности группы контейнеров, необходимо удалить существующую и создать другую группу контейнеров с новой зоной доступности.
Создание ресурса с включенной зоной доступности
Чтобы создать ресурс экземпляра контейнера с включенной зоной доступности, необходимо развернуть группу контейнеров с помощью шаблона Azure Resource Manager (ARM).
Примечание.
Примеры в этой статье отформатированы для выполнения в оболочке Bash. Если вы предпочитаете использовать другую оболочку, измените символы продолжения строки соответствующим образом.
Чтобы развернуть контейнер с помощью ARM, выполните приведенные действия.
Скопируйте следующий json-файл в новый файл с именем
azuredeploy.json
. Этот пример шаблона развертывает группу контейнеров с одним контейнером в зоне доступности 1 в восточной части США.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "metadata": { "_generator": { "name": "bicep", "version": "0.4.1.14562", "templateHash": "12367894147709986470" } }, "parameters": { "name": { "type": "string", "defaultValue": "acilinuxpublicipcontainergroup", "metadata": { "description": "Name for the container group" } }, "image": { "type": "string", "defaultValue": "mcr.microsoft.com/azuredocs/aci-helloworld", "metadata": { "description": "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials." } }, "port": { "type": "int", "defaultValue": 80, "metadata": { "description": "Port to open on the container and the public IP address." } }, "cpuCores": { "type": "int", "defaultValue": 1, "metadata": { "description": "The number of CPU cores to allocate to the container." } }, "memoryInGb": { "type": "int", "defaultValue": 2, "metadata": { "description": "The amount of memory to allocate to the container in gigabytes." } }, "restartPolicy": { "type": "string", "defaultValue": "Always", "allowedValues": [ "Always", "Never", "OnFailure" ], "metadata": { "description": "The behavior of Azure runtime if container has stopped." } }, "location": { "type": "string", "defaultValue": "eastus", "metadata": { "description": "Location for all resources." } } }, "functions": [], "resources": [ { "type": "Microsoft.ContainerInstance/containerGroups", "apiVersion": "2021-09-01", "zones": [ "1" ], "name": "[parameters('name')]", "location": "[parameters('location')]", "properties": { "containers": [ { "name": "[parameters('name')]", "properties": { "image": "[parameters('image')]", "ports": [ { "port": "[parameters('port')]", "protocol": "TCP" } ], "resources": { "requests": { "cpu": "[parameters('cpuCores')]", "memoryInGB": "[parameters('memoryInGb')]" } } } } ], "osType": "Linux", "restartPolicy": "[parameters('restartPolicy')]", "ipAddress": { "type": "Public", "ports": [ { "port": "[parameters('port')]", "protocol": "TCP" } ] } } } ], "outputs": { "containerIPv4Address": { "type": "string", "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups', parameters('name'))).ipAddress.ip]" } } }
Создайте группу ресурсов с помощью команды [az group create][availability-zones-group-create]:
az group create --name myResourceGroup --location eastus
Разверните шаблон с помощью команды az deployment group create.
az deployment group create \ --resource-group myResourceGroup \ --template-file azuredeploy.json
Чтобы убедиться, что группа контейнеров успешно развернута в зоне доступности, просмотрите сведения о группе контейнеров с помощью команды az container show.
az container show --name acilinuxpublicipcontainergroup --resource-group myResourceGroup
Поддержка зональной отработки отказа
Группа контейнеров экземпляров контейнеров назначается одной зоне доступности. В результате эта группа экземпляров контейнеров не будет влиять на сбой, который возникает в любой другой зоне доступности того же региона.
Однако если в зоне доступности группы контейнеров возникает сбой, можно ожидать простоя для всех экземпляров контейнеров в этой группе.
Чтобы избежать простоя экземпляра контейнера, рекомендуется создать не менее двух групп контейнеров в двух разных зонах доступности в определенном регионе. Это гарантирует, что ресурсы экземпляра контейнера выполняются и выполняются всякий раз, когда в этом регионе возникает сбой в любой отдельной зоне.
Аварийное восстановление
Когда весь регион Azure или центр обработки данных испытывает простой, критически важный код должен продолжать обработку в другом регионе. Экземпляры контейнеров Azure развернутые с зональной конфигурацией запуска в определенной зоне в определенном регионе. Встроенная избыточность отсутствует. Чтобы избежать потери выполнения во время расширенных сбоев в регионе, можно избыточно развертывать экземпляры контейнеров в других регионах.