Sanal Makine Ölçek Kümeleri ile Uygulama Durumu uzantısını kullanma

Uygulamanızın sistem durumunu izlemek, dağıtımınızı yönetmek ve yükseltmek için önemli bir sinyaldir. Azure Sanal Makine Ölçek Kümeleri, dağıtımınızı yükseltmek için tek tek örneklerin sistem durumunu izlemeye dayanan Otomatik İşletim Sistemi-Görüntü Yükseltmeleri ve Otomatik VM Konuk Düzeltme Eki Uygulama gibi Sıralı Yükseltmeler için destek sağlar. Uygulama Durumu Uzantısı'nı ölçek kümenizdeki her örneğin uygulama durumunu izlemek ve Otomatik Örnek Onarımları'nı kullanarak örnek onarımları gerçekleştirmek için de kullanabilirsiniz.

Bu makalede, Sanal Makine Ölçek Kümeleri dağıtılan uygulamalarınızın durumunu izlemek için iki tür Uygulama Durumu uzantısını (İkili Sistem Durumu Durumları veya Zengin Sistem Durumu Durumları) nasıl kullanabileceğiniz açıklanmaktadır.

Önkoşullar

Bu makalede şunları bildiğiniz varsayılır:

Dikkat

Uygulama Durumu Uzantısı, vm'yi sağlıklı olarak etiketlemek için yapılandırılan bağlantı noktasında tcp veya istek yolunda http/https tutarlı bir yoklama yanıtı almayı bekler. VM'de çalışan bir uygulama yoksa veya yoklama yanıtı yapılandıramıyorsanız, VM'niz İyi Durumda Değil (İkili Sistem Durumu Durumları) veya Bilinmiyor (Zengin Sistem Durumu Durumları) olarak gösterilir. Yerel uç noktaya yayılan durum yoklaması yanıtlarının örnekleri için bkz . uygulama durumu örnekleri .

Not

Bir Sanal Makine Ölçek Kümesi için Uygulama Durumu Uzantısı veya Sistem Durumu Yoklaması olmak üzere yalnızca bir sistem durumu izleme kaynağı kullanılabilir. Her iki seçeneği de etkinleştirdiyseniz Örnek Onarımları veya Otomatik İşletim Sistemi Yükseltmeleri gibi düzenleme hizmetlerini kullanmadan önce bir seçeneği kaldırmanız gerekir.

Uygulama Durumu uzantısı ne zaman kullanılır?

Uygulama Durumu Uzantısı bir Sanal Makine Ölçek Kümesi örneği içinde dağıtılır ve ölçek kümesi örneğinin içinden uygulama durumuyla ilgili raporlar. Uzantı, yerel bir uygulama uç noktasında yoklar ve uygulamadan alınan TCP/HTTP(S) yanıtlarına göre sistem durumunu güncelleştirir. Bu sistem durumu Azure tarafından iyi durumda olmayan örneklerde onarım başlatmak ve bir örneğin yükseltme işlemleri için uygun olup olmadığını belirlemek için kullanılır.

Uzantı, vm içinden sistem durumunu raporlar ve Azure Load Balancer sistem durumu yoklamaları gibi bir dış yoklamanın kullanılamadığı durumlarda kullanılabilir.

İkili ve Zengin Sistem Durumu Karşılaştırması

Uygulama Durumu Uzantıları iki seçeneğe sahiptir: İkili Sistem Durumu Durumları ve Zengin Sistem Durumu Durumları. Aşağıdaki tabloda iki seçenek arasındaki bazı önemli farklar vurgulanır. Genel öneriler için bu bölümün sonuna bakın.

Özellikler İkili Sistem Durumu Durumları Zengin Sağlık Durumları
Kullanılabilir Sistem Durumu İki kullanılabilir durum: sağlıklı, iyi durumda değil Dört kullanılabilir durum: Sağlıklı, İyi Durumda Değil, Başlatılamıyor, Bilinmiyor1
Sistem Durumu Sinyalleri Gönderme Sistem durumu sinyalleri HTTP/HTTPS yanıt kodları veya TCP bağlantıları aracılığıyla gönderilir. HTTP/HTTPS protokolündeki sistem durumu sinyalleri yoklama yanıt kodu ve yanıt gövdesi aracılığıyla gönderilir. TCP protokolü aracılığıyla sistem durumu sinyalleri, İkili Sistem Durumu Durumlarından değişmeden kalır.
İyi Durumda Olmayan Örnekleri Tanımlama Uygulamadan sağlıklı sinyal alınmazsa örnekler otomatik olarak İyi durumda değil durumuna düşer. İyi durumda olmayan bir örnek, uzantı yapılandırmasıyla ilgili bir sorunu (örneğin, ulaşılamayan uç nokta) veya uygulamayla ilgili bir sorunu (örneğin, 200 olmayan durum kodu) gösterebilir. Örnekler yalnızca uygulama iyi durumda olmayan bir yoklama yanıtı yayıyorsa iyi durumda değil durumuna geçer. Kullanıcılar, iyi durumda olmayan uygulamalar2 ile örnekleri tanımlamak ve işaretlemek için özel mantık uygulamakla sorumludur. Yanlış uzantı ayarlarına (örneğin, ulaşılamaz uç nokta) veya geçersiz durum yoklaması yanıtlarına sahip örnekler Bilinmeyen durum 2'nin altınagirer.
Yeni oluşturulan örnekler için başlatma durumu Başlatma durumu kullanılamıyor. Yeni oluşturulan örnekler sabit bir duruma geçmeden önce biraz zaman alabilir. Durumu başlatma , yeni oluşturulan örneklerin sıralı yükseltmeler veya örnek onarım işlemleri için uygun hale getirmeden önce kararlı bir Sistem Durumu'na geçmesine olanak tanır.
HTTP/HTTPS protokolü Desteklenir Desteklenir
TCP protokolü Desteklenir Sınırlı Destek – TCP protokolünde bilinmeyen durum kullanılamıyor. TCP'de Sistem Durumu davranışları için Bkz . Zengin Sistem Durumu protokol tablosu .

1 Bilinmeyen durum TCP protokolünde kullanılamıyor. 2 Yalnızca HTTP/HTTPS protokolü için geçerlidir. TCP protokolü, İkili Sistem Durumu Durumlarındaki iyi durumda olmayan örnekleri tanımlama işleminin aynısını izler.

Genel olarak, aşağıdaki durumlarda İkili Sistem Durumu durumları kullanmanız gerekir:

  • İyi durumda olmayan bir örneği tanımlamak ve işaretlemek için özel mantık yapılandırmakla ilgilenmiyorsunuz
  • Yeni oluşturulan örnekler için bir başlatma yetkisiz kullanım süresi gerekmez

Aşağıdaki durumlarda Zengin Sistem Durumu Durumlarını kullanmanız gerekir:

  • HTTP/HTTPS protokolü aracılığıyla sistem durumu sinyalleri gönderirsiniz ve sistem durumu bilgilerini yoklama yanıt gövdesi aracılığıyla gönderebilirsiniz
  • İyi durumda olmayan örnekleri tanımlamak ve işaretlemek için özel mantık kullanmak istiyorsunuz
  • Örneği sıralı yükseltme veya örnek onarımları için uygun hale getirmeden önce düzenli bir Sistem Durumu durumuna geçmeleri için yeni oluşturulan örnekler için başlatma yetkisiz kullanım süresi ayarlamak istiyorsunuz

İkili Sistem Durumu Durumları

İkili Sistem Durumu raporlaması, sağlıklı ve iyi durumda olmayan iki Sistem Durumu içerir. Aşağıdaki tablolarda Sistem Durumu Durumlarının nasıl yapılandırıldığına ilişkin kısa bir açıklama sağlanır.

HTTP/HTTPS Protokolü

Protokol Sistem Durumu Açıklama
http/https Sağlam İyi durumda sinyal göndermek için uygulamanın 200 yanıt kodu döndürmesi beklenir.
http/https Uygun Değil Uygulamadan 200 yanıt kodu alınmazsa örnek İyi Durumda Değil olarak işaretlenir.

TCP Protokolü

Protokol Sistem Durumu Açıklama
TCP Sağlam Sağlıklı sinyal göndermek için, sağlanan uygulama uç noktasıyla başarılı bir el sıkışması yapılmalıdır.
TCP Uygun Değil Sağlanan uygulama uç noktasıyla başarısız veya tamamlanmamış bir el sıkışması oluştuysa örnek iyi durumda değil olarak işaretlenir.

İyi durumda olmayan bir duruma neden olabilecek bazı senaryolar şunlardır:

  • Uygulama uç noktası 200 olmayan bir durum kodu döndürdüğünde
  • Sanal makine örneklerinin içinde uygulama sistem durumu sağlamak için yapılandırılmış bir uygulama uç noktası olmadığında
  • Uygulama uç noktası yanlış yapılandırıldığında
  • Uygulama uç noktasına ulaşılamıyorsa

Zengin Sağlık Durumları

Zengin Sistem Durumu raporlaması başlatan, sağlıklı, iyi durumda olmayan ve bilinmeyen dört Sistem Durumu içerir. Aşağıdaki tablolarda, her sistem durumunun nasıl yapılandırıldığına ilişkin kısa bir açıklama sağlanır.

HTTP/HTTPS Protokolü

Protokol Sistem Durumu Açıklama
http/https Sağlam İyi durumda sinyal göndermek için uygulamanın şu şekilde bir yoklama yanıtı döndürmesi beklenir: Yoklama Yanıt Kodu: Durum 2xx, Yoklama Yanıt Gövdesi:{"ApplicationHealthState": "Healthy"}
http/https Uygun Değil İyi durumda olmayan bir sinyal göndermek için uygulamanın şu şekilde bir yoklama yanıtı döndürmesi beklenir: Yoklama Yanıt Kodu: Durum 2xx, Yoklama Yanıt Gövdesi: {"ApplicationHealthState": "Unhealthy"}
http/https Başlatılıyor Örnek, uzantı başlangıç zamanında otomatik olarak başlatma durumuna girer. Daha fazla bilgi için bkz . Başlatma durumu.
http/https Bilinmiyor Aşağıdaki senaryolarda Bilinmeyen bir durum oluşabilir: uygulama tarafından 2xx olmayan bir durum kodu döndürülürse, yoklama isteği zaman aşımına uğradığında, uygulama uç noktasına ulaşılamadığında veya yanlış yapılandırıldığında, yanıt gövdesinde eksik veya geçersiz bir değer sağlandığında ApplicationHealthState veya yetkisiz kullanım süresi sona erdiğinde. Daha fazla bilgi için bkz . Bilinmeyen durum.

TCP Protokolü

Protokol Sistem Durumu Açıklama
TCP Sağlam Sağlıklı sinyal göndermek için, sağlanan uygulama uç noktasıyla başarılı bir el sıkışması yapılmalıdır.
TCP Uygun Değil Sağlanan uygulama uç noktasıyla başarısız veya tamamlanmamış bir el sıkışması oluştuysa örnek iyi durumda değil olarak işaretlenir.
TCP Başlatılıyor Örnek, uzantı başlangıç zamanında otomatik olarak başlatma durumuna girer. Daha fazla bilgi için bkz . Başlatma durumu.

Başlatma durumu

Bu durum yalnızca Zengin Sistem Durumu durumları için geçerlidir. Başlatma durumu, uzantı başlangıç zamanında yalnızca bir kez gerçekleşir ve uzantı ayarları gracePeriod ve numberOfProbesile yapılandırılabilir.

Uzantı başlangıcında, uygulama durumu iki senaryodan biri gerçekleşene kadar Başlatma durumunda kalır:

  • NumberOfProbes aracılığıyla yapılandırıldığı şekilde aynı Sistem Durumu (sağlıklı veya iyi durumda değil) art arda birkaç kez bildirilir
  • Süresi gracePeriod doluyor

Aynı Sistem Durumu (sağlıklı veya iyi durumda değil) art arda bildirilirse, uygulama durumu Başlatma durumundan ve bildirilen Sistem Durumu'na (İyi veya İyi Durumda Değil) geçiş yapacaktır.

Örnek

= 3 ise numberOfProbes , bu şu anlama gelir:

  • Başlatma durumundan Sağlıklı duruma geçmek için: Uygulama sistem durumu uzantısı HTTP/HTTPS veya TCP protokolü aracılığıyla ardışık üç sağlıklı sinyal almalıdır
  • Başlatmadan İyi Durumda Değil durumuna geçmek için: Uygulama sistem durumu uzantısı HTTP/HTTPS veya TCP protokolü aracılığıyla ardışık üç iyi durumda olmayan sinyal almalıdır

gracePeriod Uygulama tarafından ardışık sistem durumu bildirilmeden önce süresi dolarsa, örnek durumu aşağıdaki gibi belirlenir:

  • HTTP/HTTPS protokolü: Uygulama durumu Başlatılıyor'dan Bilinmiyor'a geçiş yapacak
  • TCP protokolü: Uygulama durumu Başlatılıyor'dan İyi Durumda Değil'e geçiş yapacak

Bilinmeyen durum

Bu durum yalnızca Zengin Sistem Durumu durumları için geçerlidir. Bilinmeyen durum yalnızca "http" veya "https" yoklamaları için bildirilir ve aşağıdaki senaryolarda gerçekleşir:

  • Uygulama tarafından 2xx olmayan bir durum kodu döndürülürse
  • Yoklama isteği zaman aşımına uğradıklarında
  • Uygulama uç noktasına ulaşılamıyorsa veya yanlış yapılandırıldığında
  • Yanıt gövdesinde eksik ApplicationHealthState veya geçersiz bir değer sağlandığında
  • Yetkisiz kullanım süresi dolduğunda

Bilinmeyen durumdaki bir örnek, iyi durumda olmayan bir örneğe benzer şekilde değerlendirilir. Etkinleştirilirse, örnek onarımları Bilinmeyen bir örnekte gerçekleştirilirken, sıralı yükseltmeler örnek sağlıklı duruma geri dönene kadar duraklatılır.

Aşağıdaki tabloda Sıralı Yükseltmeler ve Örnek Onarımları için sistem durumu yorumu gösterilmektedir:

Sistem Durumu Sıralı Yükseltme yorumu Örnek Onarımları tetikleyicisi
Başlatılıyor Durumun sağlıklı, iyi durumda olmayan veya bilinmiyor olmasını bekleyin Hayır
Sağlam Sağlam Hayır
Uygun Değil Uygun Değil Yes
Bilinmiyor Uygun Değil Yes

İkili Sistem Durumu Durumları için uzantı şeması

Aşağıdaki JSON, Uygulama Durumu uzantısının şemasını gösterir. Uzantı, ilişkili bağlantı noktası veya istek yolu ile en azından "tcp", "http" veya "https" isteği gerektirir.

{
  "extensionProfile" : {
     "extensions" : [
      {
        "name": "HealthExtension",
        "properties": {
          "publisher": "Microsoft.ManagedServices",
          "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
          "autoUpgradeMinorVersion": true,
          "typeHandlerVersion": "1.0",
          "settings": {
            "protocol": "<protocol>",
            "port": <port>,
            "requestPath": "</requestPath>",
            "intervalInSeconds": 5,
            "numberOfProbes": 1
          }
        }
      }
    ]
  }
} 

Özellik değerleri

Veri Akışı Adı Değer / Örnek Veri Türü
apiVersion 2018-10-01 tarih
yayınevi Microsoft.ManagedServices Dize
Tür ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) Dize
typeHandlerVersion 1.0 Dize

Ayarlar

Veri Akışı Adı Değer / Örnek Veri Türü
protokol httpveya veya httpstcp Dize
port protokol veya httpsolduğunda http isteğe bağlı, protokol olduğunda zorunludurtcp int
requestPath Protokol veya httpsolduğunda http protokole izin verilmezse zorunludurtcp Dize
intervalInSeconds İsteğe bağlı olarak, varsayılan değer 5 saniyedir. Bu, her sistem durumu araştırması arasındaki aralıktır. Örneğin intervalInSeconds == 5 ise, yerel uygulama uç noktasına her 5 saniyede bir bir yoklama gönderilir. int
numberOfProbes İsteğe bağlı, varsayılan değer 1'dir. Bu, sistem durumunun değişmesi için gereken ardışık yoklama sayısıdır. Örneğin, numberOfProbles == 3 ise, sistem durumunu "İyi Durumda Değil" durumundan "Sağlıklı" duruma değiştirmek için ardışık 3 "Sağlıklı" sinyali gerekir. Aynı gereksinim, sistem durumunu "İyi durumda değil" durumuna değiştirmek için de geçerlidir. int

Zengin Sistem Durumu Durumları için uzantı şeması

Aşağıdaki JSON, Zengin Sistem Durumu Durumları uzantısının şemasını gösterir. Uzantı, ilişkili bağlantı noktası veya istek yolu ile en az bir "http" veya "https" isteği gerektirir. TCP yoklamaları da desteklenir, ancak yoklama yanıt gövdesi aracılığıyla ayarlanamayacak ApplicationHealthState ve Bilinmeyen duruma erişimi olmayacaktır.

{
  "extensionProfile" : {
     "extensions" : [
      {
        "name": "HealthExtension",
        "properties": {
          "publisher": "Microsoft.ManagedServices",
          "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
          "autoUpgradeMinorVersion": true,
          "typeHandlerVersion": "2.0",
          "settings": {
            "protocol": "<protocol>",
            "port": <port>,
            "requestPath": "</requestPath>",
            "intervalInSeconds": 5,
            "numberOfProbes": 1,
            "gracePeriod": 600
          }
        }
      }
    ]
  }
} 

Özellik değerleri

Veri Akışı Adı Değer / Örnek Veri Türü
apiVersion 2018-10-01 tarih
yayınevi Microsoft.ManagedServices Dize
Tür ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) Dize
typeHandlerVersion 2.0 Dize

Ayarlar

Veri Akışı Adı Değer / Örnek Veri Türü
protokol httpveya veya httpstcp Dize
port protokol veya httpsolduğunda http isteğe bağlı, protokol olduğunda zorunludurtcp int
requestPath Protokol veya httpsolduğunda http protokole izin verilmezse zorunludurtcp Dize
intervalInSeconds İsteğe bağlı olarak, varsayılan değer 5 saniyedir. Bu, her sistem durumu araştırması arasındaki aralıktır. Örneğin intervalInSeconds == 5 ise, yerel uygulama uç noktasına her 5 saniyede bir bir yoklama gönderilir. int
numberOfProbes İsteğe bağlı, varsayılan değer 1'dir. Bu, sistem durumunun değişmesi için gereken ardışık yoklama sayısıdır. Örneğin, numberOfProbles == 3 ise, "İyi durumda değil"/"Bilinmiyor" durumundan "Sağlıklı" durumuna geçmek için ardışık 3 "Sağlıklı" sinyali gerekir. Sistem durumunu "İyi durumda değil" veya "Bilinmiyor" durumuna değiştirmek için de aynı gereksinim geçerlidir. int
gracePeriod İsteğe bağlı, varsayılan = intervalInSeconds * numberOfProbes; maksimum yetkisiz kullanım süresi 7200 saniyedir int

Uygulama Durumu uzantısını dağıtma

Aşağıdaki örneklerde ayrıntılı olarak açıklandığı gibi, Uygulama Durumu uzantısını ölçek kümelerinize dağıtmanın birden çok yolu vardır.

İkili Sistem Durumu Durumları

Aşağıdaki örnek, Uygulama Durumu uzantısını (myHealthExtension adıyla) Windows tabanlı bir ölçek kümesinin ölçek kümesi modelindeki extensionProfile öğesine ekler.

Bu örneği, PUT yerine PATCH çağrısı yaparak var olan bir uzantıyı Zengin Sistem Durumu'ndan İkili Sistem Durumu'na değiştirmek için de kullanabilirsiniz.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "location": "<location>", 
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "1.0",
    "settings": {
      "protocol": "<protocol>",
      "port": <port>,
      "requestPath": "</requestPath>"
    }
  }
}

Zaten dağıtılmış bir uzantıyı düzenlemek için kullanın PATCH .

Uzantıyı yüklemek için VM'leri yükseltin.

POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
  "instanceIds": ["*"]
}

Zengin Sağlık Durumları

Aşağıdaki örnek, Uygulama Durumu - Zengin Durumlar uzantısını (adıylamyHealthExtension) extensionProfile Windows tabanlı ölçek kümesinin ölçek kümesi modeline ekler.

Put yerine PATCH çağrısı yaparak mevcut bir uzantıyı İkili'den Zengin Sistem Durumu Durumlarına yükseltmek için de bu örneği kullanabilirsiniz.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "location": "<location>",
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "2.0",
    "settings": {
      "protocol": "<protocol>",
      "port": <port>,
      "requestPath": "</requestPath>",
      "intervalInSeconds": <intervalInSeconds>,
      "numberOfProbes": <numberOfProbes>,
      "gracePeriod": <gracePeriod>
    }
  }
}

Zaten dağıtılmış bir uzantıyı düzenlemek için kullanın PATCH .

Uzantıyı yüklemek için VM'leri yükseltin.

POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
  "instanceIds": ["*"]
}

Sorun giderme

Yoklama yanıtlarını yapılandırma konusunda yardım gerekiyor

Yerel uç noktaya yayılan durum yoklaması yanıtlarının örnekleri için bkz . uygulama durumu örnekleri .

VMHealth görüntüleme - tek örnek

Get-AzVmssVM 
  -InstanceView `
  -ResourceGroupName <rgName> `
  -VMScaleSetName <vmssName> `
  -InstanceId <instanceId> 

VMHealth görüntüleme – toplu çağrı

Bu yalnızca Tekdüzen düzenleme ile Sanal Makine Ölçek Kümeleri için kullanılabilir.

GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`

Sistem Durumu görünmüyor

Sistem Durumu Azure portalında veya GET çağrısıyla gösterilmiyorsa VM'nin en son modele yükseltildiğinden emin olun. VM en son modelde değilse VM'yi yükseltin ve sistem durumu açılır.

Uzantı yürütme çıkış günlüğü

Uzantı yürütme çıktısı aşağıdaki dizinlerde bulunan dosyalara kaydedilir:

C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension

Günlükler ayrıca düzenli aralıklarla uygulama sistem durumunu yakalar.

Sonraki adımlar

Uygulamanızı Sanal Makine Ölçek Kümeleri dağıtmayı öğrenin.