Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Voordat u verdergaat met dit artikel, moet u vertrouwd raken met het Service Fabric-toepassingsmodel en het Service Fabric-hostingmodel. Dit artikel bevat een overzicht van het definiëren van een liveness- en gereedheidstest met behulp van manifestbestanden.
Levendigheidscontrole
Vanaf versie 7.1 biedt Azure Service Fabric ondersteuning voor een livenesstestmechanisme voor containertoepassingen en niet-containertoepassingen. Een liveness-probe helpt bij het vaststellen van de werking van een codepakket, dat opnieuw wordt opgestart als het niet snel reageert.
Gereedheidstest
Vanaf 8.2 wordt de readiness-probe ook ondersteund. Er wordt een gereedheidstest gebruikt om te bepalen of een codepakket gereed is om verkeer te accepteren. Als het bijvoorbeeld lang duurt voordat uw container de aanvraag verwerkt of als de aanvraagwachtrij vol is, kan uw codepakket geen verkeer meer accepteren en worden de eindpunten om het codepakket te bereiken verwijderd.
Het gedrag van de gereedheidstest is:
- Het container-/codepakketexemplaar start
- Eindpunten worden onmiddellijk gepubliceerd
- Gereedheidstest begint uitgevoerd te worden
- De gereedheidstest bereikt uiteindelijk de drempelwaarde voor fouten en het eindpunt wordt verwijderd, waardoor deze niet beschikbaar is
- De instance wordt uiteindelijk klaar
- Readiness Probe merkt op dat de instantie gereed is en publiceert het eindpunt opnieuw.
- Aanvragen worden opnieuw gerouteerd en slagen, aangezien het klaar was om aanvragen te verwerken.
Opmerking
Voor de gereedheidstest wordt het codepakket niet opnieuw opgestart, maar alleen de eindpunten worden niet gepubliceerd, zodat de replica/partitie die is ingesteld, niet wordt beïnvloed.
Semantiek
U kunt slechts één levensduur en één gereedheidstest per codepakket opgeven en het gedrag ervan beheren met behulp van deze velden:
type: Gebruikt om aan te geven of het testtype levendigheid of gereedheid is. Ondersteunde waarden zijn liveness of gereedheidinitialDelaySeconds: De initiële vertraging in seconden om de test uit te voeren nadat de container is gestart. De ondersteunde waarde is int. De standaardwaarde is 0 en het minimum is 0.timeoutSeconds: De periode in seconden waarna we de test beschouwen als mislukt, als deze niet is voltooid. De ondersteunde waarde is int. De standaardwaarde is 1 en het minimum is 1.periodSeconds: De periode in seconden die de frequentie van de proef aangeeft. De ondersteunde waarde is int. De standaardwaarde is 10 en het minimum is 1.failureThreshold: Wanneer deze waarde wordt bereikt, wordt de container opnieuw opgestart. De ondersteunde waarde is int. De standaardwaarde is 3 en het minimum is 1.successThreshold: Bij een fout moet de test worden uitgevoerd voor deze waarde om als geslaagd te worden beschouwd. De ondersteunde waarde is int. De standaardwaarde is 1 en het minimum is 1.
Er kan op elk moment hoogstens één sonde naar één container zijn. Als de probe niet binnen de ingestelde tijd in timeoutSeconds is voltooid, telt u de tijd bij de failureThreshold en wacht u.
Daarnaast genereert Service Fabric de volgende teststatusrapporten over DeployedServicePackage:
OK: De test slaagt voor de waarde die is ingesteld in successThreshold.Error: De foutCount-testfoutThreshold == , voordat de container opnieuw wordt opgestart.Warning:- De sonde faalt en failureCount<failureThreshold. Dit statusrapport blijft behouden tot failureCount de waarde bereikt die is ingesteld in failureThreshold of successThreshold.
- Bij succes na mislukking blijft de waarschuwing behouden, maar met bijgewerkte opeenvolgende successen.
Een sonde specificeren
U kunt een test opgeven in het ApplicationManifest.xml-bestand onder ServiceManifestImport.
De sensor kan voor een van de volgende opties zijn:
- HTTP
- TCP
- Exec
HTTP-probe
Voor een HTTP-test verzendt Service Fabric een HTTP-aanvraag naar de poort en het pad dat u opgeeft. Een retourcode groter dan of gelijk aan 200 en kleiner dan 400 wijst op succes.
Hier volgt een voorbeeld van het specificeren van een HTTP Liveness probe:
<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>
De HTTP-test heeft aanvullende eigenschappen die u kunt instellen:
path: het pad dat moet worden gebruikt in de HTTP-aanvraag.port: De poort die moet worden gebruikt voor tests. Deze eigenschap is verplicht. Het bereik is 1 tot 65535.scheme: Het schema dat moet worden gebruikt om verbinding te maken met het codepakket. Als deze eigenschap is ingesteld op HTTPS, wordt de certificaatverificatie overgeslagen. De standaardinstelling is HTTP.httpHeader: De headers die moeten worden ingesteld in de aanvraag. U kunt meerdere headers opgeven.host: het IP-adres van de host waarmee verbinding moet worden gemaakt.
Opmerking
Poort wordt niet ondersteund voor niet-containertoepassingen. Gebruik voor dit scenario het kenmerk EndpointRef="EndpointName" . Vervang EndpointName door de naam van het eindpunt dat is gedefinieerd in ServiceManifest.xml.
Als u met een HTTP-eindpunt gebruikt EndpointRef , is het scheme kenmerk optioneel omdat HTTP de standaardwaarde is. Als u met een HTTPS-eindpunt gebruikt EndpointRef , moet u het scheme kenmerk expliciet instellen op https.
<ServiceManifestImport>
<ServiceManifestRef ServiceManifestName="Stateless1Pkg" ServiceManifestVersion="1.0.0" />
<ConfigOverrides />
<Policies>
<CodePackagePolicy CodePackageRef="Code">
<Probes>
<Probe Type="Readiness" FailureThreshold="10" SuccessThreshold="2" InitialDelaySeconds="600" PeriodSeconds="60" TimeoutSeconds="20">
<HttpGet Path="/" EndpointRef="ServiceEndpoint" Scheme="https">
</HttpGet>
</Probe>
</Probes>
</CodePackagePolicy>
</Policies>
</ServiceManifestImport>
Opmerking
Service Fabric HTTPS-tests bieden geen ondersteuning voor verificatie van clientcertificaten tijdens de TLS-handshake. Zie het TLS Handshake-protocol voor meer informatie over het handshake-proces.
TCP-onderzoek
Voor een TCP-test probeert Service Fabric een socket op de container te openen met behulp van de opgegeven poort. Als deze verbinding tot stand kan brengen, wordt de test beschouwd als geslaagd. Hier volgt een voorbeeld van het opgeven van een sonde die gebruikmaakt van een 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-onderzoek
Met deze probe wordt een exec-opdracht in de container uitgevoerd en gewacht totdat de opdracht is voltooid.
Opmerking
De exec-opdracht maakt een door komma's gescheiden tekenreeks. De opdracht in het volgende voorbeeld werkt voor een Linux-container. Als u een Windows-container wilt testen, gebruikt u 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>
Volgende stappen
Zie het volgende artikel voor verwante informatie: