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
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
Livskraft Protokoll: TCP
Port: inkommande målport

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