Sdílet prostřednictvím


Sondy stavu v Azure Container Apps

Sondy stavu služby Azure Container Apps umožňují modulu runtime Container Apps pravidelně kontrolovat stav vašich aplikací kontejnerů.

Testy můžete nastavit výhradně pomocí protokolu TCP nebo HTTP.S.

Container Apps podporuje následující sondy:

Sonda Popis
Spuštění Zkontroluje, jestli se vaše aplikace úspěšně spustila. Tato kontrola je oddělená od sondy aktivity a provádí se během počáteční fáze spuštění aplikace.
Životnost Zkontroluje, jestli je vaše aplikace stále spuštěná a responzivní.
Připravenost Kontroluje, jestli je replika připravená na zpracování příchozích požadavků.

Úplný seznam specifikace sondy podporované ve službě Azure Container Apps najdete v specifikacích rozhraní Azure REST API.

Testy HTTP

Testy HTTP umožňují implementovat vlastní logiku pro kontrolu stavu závislostí aplikace před hlášením stavu v pořádku.

Nakonfigurujte koncové body sondy stavu tak, aby reagovaly stavovým kódem HTTP, který je větší nebo roven 200 nebo menší než 400 značit úspěch. Jakýkoli jiný kód odpovědi mimo tento rozsah značí selhání.

Následující příklad ukazuje, jak implementovat koncový bod liveness v JavaScriptu.

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
  }
})

Sondy PROTOKOLU TCP

Sondy PROTOKOLU TCP čekají na navázání připojení k serveru, aby bylo možné indikovat úspěch. Sonda selže, pokud nemůže navázat připojení k vaší aplikaci.

Omezení

  • Pro každý kontejner můžete přidat pouze jeden z každého typu sondy.
  • exec sondy nejsou podporovány.
  • Hodnoty portů musí být celá čísla; pojmenované porty nejsou podporované.
  • GRPC není podporováno.

Příklady

Následující výpis kódu ukazuje, jak můžete definovat sondy stavu pro kontejnery.

Zástupné ... symboly označují vynechaný kód. Úplné podrobnosti o šabloně ARM najdete ve specifikaci rozhraní API šablon ARM pro Container Apps.

{
  ...
  "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
        }]
    }]
  ...
}

Volitelné failureThreshold nastavení definuje počet pokusů o spuštění služby Container Apps, pokud se spuštění nezdaří. Pokusy o překročení failureThreshold množství způsobují různé výsledky pro každý typ sondy.

Výchozí konfigurace

Pokud je povolený příchozí přenos dat, následující výchozí testy se automaticky přidají do hlavního kontejneru aplikace, pokud pro každý typ není definován žádný.

Typ sondy Výchozí hodnoty
Spuštění Protokol: TCP
Port: Cílový port příchozího přenosu dat
Časový limit: 3 sekundy
Období: 1 sekunda
Počáteční zpoždění: 1 sekunda
Prahová hodnota úspěchu: 1
Prahová hodnota selhání: 240
Připravenost Protokol: TCP
Port: Cílový port příchozího přenosu dat
Časový limit: 5 sekund
Období: 5 sekund
Počáteční zpoždění: 3 sekundy
Prahová hodnota úspěchu: 1
Prahová hodnota selhání: 48
Životnost Protokol: TCP
Port: Cílový port příchozího přenosu dat

Pokud spuštění aplikace trvá delší dobu (což je běžné v Javě), často je potřeba přizpůsobit sondy, aby se váš kontejner nehroutí.

Následující příklad ukazuje, jak nakonfigurovat testy aktivity a připravenosti pro rozšíření doby spuštění.

"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
       }]

Další kroky