Spolehlivost ve službě Azure Container Instances

Důležité

Tato funkce je aktuálně dostupná jako ukázková verze. Verze Preview vám zpřístupňujeme pod podmínkou, že budete souhlasit s dodatečnými podmínkami použití.

Tento článek popisuje podporu spolehlivosti ve službě Azure Container Instances (ACI) a popisuje odolnost uvnitř oblastí s zónami dostupnosti a informacemi o zotavení po havárii. Podrobnější přehled spolehlivosti v Azure najdete v tématu Spolehlivost Azure.

Podpora zón dostupnosti

Zóny dostupnosti Azure jsou aspoň tři fyzicky oddělené skupiny datacenter v rámci každé oblasti Azure. Datová centra v každé zóně jsou vybavena nezávislou infrastrukturou napájení, chlazení a sítě. V případě selhání místní zóny jsou zóny dostupnosti navrženy tak, aby v případě ovlivnění jedné zóny, regionální služby, kapacity a vysoké dostupnosti podporovaly zbývající dvě zóny.

Selhání můžou být v rozsahu od selhání softwaru a hardwaru až po události, jako jsou zemětřesení, záplavy a požáry. Odolnost vůči selháním se dosahuje redundancí a logickou izolací služeb Azure. Podrobnější informace o zónách dostupnosti v Azure najdete v tématu Oblasti a zóny dostupnosti.

Služby s podporou zón dostupnosti Azure jsou navržené tak, aby poskytovaly správnou úroveň spolehlivosti a flexibility. Dají se nakonfigurovat dvěma způsoby. Můžou být buď zónově redundantní, s automatickou replikací napříč zónami, nebo zónově, s instancemi připnutými ke konkrétní zóně. Tyto přístupy můžete také kombinovat. Další informace o zónové a zónově redundantní architektuře najdete v tématu Doporučení pro použití zón dostupnosti a oblastí.

Služba Azure Container Instances podporuje nasazení zónových skupin kontejnerů, což znamená, že je instance připnutá ke konkrétní zóně dostupnosti s vlastním výběrem. Zóna dostupnosti se zadává na úrovni skupiny kontejnerů. Kontejnery ve skupině kontejnerů nemohou mít jedinečné zóny dostupnosti. Pokud chcete změnit zónu dostupnosti skupiny kontejnerů, musíte odstranit skupinu kontejnerů a vytvořit další skupinu kontejnerů s novou zónou dostupnosti.

Požadavky

Důležité

Tato funkce není aktuálně k dispozici pro Azure Portal.

  • Nasazení zónových skupin kontejnerů se podporují ve většině oblastí, kde je ACI k dispozici pro skupiny kontejnerů s Linuxem a Windows Serverem 2019. Podrobnosti najdete v tématu Oblasti a dostupnost prostředků.
  • Pokud používáte Azure CLI, ujistěte se, že je nainstalovaná verze 2.30.0 nebo novější.
  • Pokud používáte PowerShell, ujistěte se, že je nainstalovaná verze 2.1.1-preview nebo novější.
  • Pokud používáte sadu Java SDK, ujistěte se, že je nainstalovaná verze 2.9.0 nebo novější.
  • Podpora zón dostupnosti je dostupná jenom ve verzi 09-01-2021 rozhraní API ACI nebo novější.

Důležité

Skupiny kontejnerů s prostředky GPU v tuto chvíli nepodporují zóny dostupnosti.

Opětovné nasazení a migrace zóny dostupnosti

Pokud chcete změnit zónu dostupnosti skupiny kontejnerů, musíte odstranit skupinu kontejnerů a vytvořit další skupinu kontejnerů s novou zónou dostupnosti.

Vytvoření prostředku s povolenou zónou dostupnosti

Pokud chcete vytvořit prostředek instance kontejneru s povolenou zónou dostupnosti, budete muset nasadit skupinu kontejnerů pomocí šablony Azure Resource Manageru (ARM).

Poznámka:

Příklady v tomto článku jsou formátovány pro prostředí Bash. Pokud dáváte přednost jinému prostředí, upravte znaky pokračování řádku odpovídajícím způsobem.

Nasazení kontejneru pomocí ARM:

  1. Zkopírujte následující JSON do nového souboru s názvem azuredeploy.json. Tato ukázková šablona nasadí skupinu kontejnerů s jedním kontejnerem do zóny dostupnosti 1 v oblasti USA – východ.

    {
        "$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. Vytvořte skupinu prostředků pomocí příkazu [az group create][availability-zones-group-create]:

    az group create --name myResourceGroup --location eastus
    
  3. Nasaďte šablonu pomocí příkazu az deployment group create :

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Pokud chcete ověřit, že se skupina kontejnerů úspěšně nasadila do zóny dostupnosti, zobrazte podrobnosti skupiny kontejnerů pomocí příkazu az container show :

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

Podpora zónových převzetí služeb při selhání

Skupina kontejnerů instancí kontejnerů je přiřazená k jedné zóně dostupnosti. V důsledku toho nebude mít tato skupina instancí kontejnerů vliv na výpadek, ke kterému dojde v jakékoli jiné zóně dostupnosti stejné oblasti.

Pokud ale dojde k výpadku v zóně dostupnosti skupiny kontejnerů, můžete očekávat výpadky pro všechny instance kontejneru v rámci této skupiny.

Pokud se chcete vyhnout výpadkům instance kontejneru, doporučujeme v dané oblasti vytvořit minimálně dvě skupiny kontejnerů ve dvou různých zónách dostupnosti. Tím zajistíte, že jsou vaše prostředky instance kontejneru spuštěné, kdykoli dojde k výpadku jakékoli jedné zóny v dané oblasti.

Zotavení po havárii

Pokud dojde k výpadku celé oblasti Nebo datacentra Azure, je potřeba, aby váš kritický kód pokračoval ve zpracování v jiné oblasti. Služba Azure Container Instances nasazená se zónovou konfigurací běží v konkrétní zóně v konkrétní oblasti. Není k dispozici žádná integrovaná redundance. Abyste se vyhnuli ztrátě spuštění během výpadků v celé oblasti, můžete instance kontejneru redundantně nasadit v jiných oblastech.

Další kroky