Aracılığıyla paylaş


Azure Container Apps'te sağlık kontrolleri

Azure Container Apps sistem durumu yoklamaları, Container Apps çalışma zamanının kapsayıcı uygulamalarınızın durumunu düzenli olarak denetlemesine olanak tanır.

Yoklamaları yalnızca TCP veya HTTP(S) kullanarak ayarlayabilirsiniz.

Azure Container Apps aşağıdaki denetimleri destekler:

İnceleme Açıklama
Başlangıç Uygulamanızın başarıyla başlayıp başlamadiğini denetler. Bu denetim canlılık yoklamasından ayrıdır ve uygulamanızın ilk başlatma aşamasında çalışır.
Canlılık Uygulamanızın hala çalışıp çalışmadığını ve yanıt verme hızını denetler.
Hazırlık Bir replikasının gelen istekleri işlemeye hazır olup olmadığını denetler.

Azure Container Apps'te desteklenen yoklama belirtimlerinin tam listesi için bkz. Azure REST API belirtimleri.

HTTP yoklamaları

HTTP yoklamaları, iyi durumda durumu raporlamadan önce uygulama bağımlılıklarının durumunu denetlemek için özel mantık uygulamanıza olanak tanır.

Sistem durumu yoklama uç noktalarınızı başarılı olduğunu göstermek için daha büyük veya buna eşit 200 ve küçük 400 bir HTTP durum koduyla yanıt verecek şekilde yapılandırın. Bu aralığın dışındaki diğer yanıt kodları bir hata olduğunu gösterir.

Aşağıdaki örnekte JavaScript'te canlılık uç noktasının nasıl uygulanacakları gösterilmektedir.

const express = require('express');
const app = express();

app.get('/liveness', (req, res) => {
  let isSystemStable = false;
  
  // check for database availability
  // check filesystem structure
  //  etc.

  // set isSystemStable to true if all checks pass

  if (isSystemStable) {
    res.status(200); // Success
  } else {
    res.status(503); // Service unavailable
  }
})

TCP yoklamaları

TCP yoklamaları, başarılı olduğunu göstermek için sunucuyla bağlantı kurmak için bekler. Uygulamanıza bağlantı kuramıyorsa yoklama başarısız olur.

Kısıtlamalar

  • Kapsayıcı başına her prob türünden yalnızca birini ekleyebilirsiniz.
  • exec probeler desteklenmez.
  • Bağlantı noktası değerleri tamsayı olmalıdır; adlandırılmış bağlantı noktaları desteklenmez.
  • gRPC desteklenmez.

Örnekler

Aşağıdaki kod listesi, kapsayıcılarınız için sağlık yoklamalarını nasıl tanımlayabileceğinizi gösterir.

"... yer tutucuları atlanmış kodu gösterir." Tam ARM şablonu ayrıntıları için bkz. Container Apps ARM şablonu API belirtimi.

{
  ...
  "containers":[
    {
      "image":"nginx",
      "name":"web",
      "probes": [
        {
          "type": "Liveness",
          "httpGet": {
            "path": "/health",
            "port": 8080,
            "httpHeaders": [
              {
                "name": "Custom-Header",
                "value": "liveness probe"
              }]
          },
          "initialDelaySeconds": 7,
          "periodSeconds": 3
        },
        {
          "type": "Readiness",
          "tcpSocket": {
            "port": 8081
          },
          "initialDelaySeconds": 10,
          "periodSeconds": 3
        },
        {
          "type": "Startup",
          "httpGet": {
            "path": "/startup",
            "port": 8080,
            "httpHeaders": [
              {
                "name": "Custom-Header",
                "value": "startup probe"
              }]
          },
          "initialDelaySeconds": 3,
          "periodSeconds": 3
        }]
    }]
  ...
}

İsteğe bağlı failureThreshold ayar, yürütme başarısız olursa Container Apps'in araştırmayı yürütmeye çalıştığı deneme sayısını tanımlar. Miktarı aşan failureThreshold girişimler, her araştırma türü için farklı sonuçlara neden olur.

Varsayılan yapılandırma

Girişi etkinleştirirseniz, GPU iş yükü profilleri (ayrılmış ve tüketim) dışında her türü tanımlamazsanız portal aşağıdaki varsayılan yoklamaları otomatik olarak ana uygulama kapsayıcısına ekler. Portal, sepet kapsayıcılarına otomatik olarak varsayılan yoklamalar eklemez.

Yoklama türü Varsayılan değerler
Başlangıç Protokol: TCP
Bağlantı noktası: giriş hedef bağlantı noktası
Zaman aşımı: 3 saniye
Dönem: 1 saniye
İlk gecikme: 1 saniye
Başarı eşiği: Bir
Hata eşiği: 240
Canlılık Protokol: TCP
Bağlantı noktası: giriş hedef bağlantı noktası
Hazırlık Protokol: TCP
Bağlantı noktası: giriş hedef bağlantı noktası
Zaman aşımı: 5 saniye
Süre: 5 saniye
İlk gecikme: 3 saniye
Başarı eşiği: Bir
Hata eşiği: 48

Kapsayıcı uygulamanızı birden çok sürüm modunda çalıştırırsanız, bir sürümü dağıttığınızda, trafiği bu sürüme geçirmeden önce hazırlık denetimlerinizin başarılı olduğunu gösterene kadar bekleyin. Tek düzeltme modunda, hazır olma yoklaması başarılı bir durum döndürdüğünde trafik otomatik olarak değişir.

Düzeltmedeki diğer tüm çoğaltmalar iyi durumda olsa bile, çoğaltmalarından herhangi biri hazır olma yoklaması denetiminde başarısız olursa düzeltme durumu iyi durumda değil olarak görünür. Container Apps, yeniden iyi duruma gelene veya hata eşiği aşılana kadar söz konusu çoğaltmayı yeniden başlatır. Hata eşiği aşılırsa düzeltmeyi yeniden başlatmayı deneyin, ancak düzeltmenin doğru yapılandırılmamış olduğu anlamına gelebilir.

Uygulamanız uzun bir başlangıç süresi gerektiriyorsa, kapsayıcının hazır olmadan önce yeniden başlatılmasını (veya iyi durumda değil olarak işaretlenmesini) önlemek için yoklama ayarlarını yapın. Yoklama yapılandırmasını özelleştirmek, uygulamanızın gereksiz yeniden başlatmaları tetiklemeden başlamak için yeterli zamanı olduğundan emin olunmasını sağlar.

Aşağıdaki örnekte, başlangıç sürelerini uzatmak için canlılık ve hazırlık yoklamalarının nasıl yapılandırılması gösterilmektedir.

"probes": [
       {
        "type": "Liveness",
        "failureThreshold": 3,
        "periodSeconds": 10,
        "successThreshold": 1,
        "tcpSocket": {
          "port": 80
        },
        "timeoutSeconds": 1
       },
       {
         "type": "Readiness",
         "failureThreshold": 48,
         "initialDelaySeconds": 3,
         "periodSeconds": 5,
         "successThreshold": 1,
         "tcpSocket": {
           "port": 80
          },
          "timeoutSeconds": 5
       }]

Sonraki adımlar