Megosztás a következőn keresztül:


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ő:

  1. Elindul a tároló-/kódcsomag-példány
  2. A végpontok közzététele azonnal
  3. A készültségi mintavétel elkezd futni
  4. 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
  5. A példány végül készen áll
  6. 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
  7. 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 Readiness

  • initialDelaySeconds: 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
  • Exec

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: