Övervaka App Service-instanser med hjälp av hälsokontroll

Den här artikeln använder hälsokontroll i Azure Portal för att övervaka App Service instanser. Hälsokontrollen ökar programmets tillgänglighet genom att dirigera om begäranden från instanser med feltillstånd och ersätta instanser om de inte är fel. Din App Service plan ska skalas till två eller flera instanser för att använda hälsokontrollen fullt ut. Sökvägen för hälsokontroll bör kontrollera viktiga komponenter i ditt program. Om ditt program till exempel är beroende av en databas och ett meddelandesystem ska slutpunkten för hälsokontroll ansluta till dessa komponenter. Om programmet inte kan ansluta till en kritisk komponent ska sökvägen returnera en svarskod på 500-nivå för att indikera att appen är skadad.

Hälsokontrollfel

Vad App Service gör med hälsokontroller

  • När hälsokontrollen får en sökväg till din app pingar den här sökvägen på alla instanser av App Service-appen med intervall på 1 minut.
  • Om en instans inte svarar med en statuskod mellan 200–299 (inklusive) efter två eller flera begäranden, eller misslyckas med att svara på pinget, fastställer systemet att den är skadad och tar bort den.
  • Efter borttagningen fortsätter hälsokontrollen att pinga den felaktiga instansen. Om instansen börjar svara med en felfri statuskod (200–299) returneras instansen till lastbalanseraren.
  • Om en instans förblir skadad i en timme ersätts den med en ny instans.
  • När du skalar upp eller ut pingar App Service sökvägen för hälsokontroll för att säkerställa att nya instanser är redo.

Anteckning

  • Hälsokontrollen följer inte 302-omdirigeringar. Högst en instans ersätts per timme, med högst tre instanser per dag per App Service plan.
  • Observera att om hälsokontrollen ger statusen misslyckas kontrollen troligen på grund av Waiting for health check response HTTP-statuskoden 307, vilket kan inträffa om https-omdirigering är aktiverat men har HTTPS Only inaktiverats.

Aktivera hälsokontroll

Navigering för hälsokontroll i Azure-portalen

  • Om du vill aktivera hälsokontroll bläddrar du till Azure Portal och väljer din App Service appen.
  • Under Övervakning väljer du Hälsokontroll.
  • Välj Aktivera och ange en giltig URL-sökväg i programmet, till exempel /health eller /api/health .
  • Klicka på Spara.

Varning

Ändringar i hälsokontrollkonfigurationen startar om appen. För att minimera påverkan på produktionsappar rekommenderar vi att du konfigurerar mellanlagringsplatser och växlar till produktion.

Konfiguration

Förutom att konfigurera hälsokontrollalternativen kan du även konfigurera följande appinställningar:

Namn på appinställning Tillåtna värden Beskrivning
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 2 - 10 Det antal misslyckade begäranden som krävs för att en instans ska anses vara skadad och tas bort från lastbalanseraren. När du till exempel har 2 angett till tas dina instanser bort efter misslyckade 2 pingar. (Standardvärdet är 10)
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 0 - 100 Som standard undantas inte mer än hälften av instanserna från lastbalanseraren samtidigt för att undvika att de återstående felfria instanserna överväldigas. Om till exempel en App Service plan skalas till fyra instanser och tre är felaktiga, utesluts två. De andra två instanserna (en felfri och en med feltillstånd) fortsätter att ta emot begäranden. I värsta fall där alla instanser inte är fel kommer ingen att uteslutas.
Om du vill åsidosätta det här beteendet anger du appinställningen till ett värde 0 mellan och 100 . Ett högre värde innebär att fler instanser med feltillstånd tas bort (standardvärdet är 50 ).

Autentisering och säkerhet

Hälsokontrollen integreras med App Service funktioner för autentisering och auktorisering. Inga ytterligare inställningar krävs om dessa säkerhetsfunktioner är aktiverade.

Om du använder ett eget autentiseringssystem måste sökvägen för hälsokontroll tillåta anonym åtkomst. För att skydda slutpunkten för hälsokontroll bör du först använda funktioner som IP-begränsningar, klientcertifikat eller en Virtual Network för att begränsa programåtkomsten. Du kan skydda slutpunkten för hälsokontroll genom att kräva att User-Agent för inkommande begäran matchar HealthCheck/1.0 . Den User-Agent kan inte förfalskning eftersom begäran redan skyddas av tidigare säkerhetsfunktioner.

Övervakning

När du har tillhandahåller programmets sökväg för hälsokontroll kan du övervaka webbplatsens hälsotillstånd med hjälp av Azure Monitor. På bladet Hälsokontroll i portalen klickar du på Mått i det översta verktygsfältet. Då öppnas ett nytt blad där du kan se platsens historiska hälsostatus och skapa en ny aviseringsregel. Mer information om hur du övervakar dina webbplatser finns i guiden om Azure Monitor.

Begränsningar

  • Hälsokontroll ska inte aktiveras på Premium Functions-webbplatser. På grund av den snabba skalningen av Premium Functions kan hälsokontrollbegäranden orsaka onödiga variationer i HTTP-trafiken. Premium Funktioner har egna interna hälsoavsökningar som används för att fatta beslut om skalning.
  • Hälsokontroll kan aktiveras för kostnadsfria och delade App Service-planer så att du kan ha mått för webbplatsens hälsotillstånd och ställa in aviseringar, men eftersom kostnadsfria och delade platser inte kan skalas ut ersätts inte några ohälsosamma instanser. Du bör skala upp till Basic-nivån eller högre så att du kan skala ut till 2 eller fler instanser och dra full nytta av hälsokontrollen. Detta rekommenderas för produktionsprogram eftersom det ökar appens tillgänglighet och prestanda.

Vanliga frågor och svar

Vad händer om min app körs på en enda instans?

Om din app bara skalas till en instans och blir skadad tas den inte bort från lastbalanseraren eftersom det skulle ta programmet ur drift helt. Skala ut till två eller flera instanser till två eller flera instanser för att få fördelarna med omdirigering av hälsokontrollen. Om din app körs på en enda instans kan du fortfarande använda övervakningsfunktionen i Hälsokontroll för att hålla reda på programmets hälsa.

Varför visas inte hälsokontrollbegäran i mina loggar för frontend?

Hälsokontrollbegäran skickas till webbplatsen internt, så begäran visas inte i frontend-loggarna. Det innebär också att begäran kommer att ha 127.0.0.1 ursprunget eftersom den begäran skickas internt. Du kan lägga till loggutdrag i din hälsokontrollkod för att behålla loggarna när din sökväg för hälsokontroll pingas.

Skickas hälsokontrollbegäranden via HTTP eller HTTPS?

På Windows App Service skickas hälsokontrollbegäranden via HTTPS när endast HTTPS är aktiverat på webbplatsen. Annars skickas de via HTTP. I Linux App Service skickas hälsokontrollbegäranden endast via HTTP och kan inte skickas via HTTP S just nu.

Vad händer om jag har flera appar på App Service plan?

Instanser med feltillstånd tas alltid bort från lastbalanseringsrotationen oavsett andra appar på App Service-planen (upp till den procentandel som anges i WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT ). När en app på en instans förblir skadad i över en timme ersätts bara instansen om alla andra appar med hälsokontroll aktiverad också är felaktiga. Appar som inte har hälsokontroll aktiverat tas inte med i beräkningen.

Exempel

Imagine du har två program (eller en app med ett fack) med Hälsokontroll aktiverad, som kallas App A och App B. De finns på samma App Service plan och att planen skalas ut till 4 instanser. Om App A blir skadad på två instanser slutar lastbalanseraren att skicka begäranden till App A på dessa två instanser. Begäranden kommer fortfarande att dirigeras till App B på dessa instanser förutsatt att App B är felfri. Om App A inte är felhälsosam i mer än en timme på dessa två instanser ersätts dessa instanser endast om App B också är skadad på dessa instanser. Om App B är felfritt ersätts inte instansen.

Visuellt diagram som förklarar exempelscenariot ovan.

Anteckning

Om det fanns en annan plats eller plats i planen (plats C) utan hälsokontroll aktiverad, skulle det inte beaktas för instansersättningen.

Vad händer om alla mina instanser inte är felhälsosamma?

I scenariot där alla instanser av programmet är felaktiga tar App Service bort instanser från lastbalanseraren upp till den procentandel som anges i WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT . I det här scenariot skulle det effektivt leda till ett avbrott i programmet om alla appinstanser med fel skulle avlägsnas från lastbalanseringsrotationen.

Fungerar hälsokontrollen i App Service miljöer?

Ja, i App Service Environments (ASE) pingar plattformen dina instanser på den angivna sökvägen och tar bort eventuella instanser med feltillstånd från lastbalanseraren så att begäranden inte dirigeras till dem. För närvarande ersätts dock inte dessa ohälsosamma instanser med nya instanser om de inte är felhälsosamma i 1 timme.

Nästa steg