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 incelemesine olanak tanır.

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

Container Apps aşağıdaki yoklamaları destekler:

İnceleme Açıklama
Başlangıç Uygulamanızın başarıyla başlatılıp başlatılmadığını denetler. Bu denetim canlılık yoklamasından ayrıdır ve uygulamanızın ilk başlatma aşamasında yürütülü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 kopyanın gelen istekleri işlemeye hazır olup olmadığını denetler.

Azure Container Apps'te desteklenen yoklama belirtiminin 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ızı sağlar.

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 araştırma 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 Container Apps ARM şablonu API belirtimine bakın.

{
  ...
  "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ş etkinleştirilirse, her tür için tanımlanmadıklarında aşağıdaki varsayılan yoklamalar, GPU iş yükü profilleri (hem ayrılmış hem de tüketim) hariç, ana uygulama kapsayıcısına otomatik olarak eklenir.

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: 1
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: 1
Hata eşiği: 48

Kapsayıcı uygulamanızı birden çok revizyon modunda çalıştırıyorsanız, bir revizyon dağıttıktan sonra trafiği bu revizyona yönlendirmeden önce hazırlık yoklamalarınızın başarı gösterdiğinden emin olana kadar bekleyin. Tek revizyon modunda, hazırlık denetimi başarılı bir durum döndürdüğünde trafik otomatik olarak yönlendirilir.

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, tekrar sağlıklı hale gelene veya hata eşiği aşılana kadar ilgili replikayı 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ılmadığı anlamına gelebilir.

Uygulamanızın başlatılması uzun sürüyorsa (bu, Java'da yaygındır), kapsayıcınızın çökmesini önlemek için genellikle probeleri özelleştirmeniz gerekir.

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