Sondy Service Fabric
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 aktivity pro kontejnerizaci a nekotenerizované aplikace. Sonda živé aktivity pomáhá hlásit liveness balíčku kódu, 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. Pokud například zpracování požadavku trvá příliš dlouho nebo pokud je fronta požadavků plná, balíček kódu už nemůže přijmout provoz a koncové body, které se dostanou k balíčku kódu, se odeberou.
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ý.
- Instance se nakonec stane připravenou.
- Sonda připravenosti zjistí, že instance je připravená a znovu publikuje koncový bod.
- Požadavky se znovu směrují a uspěly, protože byly připravené k obsluhě požadavků.
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 živou hodnotu a jednu sondu připravenosti a pomocí těchto polí můžete řídit její 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
: Při selhání se sonda považuje za úspěšnou, musí pro tuto hodnotu proběhnout úspěšně. 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 časové sadě v časových limitechSeconds, počkejte a spočítejte čas směrem k chyběThreshold.
Kromě toho Service Fabric vyvolá následující sestavy stavu sondy v DeployedServicePackage:
OK
: Sonda je úspěšná pro hodnotu nastavenou v successThreshold.Error
: Chyba probe failureCountThreshold == před restartováním kontejneru.Warning
:- Sonda selže a chyba failureCountThreshold<. Tato sestava stavu 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 pro některou z následujících možností:
- HTTP
- 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 a schéma nejsou podporovány 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.
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: