Keandalan dalam Azure Container Instances

Penting

Fitur ini masih dalam mode pratinjau. Pratinjau disediakan untuk Anda dengan syarat Anda menyetujui ketentuan penggunaan tambahan.

Artikel ini menjelaskan dukungan keandalan di Azure Container Instances (ACI) dan mencakup ketahanan intra-regional dengan zona ketersediaan dan informasi tentang Pemulihan Bencana. Untuk gambaran umum keandalan yang lebih rinci di Azure, lihat Keandalan Azure.

Dukungan zona ketersediaan

Zona ketersediaan Azure adalah setidaknya tiga grup pusat data yang terpisah secara fisik dalam setiap wilayah Azure. Pusat data dalam setiap zona dilengkapi dengan infrastruktur daya, pendinginan, dan jaringan independen. Dalam kasus kegagalan zona lokal, zona ketersediaan dirancang sehingga jika satu zona terpengaruh, layanan regional, kapasitas, dan ketersediaan tinggi didukung oleh dua zona yang tersisa.

Kegagalan dapat berkisar dari kegagalan perangkat lunak dan perangkat keras hingga peristiwa seperti gempa bumi, banjir, dan kebakaran. Toleransi terhadap kegagalan dicapai dengan redundansi dan isolasi logis layanan Azure. Untuk informasi selengkapnya tentang zona ketersediaan di Azure, lihat Wilayah dan zona ketersediaan.

Layanan berkemampuan zona ketersediaan Azure dirancang untuk memberikan tingkat keandalan dan fleksibilitas yang tepat. Mereka dapat dikonfigurasi dalam dua cara. Mereka dapat berupa zona redundan,dengan replikasi otomatis di seluruh zona, atau zonal, dengan instans yang disematkan ke zona tertentu. Anda juga dapat menggabungkan pendekatan ini. Untuk informasi selengkapnya tentang arsitektur zonal vs. zona-redundan, lihat Rekomendasi untuk menggunakan zona dan wilayah ketersediaan.

Azure Container Instances mendukung penyebaran grup kontainer zonal , yang berarti instans disematkan ke zona ketersediaan tertentu yang dipilih sendiri. Zona ketersediaan ditentukan pada tingkat grup kontainer. Kontainer dalam grup kontainer tidak dapat memiliki zona ketersediaan unik. Untuk mengubah zona ketersediaan grup kontainer, Anda harus menghapus grup kontainer dan membuat grup kontainer lain dengan zona ketersediaan baru.

Prasyarat

Penting

Fitur ini saat ini tidak tersedia untuk portal Microsoft Azure.

  • Penyebaran grup penampung zona didukung di sebagian besar wilayah tempat ACI tersedia untuk grup kontainer Linux dan Windows Server 2019. Untuk detailnya, lihat Wilayah dan ketersediaan sumber daya.
  • Jika menggunakan Azure CLI, pastikan versi 2.30.0 atau versi yang lebih baru terpasang.
  • Jika menggunakan PowerShell, pastikan versi 2.1.1-preview atau versi yang lebih baru terpasang.
  • Jika menggunakan Java SDK, pastikan versi 2.9.0 atau versi yang lebih baru terpasang.
  • Dukungan zona ketersediaan hanya tersedia pada versi ACI API 09-01-2021 atau versi yang lebih baru.

Penting

Grup kontainer dengan sumber daya GPU tidak mendukung zona ketersediaan saat ini.

Penyebaran ulang dan migrasi zona ketersediaan

Untuk mengubah zona ketersediaan grup kontainer, Anda harus menghapus grup kontainer dan membuat grup kontainer lain dengan zona ketersediaan baru.

Membuat sumber daya dengan zona ketersediaan diaktifkan

Untuk membuat sumber daya Instans Kontainer dengan zona ketersediaan diaktifkan, Anda harus menyebarkan grup kontainer menggunakan templat Azure Resource Manager (ARM).

Catatan

Contoh dalam artikel ini diformat untuk shell Bash. Jika Anda lebih suka shell lain, sesuaikan karakter kelanjutan baris yang sesuai.

Untuk menyebarkan kontainer dengan ARM:

  1. Salin-tempel JSON berikut ke dalam file baru bernama azuredeploy.json. Templat contoh ini menyebarkan grup kontainer dengan satu kontainer ke zona ketersediaan 1 di US Timur.

    {
        "$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. Buat grup sumber daya dengan perintah [az group create][availability-zones-group-create]:

    az group create --name myResourceGroup --location eastus
    
  3. Sebarkan templat dengan perintah az deployment group create:

    az deployment group create \
      --resource-group myResourceGroup \
      --template-file azuredeploy.json
    
  4. Untuk memverifikasi grup kontainer yang berhasil digunakan ke zona ketersediaan, lihat detail grup kontainer dengan perintah az container show:

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

Dukungan failover zonal

Grup kontainer instans kontainer ditetapkan ke satu zona ketersediaan. Akibatnya, grup instans kontainer tersebut tidak akan terpengaruh oleh pemadaman yang terjadi di zona ketersediaan lain dari wilayah yang sama

Namun, jika pemadaman terjadi di zona ketersediaan grup kontainer, Anda dapat mengharapkan waktu henti untuk semua instans kontainer dalam grup tersebut.

Untuk menghindari waktu henti instans kontainer, kami sarankan Anda membuat minimal dua grup kontainer di dua zona ketersediaan yang berbeda di wilayah tertentu. Ini memastikan bahwa sumber daya instans kontainer Anda aktif dan berjalan setiap kali satu zona di wilayah tersebut mengalami pemadaman.

Pemulihan dari bencana

Saat seluruh wilayah atau pusat data Azure mengalami waktu henti, kode misi penting Anda perlu terus diproses di wilayah yang berbeda. Azure Container Instances yang disebarkan dengan konfigurasi zona berjalan di zona tertentu dalam wilayah tertentu. Tidak ada redundansi built-in yang tersedia. Untuk menghindari hilangnya eksekusi selama pemadaman luas wilayah, Anda dapat menyebarkan instans kontainer secara berlebihan di wilayah lain.

Langkah berikutnya