Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
- Containern eller kodpaket-instansen startar
- Slutpunkter publiceras omedelbart
- Beredskapsavsökningen börjar köras
- Beredskapsavsökningen når slutligen tröskelvärdet för fel och slutpunkten tas bort vilket gör den otillgänglig
- Instansen blir så småningom klar
- Ready-probe upptäcker att instansen är klar och publicerar slutpunkten igen.
- 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 ReadinessinitialDelaySeconds
: 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: