Azure Metadata Service: Linux VM'ler için Zamanlanan Olaylar
Uygulama hedefi: : Heavy_check_mark: Linux VM 'leri: Heavy_check_mark: Esnek ölçek kümeleri: Heavy_check_mark: Tekdüzen ölçek kümeleri
Zamanlanan Olaylar, sanal makine (VM) bakımına hazırlanmak için uygulamanızın süresini sağlayan bir Azure Metadata Service. Uygulamanızın onlara hazırlanabilmesi ve kesintiye uğramasını önlemek için yaklaşan bakım olayları (örneğin, yeniden başlatma) hakkında bilgi sağlar. hem Windows hem de Linux 'ta paas ve ıaas dahil tüm Azure sanal makine türlerinde kullanılabilir.
Windows Zamanlanan Olaylar hakkında daha fazla bilgi için bkz. Zamanlanan Olaylar Windows vm 'ler.
Not
Zamanlanan Olaylar, tüm Azure bölgelerinde genel kullanıma sunulmuştur. En son sürüm bilgileri için Sürüm ve bölge kullanılabilirliğine bakın.
Neden Zamanlanan Olaylar kullanmalıyım?
Birçok uygulama, VM bakımı için hazırlanma zamanından faydalanabilir. Bu süre, kullanılabilirliği, güvenilirliği ve bakım çalışmalarını artıran uygulamaya özgü görevleri gerçekleştirmek için kullanılabilir:
- Denetim noktası ve geri yükleme.
- Bağlantı boşaltma.
- Birincil çoğaltma yük devretmesi.
- Yük dengeleyici havuzundan kaldırma.
- Olay günlüğü.
- Düzgün kapanma.
Zamanlanan Olaylar, uygulamanız bakımın ne zaman yapılacağını bulabilir ve etkilerini sınırlamak için görevleri tetikleyebilirsiniz.
Zamanlanan Olaylar aşağıdaki kullanım durumlarında Olaylar sağlar:
- Platform tarafından başlatılan bakım (ÖRNEĞIN, VM yeniden başlatma, dinamik geçiş veya konak için güncelleştirmeleri koruma)
- Sanal makine, yakında başarısız olarak tahmin edilen düşürülmüş konak donanımında çalışıyor
- Kullanıcı tarafından başlatılan bakım (örneğin, bir Kullanıcı bir VM 'yi yeniden başlatır veya yeniden dağıtır)
- Spot VM ve spot ölçek kümesi örnek çıkarmaları.
Temeller
Metadata Service VM 'nin içinden erişilebilen bir REST uç noktası kullanarak VM çalıştırma hakkında bilgi sunar. Bilgiler, sanal makinenin dışında kullanıma sunulmaması için yönlendirilemeyen bir IP aracılığıyla kullanılabilir.
Kapsam
Zamanlanan olaylar şu şekilde dağıtılır:
- Tek başına sanal makineler.
- Bir bulut hizmetindeki tüm VM 'Ler.
- Bir kullanılabilirlik kümesindeki tüm VM 'Ler.
- Bir kullanılabilirlik bölgesindeki tüm VM 'Ler.
- Ölçek kümesi yerleştirme grubundaki tüm VM 'Ler.
Not
Bir kullanılabilirlik bölgesindeki VM 'lere özel olarak, zamanlanan olaylar bir bölgedeki tek VM 'lere gider. Örneğin, bir kullanılabilirlik kümesinde 100 VM varsa ve bunlardan birine yönelik bir güncelleştirme varsa, zamanlanan olay tüm 100 ' e gider, ancak bir bölgede 100 tek VM varsa, olay yalnızca etkilenen VM 'ye gider.
Sonuç olarak, Resources hangi VM 'lerin etkilendiğini belirlemek için olaydaki alanı kontrol edin.
Uç nokta bulma
VNET etkin VM 'Ler için Metadata Service statik olmayan statik bir IP 'den kullanılabilir 169.254.169.254 . Zamanlanan Olaylar en son sürümü için tam uç nokta şunlardır:
http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
VM bir sanal ağ içinde oluşturulmadıysa, bulut hizmetleri ve klasik VM 'Ler için varsayılan durumlar olarak, kullanılacak IP adresini bulması için ek mantık gerekir. Konak uç noktasını bulmayıöğrenmek için bu örneğe bakın.
Sürüm ve bölge kullanılabilirliği
Zamanlanan Olaylar hizmeti sürümlenmiş. Sürümler zorunludur; geçerli sürüm 2020-07-01 .
| Sürüm | Yayın türü | Bölgeler | Sürüm Notları |
|---|---|---|---|
| 2020-07-01 | Genel kullanılabilirlik | Tümü | |
| 2019-08-01 | Genel kullanılabilirlik | Tümü | |
| 2019-04-01 | Genel kullanılabilirlik | Tümü | |
| 2019-01-01 | Genel kullanılabilirlik | Tümü | |
| 2017-11-01 | Genel kullanılabilirlik | Tümü | |
| 2017-08-01 | Genel kullanılabilirlik | Tümü | |
| 2017-03-01 | Önizleme | Tümü |
Not
API sürümü olarak desteklenen Zamanlanan Olaylar önceki önizleme sürümleri {Latest}. Bu biçim artık desteklenmemektedir ve gelecekte kullanım dışı bırakılacak.
Zamanlanan Olayları Etkinleştirme ve Devre Dışı Bırakma
Zamanlanan Olaylar, ilk kez olay isteği yaptığınızda hizmetiniz için etkinleştirilir. En fazla iki dakikalık ilk çağrındaki gecikmeli bir yanıt beklemelisiniz.
24 saat boyunca bir istek yapmadığından hizmetiniz için Zamanlanan Olaylar devre dışı bırakılır.
Kullanıcı tarafından başlatılan bakım
Azure portal, API, CLı veya PowerShell aracılığıyla Kullanıcı tarafından başlatılan VM Bakımı zamanlanmış bir olayda sonuçlanır. Daha sonra uygulamanızdaki bakım hazırlama mantığını test edebilir ve uygulamanız kullanıcı tarafından başlatılan bakım için hazırlanabilirsiniz.
Bir VM 'yi yeniden başlatırsanız, türüne sahip bir olay Reboot zamanlanır. Bir VM 'yi yeniden dağıtırsanız, türüne sahip bir olay Redeploy zamanlanır.
API’yi kullanma
Üst Bilgiler
Metadata Service sorgulayıp, Metadata:true isteğin istem dışı olarak yeniden yönlendirilmemesini sağlamak için üst bilgiyi sağlamanız gerekir. Metadata:trueÜst bilgi tüm zamanlanmış olaylar istekleri için gereklidir. Üst bilgiyi istek içine ekleme hatası, Metadata Service ' den gelen bir "Hatalı Istek" yanıtı ile sonuçlanır.
Olayları sorgula
Aşağıdaki çağrıyı yaparak Zamanlanmış olaylar için sorgulama yapabilirsiniz:
Bash
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
Bir yanıt, Zamanlanmış olaylar dizisi içerir. Boş bir dizi, şu anda hiçbir olayın planlanmadığını gösterir. Zamanlanan olayların olduğu durumlarda, yanıt bir olay dizisi içerir.
{
"DocumentIncarnation": {IncarnationID},
"Events": [
{
"EventId": {eventID},
"EventType": "Reboot" | "Redeploy" | "Freeze" | "Preempt" | "Terminate",
"ResourceType": "VirtualMachine",
"Resources": [{resourceName}],
"EventStatus": "Scheduled" | "Started",
"NotBefore": {timeInUTC},
"Description": {eventDescription},
"EventSource" : "Platform" | "User",
"DurationInSeconds" : {timeInSeconds},
}
]
}
Olay özellikleri
| Özellik | Açıklama |
|---|---|
| Even | Bu olay için genel benzersiz tanımlayıcı. Örnek:
|
| Olay türü | Bu olay nedenlerini etkiler. Değerler:
|
| ResourceType | Bu olayın etkilediği kaynak türü. Değerler:
|
| Kaynaklar | Bu olayın etkilediği kaynakların listesi. Listenin, en çok bir güncelleştirme etkialanından makineler içermesi garanti edilir, ancak bu, ud 'deki tüm makineleri içermeyebilir. Örnek:
|
| EventStatus | Bu olayın durumu. Değerler:
Completed veya benzer bir durum sağlanmamıştır. Olay tamamlandığında olay artık döndürülmez. |
| NotBefore | Bu olayın başlayabileceği zaman. Örnek:
|
| Description | Bu olayın açıklaması. Örnek:
|
| EventSource | Olayın Başlatıcısı. Örnek:
|
| DurationInSeconds | Olayın neden olduğu kesinti süresinin beklenen süresi. Örnek:
|
Olay zamanlaması
Her olay, gelecekte olay türüne göre en az bir süre zamanlanır. Bu zaman, bir olayın NotBefore özelliğinde yansıtılır.
| Olay türü | En düşük bildirim |
|---|---|
| Amazsınız | 15 dakika |
| Yeniden başlatma | 15 dakika |
| Yeniden dağıtım | 10 dakika |
| Preempt | 30 saniye |
| Terminate | Kullanıcı yapılandırılabilir: 5 ila 15 dakika |
Not
Azure, bazı durumlarda ana bilgisayar başarısızlığını düşürülmüş bir donanım nedeniyle tahmin edebilir ve bir geçiş zamanlayarak hizmetinize olan kesintiyi azaltmaya çalışacaktır. Etkilenen sanal makineler, NotBefore genellikle gelecekte birkaç gün olan zamanlanmış bir olay alır. Gerçek süre, tahmin edilen hata riski değerlendirmesine bağlı olarak farklılık gösterir. Azure, mümkün olduğunda 7 gün daha kısa bir bildirimde bulunmaya çalışır, ancak tahmin, donanım arızalanmaya yönelik yüksek bir şansınız olması durumunda gerçek zaman değişir ve daha küçük olabilir. Sistemin sistem tarafından başlatılan geçişten önce başarısız olması durumunda hizmetinize yönelik riski en aza indirmek için, sanal makinenizi mümkün olan en kısa sürede otomatik olarak yeniden dağıtmanız önerilir.
Yoklama sıklığı
Güncelleştirme için uç noktayı istediğiniz sıklıkta veya daha seyrek olarak yoklayabilmeniz gerekir. Ancak, istekler arasındaki süre ne kadar uzun zaman, yaklaşan bir olaya tepki vermek için büyük olasılıkla daha fazla zaman kaybı olabilir. Çoğu olay yaklaşık olarak 5 ila 15 dakikalık bir bildirimde bulunabilir, ancak bazı durumlarda öncelikli bir uyarı 30 saniye olabilir. Azaltıcı işlemleri gerçekleştirmek için mümkün olduğunca çok zaman olduğundan emin olmak için, hizmeti saniyede bir kez yoklamenizi öneririz.
Olay başlatma
Yaklaşan bir olayı öğrendikten ve düzgün kapanma için mantığınızı tamamladıktan sonra, ile Metadata Service çağrısı yaparak bekleyen olayı onaylayabilirsiniz POST EventId . Bu çağrı, Azure 'a, en düşük bildirim süresini (mümkün olduğunda) kısaltıp kısaltamayacağını gösterir.
İstek gövdesinde aşağıdaki JSON örneği bekleniyor POST . İstek bir listesi içermelidir StartRequests . Her StartRequest biri EventId , hızlandırmak istediğiniz olay için içerir:
{
"StartRequests" : [
{
"EventId": {EventId}
}
]
}
Bash örneği
curl -H Metadata:true -X POST -d '{"StartRequests": [{"EventId": "f020ba2e-3bc0-4c40-a10b-86575a9eabd5"}]}' http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
Not
Bir olayı ele almak Resources , olayın yalnızca olayı kabul eden VM değil, olaydaki her şey için devam etmesine olanak tanır. Bu nedenle, onayı koordine etmek için bir öncü seçebilirsiniz ve bu, alandaki ilk makine kadar kolay olabilir Resources .
Python örneği
Aşağıdaki örnek sorgular, Zamanlanmış olaylar için Metadata Service ve her bir bekleyen olayı onaylar:
#!/usr/bin/python
import json
import socket
import urllib2
metadata_url = "http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01"
this_host = socket.gethostname()
def get_scheduled_events():
req = urllib2.Request(metadata_url)
req.add_header('Metadata', 'true')
resp = urllib2.urlopen(req)
data = json.loads(resp.read())
return data
def handle_scheduled_events(data):
for evt in data['Events']:
eventid = evt['EventId']
status = evt['EventStatus']
resources = evt['Resources']
eventtype = evt['EventType']
resourcetype = evt['ResourceType']
notbefore = evt['NotBefore'].replace(" ", "_")
description = evt['Description']
eventSource = evt['EventSource']
if this_host in resources:
print("+ Scheduled Event. This host " + this_host +
" is scheduled for " + eventtype +
" by " + eventSource +
" with description " + description +
" not before " + notbefore)
# Add logic for handling events here
def main():
data = get_scheduled_events()
handle_scheduled_events(data)
if __name__ == '__main__':
main()
Sonraki adımlar
- Tanıtım görmek için Azure Cuma 'daki zamanlanan olaylar izleyin.
- Azure örnek meta Zamanlanan Olaylar verileri GitHub deposundaZamanlanan Olaylar kod örneklerini gözden geçirin.
- Instance Metadata Servicemevcut olan API 'ler hakkında daha fazla bilgi edinin.
- Azure 'Da Linux sanal makineleri için planlı bakımhakkında bilgi edinin.