Tillförlitlighet i Azure Container Instances

Viktigt!

Den här funktionen finns i förhandsgranskning. Förhandsversioner är tillgängliga för dig under förutsättning att du godkänner de kompletterande användningsvillkoren.

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

Azure-tillgänglighetszoner är minst tre fysiskt separata grupper av datacenter i varje Azure-region. Datacenter i varje zon är utrustade med oberoende infrastruktur för ström, kylning och nätverk. Om det uppstår ett fel i den lokala zonen är tillgänglighetszoner utformade så att regionala tjänster, kapacitet och hög tillgänglighet stöds av de återstående två zonerna om den ena zonen påverkas.

Fel kan vara allt från programvaru- och maskinvarufel till händelser som jordbävningar, översvämningar och bränder. Tolerans mot fel uppnås med redundans och logisk isolering av Azure-tjänster. Mer detaljerad information om tillgänglighetszoner i Azure finns i Regioner och tillgänglighetszoner.

Azure-tillgänglighetszoner-aktiverade tjänster är utformade för att ge rätt nivå av tillförlitlighet och flexibilitet. De kan konfigureras på två sätt. De kan vara antingen zonredundanta, med automatisk replikering mellan zoner eller zoninstanser, med instanser fästa på en specifik zon. Du kan också kombinera dessa metoder. Mer information om zon- och zonredundant arkitektur finns i Rekommendationer för användning av tillgänglighetszoner och regioner.

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

Viktigt!

Den här funktionen är för närvarande inte tillgänglig för Azure-portalen.

  • 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][availability-zones-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 containershow --name acilinuxcontainergroup --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