Azure Container Apps'te sistem durumu yoklamaları
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:
Yoklama | 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 çoğaltmanı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
yoklamalar 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 sistem durumu yoklamalarını nasıl tanımlayabileceğinizi gösterir.
Yer ...
tutucular atlanmış kodu belirtir.
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ımlanmamışsa aşağıdaki varsayılan yoklamalar otomatik olarak ana uygulama kapsayıcısına 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 düzeltme modunda çalıştırıyorsanız, düzeltmeyi dağıttığınızda, trafiği bu düzeltmeye geçirmeden önce hazırlık yoklamalarınızın 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 kaydırılır.
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ılmadığı anlamına gelebilir.
Uygulamanızın başlatılması uzun sürüyorsa (Java'da yaygındır) kapsayıcınızın kilitlenmemesi için genellikle yoklamaları ö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
}]