Menghentikan pemberitahuan untuk instans Azure Virtual Machine Scale Set
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 Anda mendaftar ke Peristiwa Terjadwal dengan memanggil titik akhir Layanan Metadata yang sesuai, instans set skala tidak perlu menunggu batas waktu yang ditentukan kedaluwarsa sebelum instans dihapus. Setelah menerima pemberitahuan Penghentian, instans dapat memilih untuk dihapus kapan saja sebelum batas waktu penghentian berakhir. Pemberitahuan penghentian tidak dapat diaktifkan pada instans Spot. Untuk informasi selengkapnya tentang instans Spot, lihat Azure Spot Virtual Machines untuk Virtual Machine Scale Sets
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.
- Buka Virtual Machine Scale Sets.
- Pilih + Tambah untuk membuat kumpulan skala baru.
- Buka tab Manajemen.
- Temukan bagian Penghentian Instans.
- Untuk pemberitahuan penghentian instans, pilih Hidup.
- Untuk Penundaan pengakhiran (menit) , atur batas waktu default yang diinginkan.
- Setelah selesai membuat set skala baru, pilih tombol Tinjau + buat .
Anda juga dapat mengaktifkan pemberitahuan penghentian pada set skala yang ada.
- Menavigasi ke set skala yang diinginkan
- Masuk ke tab Konfigurasi
- Untuk Mengaktifkan pemberitahuan penghentian Instans, pilih Aktif.
- Untuk Penundaan pengakhiran (menit) , atur batas waktu default yang diinginkan.
- Pilih tombol Simpan .
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 berjalan melalui pembuatan set skala dan sumber daya terkait menggunakan file konfigurasi: Membuat Virtual Machine Scale Set lengkap. Anda dapat memberikan pemberitahuan "konfigurasi hentikan" dengan menambahkan parameter TerminateScheduledEvents dan TerminateScheduledEventNotBeforeTimeoutInMinutes ke objek konfigurasi untuk membuat set 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 mempelajari tentang peristiwa yang akan datang dan menyelesaikan logika Anda untuk mematikan dengan baik, Anda dapat menyetujui peristiwa yang luar biasa dengan melakukan panggilan POST ke layanan metadata dengan EventId. 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 peristiwa Hentikan.
- 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 peristiwa Penghentian melalui Peristiwa Terjadwal, periksa versi API yang digunakan untuk mendapatkan peristiwa. 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 Virtual Machine Scale Sets.