Niezawodność w usłudze Azure Container Instances
W tym artykule opisano obsługę niezawodności w usłudze Azure Container Instances (ACI) i opisano zarówno odporność wewnątrz regionalną ze strefami dostępności, jak i informacjami na temat odzyskiwania po awarii. Aby uzyskać bardziej szczegółowe omówienie niezawodności na platformie Azure, zobacz Niezawodność platformy Azure.
Obsługa strefy dostępności
Strefy dostępności są fizycznie oddzielnymi grupami centrów danych w każdym regionie świadczenia usługi Azure. Gdy jedna strefa ulegnie awarii, usługi mogą przejść w tryb failover do jednej z pozostałych stref.
Aby uzyskać więcej informacji na temat stref dostępności na platformie Azure, zobacz Co to są strefy dostępności?.
Usługa Azure Container Instances obsługuje wdrożenia grup kontenerów strefowych , co oznacza, że wystąpienie jest przypięte do określonej, wybranej samodzielnie strefy dostępności. Strefa dostępności jest określana na poziomie grupy kontenerów. Kontenery w grupie kontenerów nie mogą mieć unikatowych stref dostępności. Aby zmienić strefę dostępności grupy kontenerów, musisz usunąć grupę kontenerów i utworzyć inną grupę kontenerów przy użyciu nowej strefy dostępności.
Wymagania wstępne
- Wdrożenia grup kontenerów strefowych są obsługiwane w większości regionów, w których usługa ACI jest dostępna dla grup kontenerów systemów Linux i Windows Server 2019. Aby uzyskać szczegółowe informacje, zobacz Regiony i dostępność zasobów.
- W przypadku korzystania z interfejsu wiersza polecenia platformy Azure upewnij się, że zainstalowano wersję
2.30.0
lub nowszą. - W przypadku korzystania z programu PowerShell upewnij się, że zainstalowano wersję
2.1.1-preview
lub nowszą. - W przypadku korzystania z zestawu Java SDK upewnij się, że zainstalowano wersję
2.9.0
lub nowszą. - Obsługa strefy dostępności jest dostępna tylko w wersji
09-01-2021
interfejsu API usługi ACI lub nowszej.
Ważne
Grupy kontenerów z zasobami procesora GPU nie obsługują obecnie stref dostępności.
Ponowne wdrażanie strefy dostępności i migracja
Aby zmienić strefę dostępności grupy kontenerów, musisz usunąć grupę kontenerów i utworzyć inną grupę kontenerów przy użyciu nowej strefy dostępności.
Tworzenie zasobu z włączoną strefą dostępności
Aby utworzyć zasób wystąpienia kontenera z włączoną strefą dostępności, należy wdrożyć grupę kontenerów przy użyciu szablonu usługi Azure Resource Manager (ARM).
Uwaga
Przykłady w tym artykule są formatowane dla powłoki Bash. Jeśli wolisz inną powłokę, odpowiednio dostosuj znaki kontynuacji wiersza.
Aby wdrożyć kontener za pomocą usługi ARM:
Skopiuj następujący kod JSON do nowego pliku o nazwie
azuredeploy.json
. Ten przykładowy szablon wdraża grupę kontenerów z pojedynczym kontenerem w strefie dostępności 1 w regionie Wschodnie stany USA.{ "$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]" } } }
Utwórz grupę zasobów za pomocą polecenia az group create :
az group create --name myResourceGroup --location eastus
Wdróż szablon za pomocą polecenia az deployment group create :
az deployment group create \ --resource-group myResourceGroup \ --template-file azuredeploy.json
Aby sprawdzić, czy grupa kontenerów została pomyślnie wdrożona w strefie dostępności, wyświetl szczegóły grupy kontenerów za pomocą polecenia az container show :
az container show --name acilinuxpublicipcontainergroup --resource-group myResourceGroup
Obsługa trybu failover strefowego
Grupa kontenerów wystąpień kontenera jest przypisywana do pojedynczej strefy dostępności. W związku z tym ta grupa wystąpień kontenera nie będzie mieć wpływu na awarię, która występuje w żadnej innej strefie dostępności w tym samym regionie
Jeśli jednak w strefie dostępności grupy kontenerów wystąpi awaria, można oczekiwać przestoju dla wszystkich wystąpień kontenerów w tej grupie.
Aby uniknąć przestoju wystąpienia kontenera, zalecamy utworzenie co najmniej dwóch grup kontenerów w dwóch różnych strefach dostępności w danym regionie. Gwarantuje to, że zasoby wystąpienia kontenera są uruchomione zawsze wtedy, gdy wystąpi awaria dowolnego pojedynczej strefy w tym regionie.
Odzyskiwanie po awarii
W przypadku przestoju całego regionu platformy Azure lub centrum danych kod o znaczeniu krytycznym musi kontynuować przetwarzanie w innym regionie. Usługa Azure Container Instances wdrożona z konfiguracją strefową jest uruchamiana w określonej strefie w określonym regionie. Brak wbudowanej nadmiarowości. Aby uniknąć utraty wykonywania podczas awarii w całym regionie, możesz nadmiarowo wdrożyć wystąpienia kontenerów w innych regionach.