Niezawodność w usłudze Azure Container Instances

Ważne

Ta funkcja jest aktualnie dostępna jako funkcja podglądu. Wersje zapoznawcze są udostępniane pod warunkiem udzielenia zgody na dodatkowe warunki użytkowania.

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 platformy Azure to co najmniej trzy fizycznie oddzielne grupy centrów danych w każdym regionie świadczenia usługi Azure. Centra danych w każdej strefie są wyposażone w niezależną infrastrukturę zasilania, chłodzenia i sieci. W przypadku awarii strefy lokalnej strefy strefy dostępności są zaprojektowane tak, aby w przypadku wystąpienia problemu z jedną strefą usługi regionalne, pojemność i wysoka dostępność są obsługiwane przez pozostałe dwie strefy.

Awarie mogą wahać się od awarii oprogramowania i sprzętu po zdarzenia, takie jak trzęsienia ziemi, powodzie i pożary. Tolerancja awarii jest osiągana z nadmiarowością i logiczną izolacją usług platformy Azure. Aby uzyskać bardziej szczegółowe informacje na temat stref dostępności na platformie Azure, zobacz Regiony i strefy dostępności.

Usługi z obsługą stref dostępności platformy Azure zostały zaprojektowane w celu zapewnienia odpowiedniego poziomu niezawodności i elastyczności. Można je skonfigurować na dwa sposoby. Mogą być strefowo nadmiarowe, z automatyczną replikacją między strefami lub strefami, z wystąpieniami przypiętymi do określonej strefy. Możesz również połączyć te podejścia. Aby uzyskać więcej informacji na temat architektury strefowej i strefowo nadmiarowej, zobacz Rekomendacje na potrzeby korzystania ze stref dostępności i regionów.

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

Ważne

Ta funkcja nie jest obecnie dostępna w witrynie Azure Portal.

  • 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:

  1. 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]"
            }
        }
    }
    
  2. Utwórz grupę zasobów za pomocą polecenia [az group create][availability-zones-group-create]:

    az group create --name myResourceGroup --location eastus
    
  3. Wdróż szablon za pomocą polecenia az deployment group create :

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. 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 containershow --name acilinuxcontainergroup --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.

Następne kroki