Azure sanal makine ölçek kümesi örnekleri için bildirimi sonlandırma
Uygulama: ✔️ Linux VM'leri ✔️ Windows VM'ler ✔️ Tekdüz ölçek kümeleri ✔️ Esnek ölçek kümeleri
Ölçek kümesi örnekleri, örnek sonlandırma bildirimlerini almayı ve sonlandırma işlemi için önceden tanımlanmış bir gecikme zaman aşımı ayarlamayı tercih ediyor olabilir. Sonlandırma bildirimi, yeniden başlatma Metadata Service yenidenZamanlanan Olaylar etkili işlemler için bildirimler sağlayan ve geciktiren Azure Metadata Service – Zamanlanan Olaylar aracılığıyla gönderilir. Çözüm, yeni bir olay daha ekler ( Sonlandır) Zamanlanan Olaylar ve sonlandırma olayıyla ilişkili gecikme süresi, ölçek kümesi model yapılandırmalarında kullanıcılar tarafından belirtilen gecikme sınırına bağlıdır.
Özele kaydolan ölçek kümesi örneklerinin, örnek silinmeden önce belirtilen zaman aşımı süresinin dolması için beklemesi gerekir. Sonlandır bildirimini aldıktan sonra, sonlandırma zaman aşımının süresi dolmadan önce örnek istediğiniz zaman silinebilir.
Sonlandırma bildirimlerini etkinleştirme
Aşağıdaki örneklerde ayrıntılı olarak açıklanmıştır ve ölçek kümesi örnekleriniz üzerinde sonlandırma bildirimlerini etkinleştirmenin birden çok yolu vardır.
Azure portal
Aşağıdaki adımlar yeni ölçek kümesi oluştururken sonlandırma bildirimini etkinleştirir.
- Sanal makine ölçek kümeleri'ne gidin.
- Yeni bir ölçek kümesi oluşturmak için + Ekle'yi seçin.
- Yönetim sekmesine gidin.
- Örnek sonlandırma bölümünü bulun.
- Örnek sonlandırma bildirimi için, Üzerinde'yi seçin.
- Sonlandırma gecikmesi (dakika) için istenen varsayılan zaman aşımını ayarlayın.
- Yeni ölçek kümesi oluşturmayı bitirerek Gözden geçir ve oluştur düğmesini seçin.
Not
Azure portal'da mevcut ölçek kümelerini sonlandırma bildirimleri ayar Azure portal
REST API
Aşağıdaki örnek ölçek kümesi modelinde sonlandırma bildirimini sağlar.
PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2019-03-01`
{
"properties": {
"virtualMachineProfile": {
"scheduledEventsProfile": {
"terminateNotificationProfile": {
"notBeforeTimeout":"PT5M",
"enable":true
}
}
}
}
}
Yukarıdaki blok, ölçek kümenizin tüm örneklerde herhangi bir sonlandırma işlemi için 5 dakikalık bir zaman aşımı gecikmesi (PT5M ile belirtildiği gibi) belirtir. notBeforeTimeout alanı ISO 8601 biçiminde 5 ile 15 dakika arasında herhangi bir değer sürebilir. Yukarıda açıklanan terminateNotificationProfile altındaki notBeforeTimeout özelliğini değiştirerek sonlandırma işlemi için varsayılan zaman aşımını değiştirebilirsiniz.
Ölçek kümesi modelinde scheduledEventsProfile etkinleştirdikten ve notBeforeTimeout ayarının ardından, değişiklikleri yansıtacak şekilde tek tek örnekleri en son modele güncelleştirin.
Not
Ölçek kümesi örneklerde bildirimleri sonlandırma yalnızca API 2019-03-01 ve üzeri sürümlerle etkinleştirilebilir
Azure PowerShell
Yeni bir ölçek kümesi oluştururken, New-AzVmssConfig cmdlet'ini kullanarak ölçek kümesinde sonlandırma bildirimlerini etkinleştirin.
Bu örnek betik, yapılandırma dosyasını kullanarak ölçek kümesi ve ilişkili kaynakların oluşturulmasında yol gösterir: Eksiksiz bir sanal makine ölçek kümesi oluşturma. Ölçek kümesi oluşturmak için yapılandırma nesnesine TerminateScheduledEvents ve TerminateScheduledEventNotBeforeTimeoutInMinutes parametrelerini ekleyerek sonlandırmayı yapılandır bildirimi sabilirsiniz. Aşağıdaki örnek, özelliği 10 dakikalık bir gecikme zaman aşımıyla sağlar.
New-AzVmssConfig `
-Location "VMSSLocation" `
-SkuCapacity 2 `
-SkuName "Standard_DS2" `
-UpgradePolicyMode "Automatic" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 10
Mevcut bir ölçek kümesinde sonlandırma bildirimlerini etkinleştirmek için Update-AzVmss cmdlet'ini kullanın.
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 15
Yukarıdaki örnek, mevcut bir ölçek kümesinde sonlandırma bildirimlerini sağlar ve sonlandırma olayı için 15 dakikalık bir zaman aşımı ayarlar.
Ölçek kümesi modelinde zamanlanmış olayları etkinleştirdikten ve zaman aşımını ayardikten sonra, değişiklikleri yansıtacak şekilde tek tek örnekleri en son modele güncelleştirin.
Azure CLI 2.0
Aşağıdaki örnek, yeni bir ölçek kümesi oluşturulurken sonlandırma bildiriminin etkinleştirilmesi içindir.
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
Yukarıdaki örnek önce bir kaynak grubu oluşturur, ardından 10 dakikalık varsayılan zaman aşımı için sonlandırma bildirimlerinin etkinleştirildiği yeni bir ölçek kümesi oluşturur.
Aşağıdaki örnek, mevcut bir ölçek kümesinde sonlandırma bildirimini etkinleştirmeye örnektir.
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--enable-terminate-notification true \
--terminate-notification-time 10
Sonlandır bildirimlerini al
Sonlandırma bildirimleri, Bir Azure Zamanlanan Olaylarolan Metadata Service. Azure Meta Veri hizmeti, sanal makinenin içinde erişilebilen bir REST Uç Noktası kullanarak Sanal Makineleri çalıştırma hakkında bilgi sunar. Bilgiler yönlendirilebilir olmayan bir IP üzerinden kullanılabilir, böylece VM dışından açığa çıkarılamaz.
Zamanlanan Olaylar, olaylar için ilk kez istekte bulundurarak ölçek kümeniz için etkinleştirilir. İlk çağrınız iki dakikaya kadar gecikmiş bir yanıt bekliyor olabilir. Yaklaşan bakım olaylarını ve devam eden bakım etkinliklerinin durumunu algılamak için uç noktayı düzenli aralıklarla sorgular.
Zamanlanan Olaylar kümesi örnekleri 24 saat boyunca istekte yoksa ölçek kümeniz için devre dışı bırakılır.
Uç nokta bulma
Sanal ağ özellikli VM'ler için Metadata Service, 169.254.169.254 statik yönlendirilemeyen IP'den kullanılabilir.
Uygulamanın en son sürümü için tam Zamanlanan Olaylar:
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
Sorgu yanıtı
Yanıt, zamanlanmış bir olay dizisi içerir. Boş bir dizi, şu anda zamanlanmış olay olmadığını gösterir.
Zamanlanmış olaylar olduğu durumda yanıt bir olay dizisi içerir. Bir "Sonlandır" olayı için yanıt aşağıdaki gibi olacaktır:
{
"DocumentIncarnation": {IncarnationID},
"Events": [
{
"EventId": {eventID},
"EventType": "Terminate",
"ResourceType": "VirtualMachine",
"Resources": [{resourceName}],
"EventStatus": "Scheduled",
"NotBefore": {timeInUTC},
}
]
}
DocumentIncarnation bir ETag'tir ve son sorgudan bu yana Olaylar yükünün değişerek değişmediğini incelemenin kolay bir yolunu sağlar.
Yukarıdaki alanların her biri hakkında daha fazla bilgi için, Zamanlanan Olaylar ve Linux için Windows belgelerine bakın.
Olaylara yanıt verme
Yaklaşan bir olayı öğrenip uygun kapatma mantığınızı tamamlandıktan sonra, EventId ile meta veri hizmetine post çağrısı yaparak bekleyen olayı onayabilirsiniz. POST çağrısı Azure'a VM silme ile devam edeceğini belirtir.
POST isteği gövdesinde beklenen JSON aşağıda verilmiştir. İstek, StartRequests listesini içerir. Her StartRequest, hızlandırmak istediğiniz olayın EventId'lerini içerir:
{
"StartRequests" : [
{
"EventId": {EventId}
}
]
}
Ölçek kümesinde yer alan her VM'nin yalnızca ilgili VM ile ilgili EventID'yi onaylıyor olduğundan emin olun. Bir VM, örnek meta verileri aracılığıyla kendi VM adını elde eder. Bu ad "{scale-set-name}_{instance-id}" formunu alır ve yukarıda açıklanan sorgu yanıtının 'Kaynaklar' bölümünde görüntülenir.
Python olaylarını sorgulamak ve yanıtlarını almak için örnek betiklere de başvurabilirsiniz.
İpuçları ve en iyi yöntemler
- Yalnızca 'silme' işlemleri için bildirimleri sonlandır – Tüm silme işlemleri (el ile silme veya Otomatik ölçeklendirmeyle başlatılan ölçek dönüştürme) ölçek kümenizin scheduledEventsProfile etkinleştirilmişse Sonlandır olayları oluşturulur. Yeniden başlatma, yeniden oluşturma, yeniden oluşturma, yeniden üretme ve durdurma/bırakma gibi diğer işlemler Terminate olayları oluşturmaz.
- Zorunlu zaman aşımı beklemesi yok – Sonlandırma işlemi, olay alındıktan sonra ve olayın NotBefore süresi dolmadan önce herhangi bir zamanda başlatabilirsiniz.
- Zaman aşımı sırasında zorunlu silme – Bir olay oluşturulurken zaman aşımı değerini genişletme özelliği yoktur. Zaman aşımı süresi dolsa, bekleyen sonlandırma olayı işlenir ve VM silinir.
- Değiştirilebilir zaman aşımı değeri – Ölçek kümesi modelinde notBeforeTimeout özelliğini değiştirerek ve VM örneklerini en son modele güncelleştirerek, bir örnek silinmeden önce herhangi bir zamanda zaman aşımı değerini değiştirebilirsiniz.
- Bekleyen tüm silmeleri onayla – VM_1'de onaylanmadı bekleyen bir silme varsa ve VM_2'da başka bir sonlandırma olayı onayladıysanız VM_2, VM_1 için sonlandırma olayı onaylanana veya zaman aşımı geçene kadar silinmez. Son kullanıcı için sonlandırma olayı onay VM_1 sonra hem VM_1 hem de VM_2 silinir.
- Tüm eşzamanlı silmeleri onayla – VM_1 ve VM_2 aynı NotBefore süresine sahipse, her iki sonlandırma olay da onaylanır veya zaman aşımı süresi dolmadan önce hiçbir VM silinmez.
Sorun giderme
scheduledEventsProfile etkinleştiri hataları
"'VirtualMachineProfile' türünde nesnede 'scheduledEventsProfile' üyesi bulunamadı" hata iletisiyle bir 'BadRequest' hatası alırsanız, ölçek kümesi işlemleri için kullanılan API sürümünü kontrol edin. İşlem API'si 2019-03-01 veya daha yeni bir sürüm gereklidir.
Sonlandır olayları alamadı
Zamanlanan Olaylar aracılığıyla herhangi bir Terminate Zamanlanan Olaylar, olayları almak için kullanılan API sürümünü kontrol edin. Metadata Service için API'nin 2019-01-01 veya daha yeni bir sürümü gereklidir.
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
Yanlış NotBefore zamanıyla Terminate olayı alma
Ölçek kümesi modelinde scheduledEventsProfile etkinleştirdikten ve notBeforeTimeout ayarının ardından, değişiklikleri yansıtacak şekilde tek tek örnekleri en son modele güncelleştirin.
Sonraki adımlar
Uygulamanızı sanal makine ölçek kümelere dağıtmayı öğrenin.