Freigeben über


Zuverlässigkeit in Azure Container Instances

In diesem Artikel wird die Zuverlässigkeitsunterstützung in Azure Container Instances (ACI) beschrieben, wobei sowohl intraregionale Resilienz mittels Verfügbarkeitszonen als auch Informationen zur Notfallwiederherstellung behandelt werden. Eine ausführlichere Übersicht über die Zuverlässigkeit in Azure finden Sie unter Azure-Zuverlässigkeit.

Unterstützung für Verfügbarkeitszonen

Verfügbarkeitszonen sind physisch getrennte Gruppen von Rechenzentren innerhalb jeder Azure-Region. Wenn eine Zone ausfällt, erfolgt ein Failover der Dienste zu einer der verbleibenden Zonen.

Weitere Informationen zu Verfügbarkeitszonen in Azure finden Sie unter Was sind Verfügbarkeitszonen?.

Azure Container Instances unterstützt zonale Containergruppenbereitstellungen. Das bedeutet, dass die Instanz an eine bestimmte, selbst ausgewählte Verfügbarkeitszone angeheftet ist. Die Verfügbarkeitszone wird auf Containergruppenebene angegeben. Container innerhalb einer Containergruppe können keine eindeutigen Verfügbarkeitszonen haben. Um die Verfügbarkeitszone Ihrer Containergruppe zu ändern, müssen Sie die Containergruppe löschen und eine weitere Containergruppe mit der neuen Verfügbarkeitszone erstellen.

Voraussetzungen

  • Zonale Containergruppenbereitstellungen werden in den meisten Regionen unterstützt, in denen ACI für Linux- und Windows Server 2019-Containergruppen verfügbar ist. Details hierzu finden Sie unter Verfügbarkeit von Regionen und Ressourcen.
  • Wenn Sie Azure CLI verwenden, stellen Sie sicher, dass Version 2.30.0 oder höher installiert ist.
  • Wenn Sie PowerShell verwenden, stellen Sie sicher, dass Version 2.1.1-preview oder höher installiert ist.
  • Wenn Sie das Java-SDK verwenden, stellen Sie sicher, dass Version 2.9.0 oder höher installiert ist.
  • Die Unterstützung von Verfügbarkeitszonen ist nur für die ACI-API-Version 09-01-2021 oder höher verfügbar.

Wichtig

Containergruppen mit GPU-Ressourcen unterstützen derzeit keine Verfügbarkeitszonen.

Erneute Bereitstellung und Migration von Verfügbarkeitszonen

Um die Verfügbarkeitszone Ihrer Containergruppe zu ändern, müssen Sie die Containergruppe löschen und eine weitere Containergruppe mit der neuen Verfügbarkeitszone erstellen.

Erstellen einer Ressource mit aktivierter Verfügbarkeitszone

Um eine Containerinstanzressource mit aktivierter Verfügbarkeitszone zu erstellen, müssen Sie eine Containergruppe mithilfe einer ARM-Vorlage (Azure Resource Manager) bereitstellen.

Hinweis

Beispiele in diesem Artikel sind für die Ausführung in der Bash-Shell formatiert. Wenn Sie eine andere Shell bevorzugen, passen Sie die Zeilenfortsetzungszeichen entsprechend an.

So stellen Sie einen Container mit ARM bereit

  1. Kopieren Sie den folgenden JSON-Code, und fügen Sie ihn in eine neue Datei namens azuredeploy.json ein. Diese Beispielvorlage stellt eine Containergruppe mit einem einzelnen Container in der Verfügbarkeitszone 1 in der Region „USA, Osten“ bereit.

    {
        "$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. Erstellen Sie mit dem Befehl az group create eine Ressourcengruppe:

    az group create --name myResourceGroup --location eastus
    
  3. Stellen Sie die Vorlage mit dem Befehl az deployment group create bereit:

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Um zu überprüfen, ob die Containergruppe erfolgreich in einer Verfügbarkeitszone bereitgestellt wurde, zeigen Sie die Details der Containergruppe mit dem Befehl az container show an:

    az container show --name acilinuxpublicipcontainergroup --resource-group myResourceGroup
    

Unterstützung für zonales Failover

Eine Containergruppe von Containerinstanzen wird einer einzelnen Verfügbarkeitszone zugewiesen. Infolgedessen ist diese Gruppe von Containerinstanzen nicht von einem Ausfall betroffen, der in einer anderen Verfügbarkeitszone derselben Region auftritt.

Wenn jedoch in der Verfügbarkeitszone der Containergruppe ein Ausfall auftritt, können Sie mit Ausfallzeiten für alle Containerinstanzen innerhalb dieser Gruppe rechnen.

Um Ausfallzeiten von Containerinstanzen zu vermeiden, empfiehlt es sich, mindestens zwei Containergruppen in zwei verschiedenen Verfügbarkeitszonen in einer bestimmten Region zu erstellen. Dadurch wird sichergestellt, dass Ihre Containerinstanzressourcen immer dann ausgeführt werden, wenn eine einzelne Zone in dieser Region ausfällt.

Notfallwiederherstellung

Wenn ganze Azure-Regionen oder Rechenzentren ausfallen, muss Ihr unternehmenskritischer Code in einer anderen Region weiterverarbeitet werden. Der Azure Container Instances-Dienst, der mit einer zonalen Konfiguration bereitgestellt werden, wird in einer bestimmten Zone innerhalb einer bestimmten Region ausgeführt. Es ist keine integrierte Redundanz verfügbar. Um Ausführungsverluste bei regionsweiten Ausfällen zu vermeiden, können Sie die Containerinstanzen redundant in anderen Regionen bereitstellen.

Nächste Schritte