Dela via


Hälsoavsökningar i Azure Container Apps

Med hälsoavsökningar i Azure Container Apps kan Container Apps-körningen regelbundet inspektera statusen för dina containerappar.

Du kan konfigurera avsökningar med enbart TCP eller HTTP(S).

Container Apps stöder följande avsökningar:

Avsökning beskrivning
Start Kontrollerar om programmet har startats. Den här kontrollen är separat från liveness-avsökningen och körs under programmets inledande startfas.
Livskraft Kontrollerar om programmet fortfarande körs och svarar.
Beredskap Kontrollerar om en replik är redo att hantera inkommande begäranden.

En fullständig lista över avsökningsspecifikationen som stöds i Azure Container Apps finns i Azure REST API-specifikationer.

HTTP-avsökningar

MED HTTP-avsökningar kan du implementera anpassad logik för att kontrollera statusen för programberoenden innan du rapporterar en felfri status.

Konfigurera slutpunkterna för hälsoavsökningen så att de svarar med en HTTP-statuskod som är större än eller lika 200 med och mindre än 400 för att indikera att den lyckades. All annan svarskod utanför det här intervallet indikerar ett fel.

I följande exempel visas hur du implementerar en liveness-slutpunkt i JavaScript.

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-avsökningar

TCP-avsökningar väntar på att upprätta en anslutning till servern för att indikera att det har lyckats. Avsökningen misslyckas om den inte kan upprätta en anslutning till ditt program.

Begränsningar

  • Du kan bara lägga till en av varje avsökningstyp per container.
  • exec avsökningar stöds inte.
  • Portvärdena måste vara heltal. namngivna portar stöds inte.
  • gRPC stöds inte.

Exempel

Följande kodlista visar hur du kan definiera hälsoavsökningar för dina containrar.

Platshållarna ... anger utelämnad kod. Se API-specifikationen för ARM-mallar för Container Apps för fullständig INFORMATION om ARM-mallar.

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

Den valfria failureThreshold inställningen definierar antalet försök som Container Apps försöker köra avsökningen om körningen misslyckas. Försök som överskrider failureThreshold mängden orsakar olika resultat för varje avsökningstyp.

Standardkonfiguration

Om ingress är aktiverat läggs följande standardavsökningar automatiskt till i huvudappcontainern om ingen definieras för varje typ.

Avsökningstyp Standardvärden
Start Protokoll: TCP
Port: inkommande målport
Tidsgräns: 3 sekunder
Period: 1 sekund
Inledande fördröjning: 1 sekund
Tröskelvärde för lyckad åtgärd: 1
Tröskelvärde för fel: 240
Livskraft Protokoll: TCP
Port: inkommande målport
Beredskap Protokoll: TCP
Port: inkommande målport
Tidsgräns: 5 sekunder
Period: 5 sekunder
Inledande fördröjning: 3 sekunder
Tröskelvärde för lyckad åtgärd: 1
Tröskelvärde för fel: 48

Om du kör containerappen i flera revisionslägen väntar du tills dina beredskapsavsökningar visar att det har lyckats innan du flyttar trafik till den revisionen. I enkelt revisionsläge flyttas trafiken automatiskt när beredskapsavsökningen returnerar ett lyckat tillstånd.

Ett revisionstillstånd visas som felfritt om någon av replikerna misslyckas med kontrollen av beredskapsavsökningen, även om alla andra repliker i revisionen är felfria. Container Apps startar om repliken i fråga tills den är felfri igen eller om tröskelvärdet för fel överskrids. Om tröskelvärdet för fel överskrids kan du försöka starta om revisionen, men det kan innebära att revisionen inte är korrekt konfigurerad.

Om din app tar längre tid att starta (vilket är vanligt i Java) måste du ofta anpassa avsökningarna så att containern inte kraschar.

I följande exempel visas hur du konfigurerar liveness- och beredskapsavsökningar för att förlänga starttiderna.

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

Nästa steg