Pemberitahuan penghentian untuk instans kumpulan skala komputer virtual Azure

Instans kumpulan skala dapat memilih untuk menerima pemberitahuan penghentian instans dan mengatur batas waktu tunda yang telah ditentukan sebelumnya untuk operasi penghentian. Pemberitahuan penghentian dikirim melalui Azure Metadata Service – Aktivitas Terjadwal, yang menyediakan pemberitahuan untuk dan penundaan operasi yang berdampak seperti reboot dan redeploy. Solusi menambahkan aktivitas lain - Hentikan - ke daftar Aktivitas Terjadwal, dan penundaan terkait dari aktivitas yang dihentikan akan tergantung pada batas penundaan seperti yang ditentukan oleh pengguna dalam konfigurasi model kumpulan skala mereka.

Setelah didaftarkan ke fitur, instans kumpulan skala tidak perlu menunggu batas waktu yang ditentukan berakhir sebelum instans dihapus. Setelah menerima pemberitahuan Penghentian, instans dapat memilih untuk dihapus kapan saja sebelum batas waktu penghentian berakhir.

Aktifkan pemberitahuan penghentian

Ada beberapa cara untuk mengaktifkan pemberitahuan penghentian pada instans kumpulan skala Anda, sebagaimana dirinci dalam contoh di bawah ini.

portal Microsoft Azure

Langkah-langkah berikut ini memungkinkan pemberitahuan penghentian saat membuat kumpulan skala baru.

  1. Buka Kumpulan skala komputer virtual.
  2. Pilih + Tambah untuk membuat kumpulan skala baru.
  3. Buka tab Manajemen.
  4. Temukan bagian Penghentian Instans.
  5. Untuk pemberitahuan penghentian instans, pilih Hidup.
  6. Untuk Penundaan pengakhiran (menit) , atur batas waktu default yang diinginkan.
  7. Setelah selesai membuat kumpulan skala baru, pilih tombol Tinjau + buat.

Catatan

Anda tidak dapat mengatur pemberitahuan penghentian pada kumpulan skala yang ada di portal Microsoft Azure

REST API

Contoh berikut memungkinkan pemberitahuan penghentian pada model kumpulan skala.

PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2019-03-01`
{
  "properties": {
    "virtualMachineProfile": {
            "scheduledEventsProfile": {
                "terminateNotificationProfile": {
                    "notBeforeTimeout":"PT5M",
                    "enable":true
                }
            }
        }
    }        
}

Blok di atas menentukan penundaan batas waktu 5 menit (seperti yang ditunjukkan oleh PT5M) untuk setiap operasi penghentian pada semua instans dalam kumpulan skala Anda. Bidang notBeforeTimeout dapat mengambil nilai apa pun antara 5 dan 15 menit dalam format ISO 8601. Anda dapat mengubah batas waktu default untuk operasi penghentian dengan memodifikasi properti notBeforeTimeout di terminateNotificationProfile yang dijelaskan di atas.

Setelah mengaktifkan scheduledEventsProfile pada model kumpulan skala dan mengatur notBeforeTimeout, perbarui instans individual ke model terbaru untuk mencerminkan perubahan.

Catatan

Pemberitahuan penghentian pada instans kumpulan skala hanya dapat diaktifkan dengan API versi 2019-03-01 ke atas

Azure PowerShell

Saat membuat kumpulan skala baru, Anda dapat mengaktifkan pemberitahuan penghentian pada kumpulan skala yang ditetapkan dengan menggunakan cmdlet New-AzVmssConfig.

Contoh skrip ini memandu pembuatan kumpulan skala dan sumber daya terkait menggunakan file konfigurasi: Membuat kumpulan skala komputer virtual lengkap. Anda dapat mengonfigurasi pemberitahuan penghentian dengan menambahkan parameter TerminateScheduledEvents dan TerminateScheduledEventNotBeforeTimeoutInMinutes ke objek konfigurasi untuk membuat kumpulan skala. Contoh berikut memungkinkan fitur dengan batas waktu penundaan 10 menit.

New-AzVmssConfig `
  -Location "VMSSLocation" `
  -SkuCapacity 2 `
  -SkuName "Standard_DS2" `
  -UpgradePolicyMode "Automatic" `
  -TerminateScheduledEvents $true `
  -TerminateScheduledEventNotBeforeTimeoutInMinutes 10

Gunakan cmdlet Update-AzVmss untuk mengaktifkan pemberitahuan penghentian pada kumpulan skala yang ada.

Update-AzVmss `
  -ResourceGroupName "myResourceGroup" `
  -VMScaleSetName "myScaleSet" `
  -TerminateScheduledEvents $true `
  -TerminateScheduledEventNotBeforeTimeoutInMinutes 15

Contoh di atas mengaktifkan pemberitahuan penghentian pada kumpulan skala yang ada dan menetapkan batas waktu 15 menit untuk aktivitas yang dihentikan.

Setelah mengaktifkan aktivitas terjadwal pada model kumpulan skala dan mengatur batas waktu, perbarui masing-masing instans ke model terbaru untuk mencerminkan perubahan.

Azure CLI 2.0

Contoh berikut adalah untuk mengaktifkan pemberitahuan penghentian sambil membuat kumpulan skala baru.

az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --image UbuntuLTS \
  --admin-username <azureuser> \
  --generate-ssh-keys \
  --terminate-notification-time 10

Contoh di atas membuat grup sumber daya terlebih dahulu, kemudian membuat kumpulan skala baru dengan pemberitahuan penghentian diaktifkan untuk batas waktu default 10 menit.

Contoh berikut adalah untuk mengaktifkan pemberitahuan penghentian dalam kumpulan skala yang ada.

az vmss update \  
  --resource-group <myResourceGroup> \
  --name <myVMScaleSet> \
  --enable-terminate-notification true \
  --terminate-notification-time 10

Dapatkan pemberitahuan penghentian

Pemberitahuan penghentian dikirimkan melalui Aktivitas Terjadwal, yang merupakan Azure Metadata Service. Azure Metadata Service memaparkan informasi tentang menjalankan Komputer Virtual menggunakan Titik akhir REST yang dapat diakses dari dalam VM. Informasi tersedia melalui IP yang tidak dapat dirutekan sehingga tidak diekspos di luar VM.

Aktivitas Terjadwal diaktifkan untuk kumpulan skala Anda saat pertama kali Anda mengajukan permintaan aktivitas. Anda dapat mengharapkan tanggapan tertunda dalam panggilan pertama Anda hingga dua menit. Buat kueri titik akhir secara berkala untuk mendeteksi aktivitas pemeliharaan yang akan datang dan status aktivitas pemeliharaan yang sedang berlangsung.

Aktivitas Terjadwal dinonaktifkan untuk kumpulan skala Anda jika instance kumpulan skala tidak membuat permintaan selama 24 jam.

Penemuan titik akhir

Untuk VM berkemampuan VNET, Metadata Service tersedia dari IP statis yang tidak dapat dirutekan, 169.254.169.254.

Titik akhir lengkap untuk versi terbaru Aktivitas Terjadwal adalah:

'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'

Respons kueri

Respons berisi array aktivitas terjadwal. Array kosong berarti saat ini tidak ada aktivitas yang dijadwalkan.

Dalam kasus di mana ada aktivitas terjadwal, respons berisi array aktivitas. Untuk aktivitas "Hentikan", respons akan terlihat sebagai berikut:

{
    "DocumentIncarnation": {IncarnationID},
    "Events": [
        {
            "EventId": {eventID},
            "EventType": "Terminate",
            "ResourceType": "VirtualMachine",
            "Resources": [{resourceName}],
            "EventStatus": "Scheduled",
            "NotBefore": {timeInUTC},
        }
    ]
}

DocumentIncarnation adalah ETag dan menyediakan cara mudah untuk memeriksa apakah muatan Aktivitas telah berubah sejak kueri terakhir.

Untuk informasi selengkapnya tentang setiap bidang di atas, lihat dokumentasi Aktivitas Terjadwal untuk Windows dan Linux.

Merespons aktivitas

Setelah Anda mengetahui aktivitas yang akan datang dan menyelesaikan logika Anda untuk mematikan, Anda dapat menyetujui aktivitas yang harus dilakukan dengan membuat panggilan POST ke layanan metadata dengan EventId tersebut. Panggilan POST menunjukkan kepada Azure bahwa panggilan tersebut dapat melanjutkan penghapusan VM.

Di bawah ini adalah json yang diharapkan dalam isi permintaan POST. Permintaan harus berisi daftar StartRequests. Setiap StartRequest berisi EventId untuk aktivitas yang ingin Anda percepat:

{
	"StartRequests" : [
		{
			"EventId": {EventId}
		}
	]
}

Pastikan setiap VM dalam kumpulan skala hanya menyetujui EventID yang relevan untuk VM itu saja. VM bisa mendapatkan nama VM sendiri melalui metadata instans. Nama ini berformat "{scale-set-name}_{instance-id}", dan akan ditampilkan di bagian 'Sumber Daya' dari respons kueri yang dijelaskan di atas.

Anda juga dapat merujuk ke contoh skrip untuk membuat kueri dan merespons aktivitas Python.

Tips dan praktik terbaik

  • Pemberitahuan penghentian hanya pada operasi 'hapus' - Semua operasi penghapusan (penghapusan manual atau penskalaan yang dimulai secara otomatis) akan menghasilkan aktivitas penghentian jika kumpulan skala Anda telah mengaktifkan scheduledEventsProfile. Operasi lain seperti reboot, reimage, redeploy, dan stop/deallocate tidak menghasilkan aktivitas Penghentian.
  • Tidak ada penantian wajib untuk batas waktu - Anda dapat memulai operasi penghentian kapan saja setelah aktivitas diterima dan sebelum waktu NotBefore aktivitas berakhir.
  • Penghapusan wajib pada batas waktu - Tidak ada kemampuan untuk memperpanjang nilai batas waktu setelah aktivitas dibuat. Setelah batas waktu berakhir, aktivitas penghentian yang tertunda akan diproses dan VM akan dihapus.
  • Nilai batas waktu yang dapat dimodifikasi - Anda dapat memodifikasi nilai batas waktu kapan saja sebelum instans dihapus, dengan memodifikasi properti notBeforeTimeout pada model kumpulan skala dan memperbarui instans VM ke model terbaru.
  • Setujui semua penghapusan yang tertunda - Jika ada penghapusan tertunda di VM_1 yang belum disetujui, dan Anda telah menyetujui aktivitas penghentian lain di VM_2, maka VM_2 tidak dihapus sampai aktivitas penghentian untuk VM_1 disetujui, atau batas waktunya telah berlalu. Setelah Anda menyetujui aktivitas penghentian untuk VM_1, maka VM_1 dan VM_2 akan dihapus.
  • Menyetujui semua penghapusan serentak - Memperluas contoh di atas, jika VM_1 dan VM_2 memiliki waktu NotBefore yang sama, maka kedua aktivitas penghentian harus disetujui atau tidak ada VM yang dihapus sebelum batas waktu berakhir.

Pecahkan masalah

Kegagalan mengaktifkan scheduledEventsProfile

Jika Anda mendapatkan kesalahan 'BadRequest' dengan pesan kesalahan yang menyatakan "Tidak dapat menemukan anggota 'scheduledEventsProfile' pada objek jenis 'VirtualMachineProfile'", periksa versi API yang digunakan untuk operasi kumpulan skala. Versi Compute API 2019-03-01 atau lebih tinggi diperlukan.

Kegagalan mendapatkan aktivitas Penghentian

Jika Anda tidak mendapatkan aktivitas Penghentian apa pun melalui Aktivitas Terjadwal, maka periksa versi API yang digunakan untuk mendapatkan aktivitas. Metadata Service API versi 2019-01-01 atau lebih tinggi diperlukan untuk aktivitas Penghentian.

'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'

Mendapatkan aktivitas Penghentian dengan waktu NotBefore yang salah

Setelah mengaktifkan scheduledEventsProfile pada model kumpulan skala dan mengatur notBeforeTimeout, perbarui instans individual ke model terbaru untuk mencerminkan perubahan.

Langkah berikutnya

Pelajari cara menyebarkan aplikasi Anda di set skala komputer virtual.