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:

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ü
  • Olay süresine yönelik destek eklendi
  • 2019-08-01 Genel kullanılabilirlik Tümü
  • Olay kaynağı için destek eklendi
  • 2019-04-01 Genel kullanılabilirlik Tümü
  • Olay açıklaması için destek eklendi
  • 2019-01-01 Genel kullanılabilirlik Tümü
  • Sanal Makine Ölçek Kümeleri için destek eklendi EventType ' Terminate '
  • 2017-11-01 Genel kullanılabilirlik Tümü
  • Nokta VM çıkarma olay türü ' preempt ' için destek eklendi
  • 2017-08-01 Genel kullanılabilirlik Tümü
  • IaaS VM 'lerinin kaynak adlarından eklenmiş alt çizgi kaldırıldı
  • Tüm istekler için meta veri üst bilgisi gereksinimi zorlandı
  • 2017-03-01 Önizleme Tümü
  • İlk yayın
  • 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:
    • 602d9444-d2cd-49c7-8624-8643e7171297
    Olay türü Bu olay nedenlerini etkiler.

    Değerler:
    • Freeze: Sanal makine birkaç saniye duraklamak üzere zamanlandı. CPU ve ağ bağlantısı askıya alınabilir, ancak bellekte veya açık dosyalarda bir etkisi yoktur.
    • Reboot: Sanal makine yeniden başlatma için zamanlandı (kalıcı olmayan bellek kaybolur).
    • Redeploy: Sanal makine başka bir düğüme ilerlemek üzere zamanlandı (kısa ömürlü diskler kaybolur).
    • Preempt: Spot sanal makine siliniyor (kısa ömürlü diskler kaybolur).
    • Terminate: Sanal makine silinmek üzere zamanlandı.
    ResourceType Bu olayın etkilediği kaynak türü.

    Değerler:
    • VirtualMachine
    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:
    • ["FrontEnd_IN_0", "BackEnd_IN_0"]
    EventStatus Bu olayın durumu.

    Değerler:
    • Scheduled: Bu olay, özellikte belirtilen süreden sonra başlayacak şekilde zamanlandı NotBefore .
    • Started: Bu olay başlatıldı.
    Hiç 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:
    • Mon, 19 Eyl 2016 18:29:47 GMT
    Description Bu olayın açıklaması.

    Örnek:
    • Ana bilgisayar sunucusu bakımda.
    EventSource Olayın Başlatıcısı.

    Örnek:
    • Platform: Bu olay platform tarafından başlatılır.
    • User: Bu olay kullanıcı tarafından başlatılır.
    DurationInSeconds Olayın neden olduğu kesinti süresinin beklenen süresi.

    Örnek:
    • 9: Olayın neden olduğu kesintiye 9 saniye boyunca son verilecek.
    • -1: Etki süresi bilinmiyorsa veya geçerli değilse kullanılan varsayılan değer.

    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