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:
- Azure sanal makine uzantıları
- Sanal Makine Ölçek Kümeleri değiştirme
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 numberOfProbes
ile 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 | http veya veya https tcp |
Dize |
port | protokol veya https olduğunda http isteğe bağlı, protokol olduğunda zorunludurtcp |
int |
requestPath | Protokol veya https olduğ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 | http veya veya https tcp |
Dize |
port | protokol veya https olduğunda http isteğe bağlı, protokol olduğunda zorunludurtcp |
int |
requestPath | Protokol veya https olduğ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.