Betrouwbaarheid in Azure Container Instances
In dit artikel wordt de betrouwbaarheidsondersteuning in Azure Container Instances (ACI) beschreven en wordt zowel binnen de regionale tolerantie behandeld met beschikbaarheidszones als informatie over herstel na noodgevallen. Zie Azure-betrouwbaarheid voor een gedetailleerder overzicht van betrouwbaarheid in Azure.
Ondersteuning voor beschikbaarheidszone
Beschikbaarheidszones zijn fysiek afzonderlijke groepen datacenters binnen elke Azure-regio. Wanneer één zone uitvalt, kunnen services een failover uitvoeren naar een van de resterende zones.
Zie Wat zijn beschikbaarheidszones in Azure voor meer informatie over beschikbaarheidszones?
Azure Container Instances ondersteunt zonegebonden implementaties van containergroepen, wat betekent dat het exemplaar is vastgemaakt aan een specifieke, zelf-geselecteerde beschikbaarheidszone. De beschikbaarheidszone wordt opgegeven op het niveau van de containergroep. Containers binnen een containergroep kunnen geen unieke beschikbaarheidszones hebben. Als u de beschikbaarheidszone van de containergroep wilt wijzigen, moet u de containergroep verwijderen en een andere containergroep maken met de nieuwe beschikbaarheidszone.
Vereisten
- Zonegebonden containergroepimplementaties worden ondersteund in de meeste regio's waar ACI beschikbaar is voor Linux- en Windows Server 2019-containergroepen. Zie regio's en beschikbaarheid van resources voor meer informatie.
- Als u Azure CLI gebruikt, controleert u of de versie
2.30.0
of hoger is geïnstalleerd. - Als u PowerShell gebruikt, controleert u of de versie
2.1.1-preview
of hoger is geïnstalleerd. - Als u de Java SDK gebruikt, controleert u of de versie
2.9.0
of hoger is geïnstalleerd. - Ondersteuning voor beschikbaarheidszones is alleen beschikbaar in de ACI API-versie
09-01-2021
of hoger.
Belangrijk
Containergroepen met GPU-resources bieden momenteel geen ondersteuning voor beschikbaarheidszones.
Opnieuw implementeren en migreren van beschikbaarheidszone
Als u de beschikbaarheidszone van de containergroep wilt wijzigen, moet u de containergroep verwijderen en een andere containergroep maken met de nieuwe beschikbaarheidszone.
Een resource maken waarvoor beschikbaarheidszone is ingeschakeld
Als u een Container Instance-resource wilt maken waarvoor beschikbaarheidszone is ingeschakeld, moet u een containergroep implementeren met behulp van een ARM-sjabloon (Azure Resource Manager).
Notitie
Voorbeelden in dit artikel zijn opgemaakt voor de Bash-shell. Als u liever een andere shell gebruikt, past u de regelvervolgtekens dienovereenkomstig aan.
Een container implementeren met ARM:
Kopieer en plak de volgende JSON in een nieuw bestand met de naam
azuredeploy.json
. Met deze voorbeeldsjabloon wordt een containergroep met één container geïmplementeerd in beschikbaarheidszone 1 in VS - oost.{ "$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]" } } }
Maak een resourcegroep met de opdracht az group create :
az group create --name myResourceGroup --location eastus
Implementeer de sjabloon met de opdracht az deployment group create :
az deployment group create \ --resource-group myResourceGroup \ --template-file azuredeploy.json
Als u wilt controleren of de containergroep is geïmplementeerd in een beschikbaarheidszone, bekijkt u de details van de containergroep met de opdracht az container show :
az container show --name acilinuxpublicipcontainergroup --resource-group myResourceGroup
Ondersteuning voor zonegebonden failover
Een containergroep met containerinstanties wordt toegewezen aan één beschikbaarheidszone. Als gevolg hiervan wordt deze groep containerinstanties niet beïnvloed door een storing die optreedt in een andere beschikbaarheidszone van dezelfde regio
Als er echter een storing optreedt in de beschikbaarheidszone van de containergroep, kunt u downtime verwachten voor alle containerinstanties binnen die groep.
Om downtime van containerinstanties te voorkomen, raden we u aan minimaal twee containergroepen te maken in twee verschillende beschikbaarheidszones in een bepaalde regio. Dit zorgt ervoor dat de resources van uw containerinstantie actief zijn wanneer er sprake is van een storing in één zone in die regio.
Herstel na noodgeval
Wanneer een hele Azure-regio of -datacenter downtime ondervindt, moet uw bedrijfskritieke code blijven verwerken in een andere regio. Azure Container Instances die zijn geïmplementeerd met zonegebonden configuratie worden uitgevoerd in een specifieke zone binnen een specifieke regio. Er is geen ingebouwde redundantie beschikbaar. Om verlies van uitvoering tijdens storingen in de hele regio te voorkomen, kunt u de containerinstanties in andere regio's redundant implementeren.