Aracılığıyla paylaş


Azure Container Instances'ta güvenilirlik

Önemli

Bu özellik şu anda önizlemededir. Önizlemeler, ek kullanım koşullarını kabul etmeniz şartıyla kullanımınıza sunulur.

Bu makalede Azure Container Instances'ta (ACI) güvenilirlik desteği açıklanır ve hem kullanılabilirlik alanlarıyla bölgesel dayanıklılık hem de Olağanüstü Durum Kurtarma ile ilgili bilgiler ele alınmaktadır. Azure'da güvenilirlik hakkında daha ayrıntılı bir genel bakış için bkz . Azure güvenilirliği.

Kullanılabilirlik alanı desteği

Azure kullanılabilirlik alanları, her Azure bölgesindeki en az üç fiziksel ayrı veri merkezi grubudur. Her bölgedeki veri merkezleri bağımsız güç, soğutma ve ağ altyapısı ile donatılmıştır. Yerel bölge hatası durumunda kullanılabilirlik alanları, bir bölge etkileniyorsa, bölgesel hizmetler, kapasite ve yüksek kullanılabilirlik kalan iki bölge tarafından desteklenecek şekilde tasarlanmıştır.

Hatalar, yazılım ve donanım arızalarından deprem, sel ve yangın gibi olaylara kadar değişebilir. Azure hizmetlerinin yedekliliği ve mantıksal yalıtımı ile hatalara dayanıklılık elde edilir. Azure'daki kullanılabilirlik alanları hakkında daha ayrıntılı bilgi için bkz . Bölgeler ve kullanılabilirlik alanları.

Azure kullanılabilirlik alanlarının etkinleştirildiği hizmetler, doğru güvenilirlik ve esneklik düzeyini sağlayacak şekilde tasarlanmıştır. Bunlar iki şekilde yapılandırılabilir. Alanlar arasında otomatik çoğaltma ile alanlar arası yedekli veya belirli bir bölgeye sabitlenmiş örneklerle bölgesel olabilir. Bu yaklaşımları da birleştirebilirsiniz. Bölgesel ve alanlar arası yedekli mimari hakkında daha fazla bilgi için bkz. kullanılabilirlik alanlarını ve bölgelerini kullanmak için Öneriler.

Azure Container Instances, bölgesel kapsayıcı grubu dağıtımlarını destekler; bu da örneğin belirli, kendi kendine seçilen bir kullanılabilirlik alanına sabitlendiği anlamına gelir. Kullanılabilirlik alanı kapsayıcı grubu düzeyinde belirtilir. Kapsayıcı grubu içindeki kapsayıcıların benzersiz kullanılabilirlik alanları olamaz. Kapsayıcı grubunuzun kullanılabilirlik bölgesini değiştirmek için kapsayıcı grubunu silmeniz ve yeni kullanılabilirlik alanıyla başka bir kapsayıcı grubu oluşturmanız gerekir.

Önkoşullar

Önemli

Bu özellik şu anda Azure portalında kullanılamıyor.

  • Bölgesel kapsayıcı grubu dağıtımları, Linux ve Windows Server 2019 kapsayıcı grupları için ACI'nin kullanılabildiği çoğu bölgede desteklenir. Ayrıntılar için bkz . Bölgeler ve kaynak kullanılabilirliği.
  • Azure CLI kullanıyorsanız sürümün veya sonraki bir sürümün 2.30.0 yüklü olduğundan emin olun.
  • PowerShell kullanıyorsanız sürümün veya sonraki sürümün 2.1.1-preview yüklü olduğundan emin olun.
  • Java SDK'sını kullanıyorsanız sürümün veya sonraki sürümün 2.9.0 yüklü olduğundan emin olun.
  • Kullanılabilirlik alanı desteği yalnızca ACI API sürümü veya sonraki sürümlerde 09-01-2021 kullanılabilir.

Önemli

GPU kaynaklarına sahip kapsayıcı grupları şu anda kullanılabilirlik alanlarını desteklemez.

Kullanılabilirlik alanı yeniden dağıtımı ve geçişi

Kapsayıcı grubunuzun kullanılabilirlik bölgesini değiştirmek için kapsayıcı grubunu silmeniz ve yeni kullanılabilirlik alanıyla başka bir kapsayıcı grubu oluşturmanız gerekir.

Kullanılabilirlik alanı etkin bir kaynak oluşturma

Kullanılabilirlik alanı etkinleştirilmiş bir Kapsayıcı Örneği kaynağı oluşturmak için Azure Resource Manager (ARM) şablonu kullanarak bir kapsayıcı grubu dağıtmanız gerekir.

Not

Bu makaledeki örnekler Bash kabuğu için biçimlendirilmiştir. Başka bir kabuk tercih ediyorsanız, satır devamı karakterlerini buna göre ayarlayın.

ARM ile kapsayıcı dağıtmak için:

  1. Aşağıdaki JSON dosyasını kopyalayıp adlı azuredeploy.jsonyeni bir dosyaya yapıştırın. Bu örnek şablon, Doğu ABD'deki kullanılabilirlik alanı 1'e tek bir kapsayıcı içeren bir kapsayıcı grubu dağıtır.

    {
        "$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. [az group create][availability-zones-group-create] komutuyla bir kaynak grubu oluşturun:

    az group create --name myResourceGroup --location eastus
    
  3. şablonu az deployment group create komutuyla dağıtın:

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Kapsayıcı grubunun bir kullanılabilirlik alanına başarıyla dağıtıldığından emin olmak için az container show komutuyla kapsayıcı grubu ayrıntılarını görüntüleyin:

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

Bölgesel yük devretme desteği

Kapsayıcı örneklerinden oluşan bir kapsayıcı grubu tek bir kullanılabilirlik alanına atanır. Sonuç olarak, bu kapsayıcı örnekleri grubu aynı bölgenin başka bir kullanılabilirlik alanında oluşan bir kesintiden etkilenmez

Ancak, kapsayıcı grubunun kullanılabilirlik alanında bir kesinti oluşursa, bu grup içindeki tüm kapsayıcı örnekleri için kapalı kalma süresi bekleyebilirsiniz.

Kapsayıcı örneği kapalı kalma süresini önlemek için, belirli bir bölgedeki iki farklı kullanılabilirlik alanında en az iki kapsayıcı grubu oluşturmanızı öneririz. Bu, söz konusu bölgedeki tek bir bölgede kesinti yaşandığında kapsayıcı örneği kaynaklarınızın çalışır durumda olmasını sağlar.

Olağanüstü durum kurtarma

Azure bölgesinin veya veri merkezinin tamamı kapalı kalma süresiyle karşılaştığında görev açısından kritik kodunuzun farklı bir bölgede işlemeye devam etmesi gerekir. Bölgesel yapılandırmayla dağıtılan Azure Container Instances, belirli bir bölge içindeki belirli bir bölgede çalışır. Kullanılabilir yerleşik yedeklilik yoktur. Bölge genelinde kesintiler sırasında yürütme kaybını önlemek için kapsayıcı örneklerini diğer bölgelerde yedekli olarak dağıtabilirsiniz.

Sonraki adımlar