Dela via


Service Fabric-avsökningar

Innan du fortsätter med den här artikeln bör du bekanta dig med Service Fabric-programmodellen och Service Fabric-värdmodellen. Den här artikeln innehåller en översikt över hur du definierar en liveness- och beredskapsavsökning med hjälp av manifestfiler.

Liveness-avsökning

Från och med version 7.1 stöder Azure Service Fabric en liveness-avsökningsmekanism för containerbaserade och icke-containerbaserade program. En liveness-avsökning hjälper till att rapportera liveness för ett kodpaket, som startas om om det inte svarar snabbt.

Beredskapsavsökning

Från och med 8.2 stöds även beredskapsavsökning. En beredskapsavsökning används för att avgöra om ett kodpaket är redo att ta emot trafik. Om containern till exempel tar lång tid att bearbeta begäran eller om begärandekön är full kan kodpaketet inte längre acceptera trafik och därför tas slutpunkterna för att nå kodpaketet bort.

Beteendet för beredskapsavsökningen är:

  1. Containern/kodpaketinstansen startar
  2. Slutpunkter publiceras omedelbart
  3. Beredskapsavsökningen börjar köras
  4. Beredskapsavsökningen når slutligen tröskelvärdet för fel och slutpunkten tas bort vilket gör den otillgänglig
  5. Instansen blir så småningom klar
  6. Beredskapsavsökningen märker att instansen är klar och publicerar slutpunkten igen
  7. Begäranden dirigeras igen och lyckas eftersom de är redo att hantera begäranden

Kommentar

För beredskapsavsökningen startas inte kodpaketet om, bara slutpunkterna avpubliceras så att replik-/partitionsuppsättningen inte påverkas.

Semantik

Du kan bara ange en liveness och en beredskapsavsökning per kodpaket och kan styra dess beteende med hjälp av följande fält:

  • type: Används för att ange om avsökningstypen är Liveness eller Readiness. Värden som stöds är Liveness eller Readiness

  • initialDelaySeconds: Den inledande fördröjningen i sekunder för att börja köra avsökningen när containern har startats. Värdet som stöds är int. Standardvärdet är 0 och minimivärdet är 0.

  • timeoutSeconds: Perioden i sekunder efter vilken vi betraktar avsökningen som misslyckad, om den inte har slutförts. Värdet som stöds är int. Standardvärdet är 1 och minimivärdet är 1.

  • periodSeconds: Perioden i sekunder för att ange avsökningens frekvens. Värdet som stöds är int. Standardvärdet är 10 och minimivärdet är 1.

  • failureThreshold: När vi når det här värdet startas containern om. Värdet som stöds är int. Standardvärdet är 3 och minimivärdet är 1.

  • successThreshold: För att avsökningen ska anses vara lyckad måste den köras för det här värdet. Värdet som stöds är int. Standardvärdet är 1 och minimivärdet är 1.

Det kan som mest finnas en avsökning till en container när som helst. Om avsökningen inte slutförs i den tid som angetts i timeoutSeconds väntar du och räknar tiden mot feletThreshold.

Dessutom genererar Service Fabric följande hälsorapporterför avsökning i DeployedServicePackage:

  • OK: Avsökningen lyckas för värdet som angetts i successThreshold.

  • Error: AvsökningsfelCount == failureThreshold, innan containern startas om.

  • Warning:

    • Avsökningen misslyckas och failureCount<failureThreshold. Den här hälsorapporten förblir tills failureCount når värdet som angetts i failureThreshold eller successThreshold.
    • Vid lyckat resultat efter fel förblir varningen men med uppdaterade efterföljande framgångar.

Ange en avsökning

Du kan ange en avsökning i filen ApplicationManifest.xml under ServiceManifestImport.

Avsökningen kan vara för något av följande:

  • HTTP
  • TCP
  • Exec

HTTP-avsökning

För en HTTP-avsökning skickar Service Fabric en HTTP-begäran till den port och sökväg som du anger. En returkod som är större än eller lika med 200 och mindre än 400 indikerar lyckad.

Här är ett exempel på hur du anger en HTTP Liveness-avsökning:

  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <Policies>
      <CodePackagePolicy CodePackageRef="Code">
        <Probes>
          <Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
            <HttpGet Path="/" Port="8081" Scheme="http">
              <HttpHeader Name="Foo" Value="Val"/>
              <HttpHeader Name="Bar" Value="val1"/>
            </HttpGet>
          </Probe>
        </Probes>
      </CodePackagePolicy>
    </Policies>
  </ServiceManifestImport>

HTTP-avsökningen har ytterligare egenskaper som du kan ange:

  • path: Sökvägen som ska användas i HTTP-begäran.

  • port: Porten som ska användas för avsökningar. Den här egenskapen är obligatorisk. Intervallet är 1 till 65535.

  • scheme: Det schema som ska användas för att ansluta till kodpaketet. Om den här egenskapen är inställd på HTTPS hoppas certifikatverifieringen över. Standardinställningen är HTTP.

  • httpHeader: Rubrikerna som ska anges i begäran. Du kan ange flera rubriker.

  • host: Den värd-IP-adress som ska anslutas till.

Kommentar

Port och schema stöds inte för icke-containerbaserade program. I det här scenariot använder du attributet EndpointRef="EndpointName" . Ersätt "EndpointName" med namnet från slutpunkten som definierats i ServiceManifest.xml.

TCP-avsökning

För en TCP-avsökning försöker Service Fabric öppna en socket i containern med hjälp av den angivna porten. Om den kan upprätta en anslutning anses avsökningen vara lyckad. Här är ett exempel på hur du anger en avsökning som använder en TCP-socket:

  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <Policies>
      <CodePackagePolicy CodePackageRef="Code">
        <Probes>
          <Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
            <TcpSocket Port="8081"/>
          </Probe>
        </Probes>
      </CodePackagePolicy>
    </Policies>
  </ServiceManifestImport>

Exec-avsökning

Den här avsökningen utfärdar ett exec-kommando i containern och väntar tills kommandot har slutförts.

Kommentar

Kommandot Exec tar en kommaavgränsad sträng. Kommandot i följande exempel fungerar för en Linux-container. Om du försöker avsöka en Windows-container använder du cmd.

  <ServiceManifestImport>
    <ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
    <ConfigOverrides />
    <Policies>
      <CodePackagePolicy CodePackageRef="Code">
        <Probes>
          <Probe Type="Liveness" FailureThreshold="5" SuccessThreshold="2" InitialDelaySeconds="10" PeriodSeconds="30" TimeoutSeconds="20">
            <Exec>
              <Command>ping,-c,2,localhost</Command>
            </Exec>
          </Probe>        
       </Probes>
      </CodePackagePolicy>
    </Policies>
  </ServiceManifestImport>

Nästa steg

Se följande artikel för relaterad information: