Udostępnij za pośrednictwem


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:

  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 :

    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 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.

Następne kroki