Service Fabric-mintavételek
A cikk folytatása előtt ismerkedjen meg a Service Fabric alkalmazásmodelljével és a Service Fabric üzemeltetési modelljével. Ez a cikk áttekintést nyújt arról, hogyan definiálhat élő és készenléti mintavételt jegyzékfájlok használatával.
Élőség-mintavétel
A 7.1-es verziótól kezdve az Azure Service Fabric támogatja a tárolók és a nem tárolóalapú alkalmazások élettartam-mintavételi mechanizmusát. Az élőség-mintavétel segít jelenteni egy kódcsomag élőségét, amely újraindul, ha nem válaszol gyorsan.
Készültségi mintavétel
A 8.2-től kezdődően a készültségi mintavétel is támogatott. A rendszer készenlét-mintavételt használ annak eldöntésére, hogy egy kódcsomag készen áll-e a forgalom elfogadására. Ha például a tároló sok időt vesz igénybe a kérés feldolgozásához, vagy ha a kéréssor megtelt, akkor a kódcsomag nem tud többé forgalmat fogadni, ezért a kódcsomag eléréséhez szükséges végpontok törlődnek.
A készültségi mintavétel viselkedése a következő:
- Elindul a tároló-/kódcsomag-példány
- A végpontok közzététele azonnal
- A készültségi mintavétel elkezd futni
- A készültségi mintavétel végül eléri a hibaküszöböt, és a végpont el lesz távolítva, így elérhetetlenné válik
- A példány végül készen áll
- A készültségi mintavétel azt jelzi, hogy a példány készen áll, és ismét közzéteszi a végpontot
- A kérések átirányítása újra megtörtént, és sikeres volt, mivel készen állt a kérések kiszolgálására
Feljegyzés
A készültségi mintavétel esetében a kódcsomag nem indul újra, csak a végpontok nincsenek közzétéve, így a replika/partíció beállítása nem lesz hatással.
Szemantika
Kódcsomagonként csak egy élőséget és egy készültségi mintavételt adhat meg, és az alábbi mezők használatával szabályozhatja a viselkedését:
type
: Annak megadására szolgál, hogy a mintavétel típusa Liveness vagy Readiness. A támogatott értékek: Liveness vagy ReadinessinitialDelaySeconds
: A tároló elindítása után a mintavétel végrehajtásának első késleltetése másodpercben. A támogatott érték int. Az alapértelmezett érték 0, a minimum pedig 0.timeoutSeconds
: Az az időszak másodpercben, amely után sikertelennek tekintjük a mintavételt, ha nem fejeződött be sikeresen. A támogatott érték int. Az alapértelmezett érték 1, a minimum pedig 1.periodSeconds
: A mintavétel gyakoriságának megadásához másodpercben megadott időtartam. A támogatott érték int. Az alapértelmezett érték 10, a minimum pedig 1.failureThreshold
: Amikor eléri ezt az értéket, a tároló újraindul. A támogatott érték int. Az alapértelmezett érték 3, a minimum pedig 1.successThreshold
: Hiba esetén ahhoz, hogy a mintavétel sikeresnek minősüljön, sikeresen le kell futnia ehhez az értékhez. A támogatott érték int. Az alapértelmezett érték 1, a minimum pedig 1.
Legfeljebb egy szondát lehet egy tárolóba bármely pillanatban. Ha a mintavétel nem fejeződik be a timeoutSeconds időkorlátban megadott időben, várjon, és számolja meg az időt a hibathreshold felé.
A Service Fabric emellett a következő mintavételállapot-jelentéseket fogja előhozni az DeployedServicePackage szolgáltatásban:
OK
: A mintavétel sikeres a successThreshold értékhez.Error
: A mintavételi hibaCount == failureThreshold, mielőtt a tároló újraindul.Warning
:- A mintavétel meghiúsul, és a failureCount<failureThreshold. Ez az állapotjelentés addig marad, amíg a failureCount el nem éri a failureThreshold vagy successThreshold értékben megadott értéket.
- A sikertelenség utáni sikeresség esetén a figyelmeztetés továbbra is megmarad, de egymást követő sikerek frissülnek.
Mintavétel megadása
A ServiceManifestImport területen megadhatja a mintavételt a ApplicationManifest.xml fájlban.
A mintavétel az alábbiak bármelyikéhez használható:
- HTTP
- TCP
- Főnök
HTTP-mintavétel
HTTP-mintavétel esetén a Service Fabric HTTP-kérést küld a megadott portra és elérési útra. A 200-nál nagyobb vagy egyenlő, 400-nál kisebb visszatérési kód sikerességet jelez.
Íme egy példa a HTTP Liveness-mintavétel megadására:
<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>
A HTTP-mintavétel további tulajdonságokkal rendelkezik, amelyeket beállíthat:
path
: A HTTP-kérelemben használni kívánt elérési út.port
: A mintavételekhez használandó port. Ez a tulajdonság kötelező. A tartomány 1 és 65535 között van.scheme
: A kódcsomaghoz való csatlakozáshoz használandó séma. Ha ez a tulajdonság HTTPS értékre van állítva, a rendszer kihagyja a tanúsítvány-ellenőrzést. Az alapértelmezett beállítás a HTTP.httpHeader
: A kérelemben beállítani kívánt fejlécek. Több fejlécet is megadhat.host
: A gazda IP-címe, amelyhez csatlakozni szeretne.
Feljegyzés
A port és a séma nem támogatott a nem tárolóalapú alkalmazások esetében. Ebben az esetben használja az EndpointRef="EndpointName" attribútumot. Cserélje le az "EndpointName" elemet a ServiceManifest.xml definiált végpont nevére.
TCP-mintavétel
TCP-mintavétel esetén a Service Fabric megpróbál megnyitni egy szoftvercsatornát a tárolón a megadott port használatával. Ha létre tud hozni egy kapcsolatot, a mintavétel sikeresnek minősül. Íme egy példa a TCP-szoftvercsatornát használó mintavétel megadására:
<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-mintavétel
Ez a mintavétel egy exec parancsot ad ki a tárolóba, és várja meg, amíg a parancs befejeződik.
Feljegyzés
Az Exec parancs egy vesszővel tagolt sztringet használ. A következő példában szereplő parancs linuxos tárolókhoz fog működni. Ha Windows-tárolót próbál mintavételeztetni, használja a parancsmagot.
<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>
Következő lépések
A kapcsolódó információkért tekintse meg a következő cikket: