Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Azure Container Apps állapottesztjei lehetővé teszik, hogy a Container Apps-futtatókörnyezet rendszeresen ellenőrizze a tárolóalkalmazások állapotát.
A mintavételeket kizárólag TCP vagy HTTP(S) használatával állíthatja be.
Az Azure Container Apps a következő mintavételeket támogatja:
| Probe | Leírás |
|---|---|
| Induló vállalkozás | Ellenőrzi, hogy az alkalmazás sikeresen elindul-e. Ez az ellenőrzés elkülönül az élőség-mintavételtől, és az alkalmazás kezdeti indítási fázisában fut. |
| Élő állapot | Ellenőrzi, hogy az alkalmazás továbbra is fut-e és reagál-e. |
| Készenlét | Ellenőrzi, hogy a replika készen áll-e a bejövő kérések kezelésére. |
Az Azure Container Appsben támogatott mintavételi specifikációk teljes listáját az Azure REST API specifikációiban találja.
HTTP-mintavételek
A HTTP-mintavételekkel egyéni logikát implementálhat az alkalmazásfüggőségek állapotának ellenőrzéséhez, mielőtt kifogástalan állapotot jelez.
Konfigurálja az állapotadat-mintavétel végpontjait úgy, hogy a sikerességet jelezve az egyenlő vagy annál nagyobb 200 és kisebb 400 HTTP-állapotkóddal válaszoljanak. A tartományon kívüli egyéb válaszkódok hibát jeleznek.
Az alábbi példa bemutatja, hogyan implementálhat egy élőségi végpontot JavaScriptben.
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-mintavételek
A TCP-mintavételek megvárják, amíg kapcsolatot létesítenek a kiszolgálóval, hogy jelezzék a sikert. A mintavétel meghiúsul, ha nem tud kapcsolatot létesíteni az alkalmazással.
Korlátozások
- Tárolónként minden mintavételi eszköz típusból csak egyet adhat hozzá.
-
execa szondák nem támogatottak. - A portértékeknek egész számoknak kell lenniük; a névvel ellátott portok nem támogatottak.
- A gRPC nem támogatott.
Példák
Az alábbi kódlista bemutatja, hogyan határozhatja meg a tárolók állapotmintáit.
A ... helyőrzők a kihagyott kódot jelölik. Az ARM-sablon teljes részleteiért tekintse meg a Container Apps ARM-sablon API-specifikációját.
{
...
"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
}]
}]
...
}
Az opcionális failureThreshold beállítás határozza meg, hogy a Container Apps hány kísérletet kísérel meg végrehajtani a mintavétel végrehajtására, ha a végrehajtás sikertelen. Azokat a kísérleteket, amelyek túllépik az failureThreshold összeget, különböző eredményeket eredményeznek az egyes mintavételtípusok esetében.
Alapértelmezett konfiguráció
Ha engedélyezi a bejövő forgalmat, a portál automatikusan hozzáadja a következő alapértelmezett ellenőrzéseket a fő alkalmazáskonténerhez, ha nem határoz meg minden egyes típust, kivéve a GPU terhelési profilokat (mind dedikált, mind fogyasztási). A portál nem adja hozzá automatikusan az alapértelmezett mintavételeket a sidecar-tárolókhoz.
| Mintavétel típusa | Alapértelmezett értékek |
|---|---|
| startup vállalkozás | Protokoll: TCP Port: bemeneti célport Időtúllépés: 3 másodperc Időszak: 1 másodperc Kezdeti késleltetés: 1 másodperc Siker küszöbértéke: egy Hibaküszöb: 240 |
| Élő állapot | Protokoll: TCP Port: bemeneti célport |
| Készenlét | Protokoll: TCP Port: bemeneti célport Időtúllépés: 5 másodperc Időtartam: 5 másodperc Kezdeti késleltetés: 3 másodperc Siker küszöbértéke: egy Hibaküszöb: 48 |
Ha több verziómódban futtatja a tárolóalkalmazást, várjon a változat üzembe helyezése után, amíg a készenléti ellenőrzések sikerességet jeleznek, mielőtt a forgalmat az adott verzióra irányítaná át. Egypéldányú átdolgozási üzemmódban a forgalom automatikusan eltolódik, amint a készenléti ellenőrzés sikeres állapotot ad vissza.
A verzió állapota nem megfelelőként jelenik meg, ha bármelyik replikája nem felel meg a készültségi ellenőrzésnek, még akkor is, ha a verzió többi replikája kifogástalan állapotú. A Container Apps újraindítja a szóban forgó replikát, amíg ismét kifogástalan állapotba nem kerül, vagy meg nem lépi a hibaküszöböt. Ha túllépi a hibaküszöböt, próbálja meg újraindítani a változatot, de ez azt jelentheti, hogy a változat nincs megfelelően konfigurálva.
Ha az alkalmazás hosszú indítási időt igényelhet, állítsa be az ellenőrzési beállításokat, hogy a tároló ne induljon újra (vagy ne legyen egészségtelennek jelölve), mielőtt készen állna. A mintavételi konfiguráció testreszabásával biztosítható, hogy az alkalmazásnak elegendő ideje legyen az indításra a szükségtelen újraindítások aktiválása nélkül.
Az alábbi példa bemutatja, hogyan konfigurálható az élettartam- és készültségi mintavétel az indítási idők meghosszabbításához.
"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
}]