Affidabilità in Istanze di Azure Container

Importante

Questa funzionalità è attualmente disponibile solo in anteprima. Le anteprime vengono rese disponibili a condizione che l'utente accetti le condizioni supplementari per l'utilizzo.

Questo articolo descrive il supporto dell'affidabilità in Istanze di Azure Container (ACI) e illustra sia la resilienza all'interno dell'area con le zone di disponibilità che le informazioni sul ripristino di emergenza. Per una panoramica più dettagliata dell'affidabilità in Azure, vedere Affidabilità di Azure.

Supporto della zona di disponibilità

Le zone di disponibilità di Azure sono costituite da almeno tre gruppi fisicamente separati di data center all'interno di ogni area di Azure. I data center all'interno di ogni zona sono dotati di alimentazione, raffreddamento e infrastruttura di rete indipendenti. Le zone di disponibilità sono progettate in modo che, in caso di errore in una zona locale, i servizi regionali, la capacità e la disponibilità elevata della zona interessata siano supportati dalle altre due zone.

Gli errori possono essere di tipo hardware o software oppure correlati a eventi come terremoti, inondazioni e incendi. La tolleranza agli errori viene conseguita mediante la ridondanza e l'isolamento logico dei servizi di Azure. Per informazioni più dettagliate sulle zone di disponibilità in Azure, vedere Aree e zone di disponibilità.

I servizi abilitati per le zone di disponibilità sono progettati per fornire il livello adeguato di affidabilità e flessibilità. Tali servizi possono essere configurati in due modi. Possono essere con ridondanza della zona, che prevede la replica automatica tra le zone, o a zona, con istanze aggiunte in una zona specifica. È anche possibile combinare questi approcci. Per altre informazioni sulle architetture a zona e con ridondanza della zona, vedere Raccomandazioni per l'uso delle zone e delle aree di disponibilità.

Istanze di Azure Container supporta le distribuzioni di gruppi di contenitori di zona, ovvero l'istanza viene aggiunta a una zona di disponibilità specifica e selezionata automaticamente. La zona di disponibilità viene specificata a livello di gruppo di contenitori. I contenitori all'interno di un gruppo di contenitori non possono avere zone di disponibilità univoche. Per modificare la zona di disponibilità del gruppo di contenitori, è necessario eliminare il gruppo di contenitori e creare un altro gruppo di contenitori con la nuova zona di disponibilità.

Prerequisiti

Importante

Questa funzionalità non è attualmente disponibile per portale di Azure.

  • Le distribuzioni di gruppi di contenitori di zona sono supportate nella maggior parte delle aree in cui ACI è disponibile per i gruppi di contenitori Linux e Windows Server 2019. Per informazioni dettagliate, vedere Aree geografiche e disponibilità delle risorse.
  • Se si usa l'interfaccia della riga di comando di Azure, verificare che sia installata la versione 2.30.0 o successiva.
  • Se si usa PowerShell, verificare che sia installata la versione 2.1.1-preview o successiva.
  • Se si usa Java SDK, verificare che sia installata la versione o una versione 2.9.0 successiva.
  • Il supporto della zona di disponibilità è disponibile solo nella versione 09-01-2021 dell'API ACI o versioni successive.

Importante

I gruppi di contenitori con risorse GPU non supportano attualmente le zone di disponibilità.

Ridistribuzione e migrazione della zona di disponibilità

Per modificare la zona di disponibilità del gruppo di contenitori, è necessario eliminare il gruppo di contenitori e creare un altro gruppo di contenitori con la nuova zona di disponibilità.

Creare una risorsa con la zona di disponibilità abilitata

Per creare una risorsa dell'istanza di contenitore con la zona di disponibilità abilitata, è necessario distribuire un gruppo di contenitori usando un modello di Azure Resource Manager (ARM).

Nota

Gli esempi in questo articolo sono formattati per la shell Bash. Se si preferisce un'altra shell, modificare di conseguenza i caratteri di continuazione della riga.

Per distribuire un contenitore con ARM:

  1. Copiare il codice JSON seguente in un nuovo file denominato azuredeploy.json. Questo modello di esempio distribuisce un gruppo di contenitori con un singolo contenitore nella zona di disponibilità 1 negli Stati Uniti orientali.

    {
        "$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. Creare un gruppo di risorse con il comando [az group create][availability-zones-group-create]:

    az group create --name myResourceGroup --location eastus
    
  3. Distribuire il modello con il comando az deployment group create :

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Per verificare che il gruppo di contenitori sia stato distribuito correttamente in una zona di disponibilità, visualizzare i dettagli del gruppo di contenitori con il comando az container show :

    az containershow --name acilinuxcontainergroup --resource-group myResourceGroup
    

Supporto del failover a livello di zona

Un gruppo di contenitori di istanze di contenitore viene assegnato a una singola zona di disponibilità. Di conseguenza, il gruppo di istanze del contenitore non sarà interessato da un'interruzione che si verifica in qualsiasi altra zona di disponibilità della stessa area

Se, tuttavia, si verifica un'interruzione nella zona di disponibilità del gruppo di contenitori, è possibile prevedere tempi di inattività per tutte le istanze del contenitore all'interno di tale gruppo.

Per evitare tempi di inattività dell'istanza del contenitore, è consigliabile creare almeno due gruppi di contenitori in due zone di disponibilità diverse in una determinata area. Ciò garantisce che le risorse dell'istanza del contenitore siano operative ogni volta che si verifica un'interruzione di qualsiasi singola zona in tale area.

Ripristino di emergenza

Quando un'intera area di Azure o un data center riscontra tempi di inattività, il codice cruciale deve continuare l'elaborazione in un'area diversa. Istanze di Azure Container distribuita con la configurazione di zona eseguita in una zona specifica all'interno di un'area specifica. Non è disponibile alcuna ridondanza predefinita. Per evitare la perdita di esecuzione durante interruzioni a livello di area, è possibile distribuire in modo ridondante le istanze del contenitore in altre aree.

Passaggi successivi