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:
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]" } } }
Skapa en resursgrupp med kommandot az group create :
az group create --name myResourceGroup --location eastus
Distribuera mallen med kommandot az deployment group create :
az deployment group create \ --resource-group myResourceGroup \ --template-file azuredeploy.json
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.