Bagikan melalui


Keandalan dalam Azure Container Instances

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 adalah grup pusat data yang terpisah secara fisik di setiap wilayah Azure. Ketika satu zona gagal, layanan dapat melakukan failover ke salah satu zona yang tersisa.

Untuk informasi selengkapnya tentang zona ketersediaan di Azure, lihat Apa itu zona 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

  • 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:

    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 container show --name acilinuxpublicipcontainergroup --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