Zuverlässigkeit in Azure Container Instances

Wichtig

Diese Funktion steht derzeit als Vorschau zur Verfügung. Vorschauversionen werden Ihnen zur Verfügung gestellt, wenn Sie die zusätzlichen Nutzungsbedingungen akzeptieren.

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

Azure-Verfügbarkeitszonen sind mindestens drei physisch getrennte Gruppen von Rechenzentren innerhalb jeder Azure-Region. Die Rechenzentren innerhalb jeder Zone sind mit unabhängiger Stromversorgung, Kühlung und Netzwerkinfrastruktur ausgestattet. Bei einem Fehler in der lokalen Zone sind Verfügbarkeitszonen so konzipiert, dass regionale Dienste, Kapazität und Hochverfügbarkeit von den verbleibenden beiden Zonen unterstützt werden, wenn eine Zone betroffen ist.

Ausfälle können von Software- und Hardwareausfällen bis hin zu Ereignissen wie Erdbeben, Überflutungen und Bränden reichen. Fehlertoleranz wird durch Redundanz und logische Isolierung von Azure-Diensten erreicht. Ausführlichere Informationen zu Verfügbarkeitszonen in Azure finden Sie unter Regionen und Verfügbarkeitszonen.

Azure-Dienste mit Unterstützung von Verfügbarkeitszonen bieten das richtige Maß an Zuverlässigkeit und Flexibilität. Für die Konfiguration gibt es zwei Möglichkeiten. Sie können entweder zonenredundant mit automatischer zonenübergreifender Replikation oder zonenbasiert mit Instanzen sein, die an eine bestimmte Zone angeheftet werden. Sie können diese Ansätze auch kombinieren. Weitere Informationen zur zonalen im Vergleich zur zonenredundanten Architektur finden Sie unter Empfehlungen für die Verwendung von Verfügbarkeitszonen und Regionen.

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

Wichtig

Dieses Feature ist derzeit für das Azure-Portal nicht verfügbar.

  • 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][availability-zones-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 containershow --name acilinuxcontainergroup --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