Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Než budete pokračovat v tomto článku, seznamte se s aplikačním modelem Service Fabric a modelem hostování Service Fabric. Tento článek obsahuje přehled o tom, jak definovat test aktivity a připravenosti pomocí souborů manifestu.
Sonda živé aktivity
Od verze 7.1 podporuje Azure Service Fabric mechanismus sondy živosti pro kontejnerizované a nekontejnerizované aplikace. Sonda živosti pomáhá hlásit provozuschopnost balíčku s kódem, který se restartuje, pokud nereaguje rychle.
Sonda připravenosti
Od verze 8.2 se podporuje také sonda připravenosti. Sonda připravenosti se používá k rozhodnutí, jestli je balíček kódu připravený přijímat provoz. Například, pokud váš kontejner zpracovává požadavek příliš pomalu, nebo pokud je fronta požadavků plná, váš balíček kódu již nemůže přijmout žádný další provoz, a proto budou koncové body vedoucí k balíčku kódu odebrány.
Chování testu připravenosti je:
- Spustí se instance balíčku kontejneru nebo kódu.
- Koncové body se publikují okamžitě.
- Spustí se sonda připravenosti.
- Sonda připravenosti nakonec dosáhne prahové hodnoty selhání a koncový bod se odebere, aby byl nedostupný.
- Nakonec se instance připraví.
- Sonda připravenosti zjistí, že instance je připravená a znovu publikuje koncový bod.
- Požadavky jsou znovu směrovány a jsou úspěšné, protože bylo připraveno je obsloužit.
Poznámka:
V případě testu připravenosti se balíček kódu nerestartuje, pouze koncové body se nepublikují, aby nedošlo k ovlivnění repliky nebo oddílu.
Sémantika
Pro každý balíček kódu můžete zadat pouze jednu sondu živosti a jednu sondu připravenosti a pomocí těchto polí můžete řídit jeho chování.
type: Slouží k určení, zda je typ sondy Liveness nebo Readiness. Podporované hodnoty jsou Liveness nebo ReadinessinitialDelaySeconds: Počáteční prodleva v sekundách ke spuštění sondy po spuštění kontejneru. Podporovaná hodnota je int. Výchozí hodnota je 0 a minimum je 0.timeoutSeconds: Doba v sekundách, po které považujeme sondu za neúspěšnou, pokud se úspěšně nedokončila. Podporovaná hodnota je int. Výchozí hodnota je 1 a minimum je 1.periodSeconds: Doba v sekundách určující frekvenci sondy. Podporovaná hodnota je int. Výchozí hodnota je 10 a minimální hodnota je 1.failureThreshold: Po dosažení této hodnoty se kontejner restartuje. Podporovaná hodnota je int. Výchozí hodnota je 3 a minimum je 1.successThreshold: I v případě selhání je pro to, aby byla sonda považována za úspěšnou, nutné, aby úspěšně proběhla v rámci tohoto parametru. Podporovaná hodnota je int. Výchozí hodnota je 1 a minimum je 1.
V každém okamžiku může existovat maximálně jedna sonda do jednoho kontejneru. Pokud se sonda nedokončí v čase nastaveném v timeoutSeconds, počkejte a připočítejte čas k failureThreshold.
Kromě toho Service Fabric vyvolá následující zdravotní zprávy o stavu pro DeployedServicePackage:
OK: Sonda je úspěšná pro hodnotu nastavenou v successThreshold.Error: Chyba probefailureCountThreshold == před restartováním kontejneru.Warning:- Sonda selže a failureCount<práh selhání. Tato zdravotní zpráva zůstane, dokud počet selhání nedosáhne hodnoty nastavené v failureThreshold nebo successThreshold.
- Při úspěchu po selhání zůstane upozornění, ale s aktualizovanými po sobě jdoucími úspěchy.
Určení sondy
Sondu můžete zadat v souboru ApplicationManifest.xml v části ServiceManifestImport.
Sonda může být použita pro kteroukoliv z následujících:
- HTTP
- protokol TCP
- Vykonavatel
Test protokolu HTTP
Pro sondu HTTP odešle Service Fabric požadavek HTTP na port a cestu, kterou zadáte. Návratový kód, který je větší nebo roven 200, a menší než 400 označuje úspěch.
Tady je příklad, jak zadat sondu liveness PROTOKOLU HTTP:
<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>
Sonda HTTP má další vlastnosti, které můžete nastavit:
path: Cesta, která se má použít v požadavku HTTP.port: Port, který se má použít pro sondy. Tato vlastnost je povinná. Rozsah je 1 až 65535.scheme: Schéma, které se má použít pro připojení k balíčku kódu. Pokud je tato vlastnost nastavená na HTTPS, ověření certifikátu se přeskočí. Výchozí nastavení je HTTP.httpHeader: Hlavičky, které se mají nastavit v požadavku. Můžete zadat více hlaviček.host: IP adresa hostitele, ke které se chcete připojit.
Poznámka:
Port není podporován pro nekotenerizované aplikace. V tomto scénáři použijte atribut EndpointRef="EndpointName" . Nahraďte "EndpointName" názvem z koncového bodu definovaného v ServiceManifest.xml.
Pokud používáte EndpointRef s koncovým bodem HTTP, atribut scheme je volitelný, protože HTTP je výchozí hodnotou. Pokud používáte EndpointRef s koncovým bodem HTTPS, musíte atribut explicitně nastavit scheme na 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>
Poznámka:
Sondy HTTPS v Service Fabric nepodporují ověřování klientských certifikátů během TLS handshake. Podrobnosti o procesu handshake najdete v protokolu TLS Handshake Protocol.
Test protokolu TCP
Pro sondu TCP se Service Fabric pokusí otevřít soket v kontejneru pomocí zadaného portu. Pokud může navázat připojení, je sonda považována za úspěšnou. Tady je příklad, jak určit sondu, která používá soket TCP:
<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>
Sonda Exec
Tato sonda vydá příkaz exec do kontejneru a počká na dokončení příkazu.
Poznámka:
Příkaz Exec přebírá řetězec oddělený čárkami. Příkaz v následujícím příkladu bude fungovat pro kontejner Linuxu. Pokud se pokoušíte testovat kontejner Windows, použijte příkaz 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>
Další kroky
Související informace najdete v následujícím článku: