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 sond för att kontrollera aktivitet hjälper till att rapportera statusen för ett kodpaket, vilket 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 beredskapskontrollen är:

  1. Containern eller kodpaket-instansen 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. Ready-probe upptäcker att instansen är klar och publicerar slutpunkten igen.
  7. Begäranden omdirigeras och lyckas eftersom systemet var redo att hantera dem.

Anmärkning

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 anser testen som misslyckad, om den inte har slutförts framgångsrikt. Värdet som stöds är int. Standardvärdet är 1 och minimivärdet är 1.

  • periodSeconds: Tiden i sekunder för att ange proben 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: Vid fel, för att avsökningen ska anses vara lyckad, måste den köras framgångsrikt 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 sond till en behållare 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älsorapporter för avsökning i DeployedServicePackage:

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

  • Error: Proben felräknare == feltröskel, innan containern startas om.

  • Warning:

    • Avsökningen misslyckas och failureCount-värdet överstiger <. Den här hälsorapporten förblir tills failureCount når värdet som angetts i failureThreshold eller successThreshold.
    • När det lyckas efter ett misslyckande förblir varningen, men med uppdaterade sekventiella framgångar.

Ange en avsökning

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

Proben 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 sonder. 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 hoppar 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.

Anmärkning

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 sondens vara lyckad. Här är ett exempel på hur du anger en prob som använder 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 på att kommandot ska slutföras.

Anmärkning

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: