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
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]" } } }
Erstellen Sie mit dem Befehl [az group create][availability-zones-group-create] eine Ressourcengruppe:
az group create --name myResourceGroup --location eastus
Stellen Sie die Vorlage mit dem Befehl az deployment group create bereit:
az deployment group create \ --resource-group myResourceGroup \ --template-file azuredeploy.json
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.