Betrouwbaarheid in Azure Container Instances

Belangrijk

Deze functie is momenteel beschikbaar in preview. Previews worden voor u beschikbaar gesteld op voorwaarde dat u akkoord gaat met de aanvullende gebruiksvoorwaarden.

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

Azure-beschikbaarheidszones zijn ten minste drie fysiek afzonderlijke groepen datacenters binnen elke Azure-regio. Datacenters binnen elke zone zijn uitgerust met onafhankelijke energie-, koelings- en netwerkinfrastructuur. In het geval van een storing in een lokale zone worden beschikbaarheidszones zodanig ontworpen dat als de ene zone wordt beïnvloed, regionale services, capaciteit en hoge beschikbaarheid worden ondersteund door de resterende twee zones.

Fouten kunnen variëren van software- en hardwarefouten tot gebeurtenissen zoals aardbevingen, overstromingen en brand. Tolerantie voor fouten wordt bereikt met redundantie en logische isolatie van Azure-services. Zie Regio's en beschikbaarheidszones voor meer informatie over beschikbaarheidszones in Azure.

Services met azure-beschikbaarheidszones zijn ontworpen om het juiste niveau van betrouwbaarheid en flexibiliteit te bieden. Ze kunnen op twee manieren worden geconfigureerd. Ze kunnen zone-redundant zijn, met automatische replicatie tussen zones of zonegebonden, waarbij exemplaren zijn vastgemaakt aan een specifieke zone. U kunt deze benaderingen ook combineren. Zie Aanbevelingen voor meer informatie over zone-redundante versus zone-redundante architectuur voor het gebruik van beschikbaarheidszones en regio's.

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

Belangrijk

Deze functie is momenteel niet beschikbaar voor Azure Portal.

  • 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:

  1. 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]"
            }
        }
    }
    
  2. Maak een resourcegroep met de opdracht [az group create][availability-zones-group-create]:

    az group create --name myResourceGroup --location eastus
    
  3. Implementeer de sjabloon met de opdracht az deployment group create :

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. 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 containershow --name acilinuxcontainergroup --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.

Volgende stappen