Dela via


Tillförlitlighet i Azure Container Instances

Den här artikeln beskriver tillförlitlighetsstöd i Azure Container Instances (ACI) och beskriver både intraregional återhämtning med tillgänglighetszoner och information om haveriberedskap. En mer detaljerad översikt över tillförlitligheten i Azure finns i Azures tillförlitlighet.

Stöd för tillgänglighetszon

Tillgänglighetszoner är fysiskt separata grupper av datacenter i varje Azure-region. När en zon misslyckas kan tjänsterna redundansväxla till en av de återstående zonerna.

Mer information om tillgänglighetszoner i Azure finns i Vad är tillgänglighetszoner?.

Azure Container Instances stöder zoninstansdistributioner av containergrupper, vilket innebär att instansen är fäst i en specifik, självvald tillgänglighetszon. Tillgänglighetszonen anges på containergruppsnivå. Containrar i en containergrupp kan inte ha unika tillgänglighetszoner. Om du vill ändra containergruppens tillgänglighetszon måste du ta bort containergruppen och skapa en annan containergrupp med den nya tillgänglighetszonen.

Förutsättningar

  • Zonindelade distributioner av containergrupper stöds i de flesta regioner där ACI är tillgängligt för Linux- och Windows Server 2019-containergrupper. Mer information finns i Regioner och resurstillgänglighet.
  • Om du använder Azure CLI kontrollerar du att versionen 2.30.0 eller senare är installerad.
  • Om du använder PowerShell kontrollerar du att versionen 2.1.1-preview eller senare är installerad.
  • Om du använder Java SDK kontrollerar du att versionen 2.9.0 eller senare är installerad.
  • Stöd för tillgänglighetszoner är endast tillgängligt i ACI API-versionen 09-01-2021 eller senare.

Viktigt!

Containergrupper med GPU-resurser stöder inte tillgänglighetszoner just nu.

Omdistribution och migrering av tillgänglighetszon

Om du vill ändra containergruppens tillgänglighetszon måste du ta bort containergruppen och skapa en annan containergrupp med den nya tillgänglighetszonen.

Skapa en resurs med tillgänglighetszonen aktiverad

Om du vill skapa en containerinstansresurs med tillgänglighetszonen aktiverad måste du distribuera en containergrupp med hjälp av en ARM-mall (Azure Resource Manager).

Kommentar

Exempel i den här artikeln är formaterade för Bash-gränssnittet. Om du föredrar ett annat gränssnitt justerar du radfortsättningstecken i enlighet med detta.

Så här distribuerar du en container med ARM:

  1. Kopiera och klistra in följande JSON i en ny fil med namnet azuredeploy.json. Den här exempelmallen distribuerar en containergrupp med en enda container till tillgänglighetszon 1 i USA, östra.

    {
        "$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. Skapa en resursgrupp med kommandot az group create :

    az group create --name myResourceGroup --location eastus
    
  3. Distribuera mallen med kommandot az deployment group create :

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Om du vill verifiera att containergruppen har distribuerats till en tillgänglighetszon kan du visa information om containergruppen med kommandot az container show :

    az container show --name acilinuxpublicipcontainergroup --resource-group myResourceGroup
    

Stöd för zonbaserad redundans

En containergrupp med containerinstanser tilldelas till en enda tillgänglighetszon. Därför påverkas inte den gruppen av containerinstanser av ett avbrott som inträffar i någon annan tillgänglighetszon i samma region

Om ett avbrott uppstår i tillgänglighetszonen för containergruppen kan du dock förvänta dig driftstopp för alla containerinstanser i gruppen.

För att undvika avbrott i containerinstansen rekommenderar vi att du skapar minst två containergrupper i två olika tillgänglighetszoner i en viss region. Detta säkerställer att dina containerinstansresurser är igång när en enskild zon i den regionen upplever avbrott.

Haveriberedskap

När en hel Azure-region eller ett datacenter upplever driftstopp måste din verksamhetskritiska kod fortsätta bearbetningen i en annan region. Azure Container Instances distribueras med zonindelad konfiguration som körs i en specifik zon inom en viss region. Det finns ingen inbyggd redundans tillgänglig. För att undvika förlust av körning under regionomfattande avbrott kan du redundant distribuera containerinstanserna i andra regioner.

Nästa steg