Aracılığıyla paylaş


Service Fabric Yoklamaları

Bu makaleye devam etmeden önce Service Fabric uygulama modeli ve Service Fabric barındırma modeli hakkında bilgi edinin. Bu makalede, bildirim dosyalarını kullanarak canlılık ve hazırlık araştırması tanımlamaya yönelik genel bir bakış sunulmaktadır.

Canlılık araştırması

Sürüm 7.1'den başlayarak Azure Service Fabric, kapsayıcılı uygulamalar ve kapsayıcılı olmayan uygulamalar için canlılık yoklama mekanizmasını destekler. Canlılık araştırması, bir kod paketinin canlılığını bildirmeye yardımcı olur ve bu da hızlı yanıt vermezse yeniden başlatılır.

Hazır olma yoklaması

8.2'den itibaren hazırlık yoklaması da desteklenir. Bir kod paketinin trafiği kabul etmeye hazır olup olmadığına karar vermek için hazır olma araştırması kullanılır. Örneğin kapsayıcınızın isteği işlemesi uzun sürüyorsa veya istek kuyruğu doluysa kod paketiniz artık trafiği kabul edemez ve bu nedenle kod paketine ulaşacak uç noktalar kaldırılır.

Hazırlık Yoklaması'nın davranışı şöyledir:

  1. Kapsayıcı/kod paketi örneği başlatılır
  2. Uç noktalar hemen yayımlanır
  3. Hazırlık Yoklaması çalışmaya başlıyor
  4. Hazırlık Yoklaması sonunda hata eşiğine ulaşır ve uç nokta kaldırılarak kullanılamaz duruma gelir
  5. Örnek sonunda hazır hale gelir
  6. Hazırlık Yoklaması örneğin hazır olduğunu fark eder ve uç noktayı yeniden yayımlar
  7. İstekler yeniden yönlendirilir ve isteklere hizmet etmeye hazır olduğundan başarılı olur

Not

Hazırlık yoklaması için kod paketi yeniden başlatılmaz, yalnızca uç noktalar yayımdan kaldırıldığından çoğaltma/bölüm kümesi etkilenmez.

Semantik

Kod paketi başına yalnızca bir canlılık ve bir hazırlık yoklaması belirtebilir ve bu alanları kullanarak davranışını denetleyebilirsiniz:

  • type: Yoklama türünün Canlılık mı yoksa Hazırlık mı olduğunu belirtmek için kullanılır. Desteklenen değerler Canlılık veya Hazırlık'tır

  • initialDelaySeconds: Kapsayıcı başlatıldıktan sonra araştırmayı yürütmeye başlamak için saniye olarak ilk gecikme. Desteklenen değer int değeridir. Varsayılan değer 0, en düşük değer ise 0'dır.

  • timeoutSeconds: Yoklamanın başarıyla tamamlanmamış olması durumunda başarısız olarak değerlendirdiğimiz saniye cinsinden süre. Desteklenen değer int değeridir. Varsayılan değer 1, en düşük değer ise 1'dir.

  • periodSeconds: Yoklamanın sıklığını belirtmek için saniye cinsinden süre. Desteklenen değer int değeridir. Varsayılan değer 10, en düşük değer ise 1'dir.

  • failureThreshold: Bu değere bastığımızda kapsayıcı yeniden başlatılır. Desteklenen değer int değeridir. Varsayılan değer 3, en düşük değer ise 1'dir.

  • successThreshold: Hata durumunda, yoklamanın başarılı olarak kabul edilmesi için bu değer için başarıyla çalışması gerekir. Desteklenen değer int değeridir. Varsayılan değer 1, en düşük değer ise 1'dir.

Her an bir kapsayıcıda en fazla bir yoklama olabilir. Yoklama timeoutSeconds içinde ayarlanan süre içinde tamamlanmazsa, bekleyin ve failureThreshold'a doğru süreyi sayın.

Ayrıca Service Fabric, DeployedServicePackage'da aşağıdaki yoklama sistem durumu raporlarını oluşturur:

  • OK: Yoklama successThreshold içindeki değer kümesi için başarılı olur.

  • Error: Kapsayıcı yeniden başlatılmadan önce yoklama failureCount == failureThreshold.

  • Warning:

    • Yoklama başarısız oluyor ve failureCount<failureThreshold. FailureCount failureThreshold veya successThreshold içinde ayarlanan değere ulaşana kadar bu sistem durumu raporu kalır.
    • Hatadan sonra başarılı olduğunda uyarı kalır ancak art arda güncelleştirilen başarılarla devam eder.

Yoklama belirtme

ServiceManifestImport altındaki ApplicationManifest.xml dosyasında bir yoklama belirtebilirsiniz.

Yoklama aşağıdakilerden herhangi biri için olabilir:

  • HTTP
  • TCP
  • Exec

HTTP araştırma

Bir HTTP yoklaması için Service Fabric, belirttiğiniz bağlantı noktasına ve yola bir HTTP isteği gönderir. 200'den büyük veya buna eşit ve 400'den küçük bir dönüş kodu başarılı olduğunu gösterir.

HTTP Canlılık yoklaması belirtme örneği aşağıda verilmiştir:

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

HTTP yoklaması, ayarlayabileceğiniz ek özelliklere sahiptir:

  • path: HTTP isteğinde kullanılacak yol.

  • port: Yoklamalar için kullanılacak bağlantı noktası. Bu özellik zorunludur. Aralık 1 ile 65535 arasındadır.

  • scheme: Kod paketine bağlanmak için kullanılacak düzen. Bu özellik HTTPS olarak ayarlanırsa sertifika doğrulaması atlanır. Varsayılan ayar HTTP'dir.

  • httpHeader: İstekte ayarlanacağı üst bilgiler. Birden çok üst bilgi belirtebilirsiniz.

  • host: Bağlanacak ana bilgisayar IP adresi.

Not

Kapsayıcılı olmayan uygulamalar için bağlantı noktası ve düzen desteklenmez. Bu senaryo için lütfen EndpointRef="EndpointName" özniteliğini kullanın. 'EndpointName' yerine ServiceManifest.xml'da tanımlanan Uç Nokta adını yazın.

TCP araştırma

Bir TCP yoklaması için Service Fabric, belirtilen bağlantı noktasını kullanarak kapsayıcıda bir yuva açmayı dener. Bağlantı kurabiliyorsa, yoklama başarılı olarak kabul edilir. TCP yuvası kullanan bir yoklamanın nasıl belirtileceğini gösteren bir örnek aşağıda verilmişti:

  <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 yoklaması

Bu yoklama kapsayıcıya bir exec komutu yayınlar ve komutun bitmesini bekler.

Not

Exec komutu virgülle ayrılmış bir dize alır. Aşağıdaki örnekteki komut bir Linux kapsayıcısı için çalışır. Bir Windows kapsayıcısını yoklamaya çalışıyorsanız cmd kullanın.

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

Sonraki adımlar

İlgili bilgiler için aşağıdaki makaleye bakın: