Bagikan melalui


Probe Microsoft Azure Service Fabric

Sebelum Anda melanjutkan artikel ini, sebaiknya pelajari model aplikasi Service Fabric dan model hosting Service Fabric. Artikel ini memberikan gambaran umum tentang cara menentukan probe keaktifan dan kesiapan dengan menggunakan file manifes.

Probe liveness

Dimulai dengan versi 7.1, Azure Service Fabric mendukung mekanisme probe keaktifan untuk aplikasi dalam kontainer dan nonkontainer. Probe keaktifan membantu melaporkan keaktifan paket kode, yang akan dimulai ulang jika tidak merespons dengan cepat.

Probe kesiapan

Dimulai dengan 8.2, probe kesiapan juga didukung. Probe kesiapan digunakan untuk memutuskan apakah paket kode siap untuk menerima lalu lintas. Misalnya, jika kontainer Anda membutuhkan waktu lama untuk memproses permintaan atau jika antrean permintaan penuh, paket kode Anda tidak dapat menerima lalu lintas lagi dan karenanya titik akhir untuk mencapai paket kode akan dihapus.

Perilaku Probe Kesiapan adalah:

  1. Instans paket kontainer/kode dimulai
  2. Titik akhir segera dipublikasikan
  3. Probe Kesiapan mulai berjalan
  4. Probe Kesiapan akhirnya mencapai ambang kegagalan, dan titik akhir dihapus sehingga tidak tersedia
  5. Instans akhirnya menjadi siap
  6. Probe Kesiapan memberi tahu bahwa instans sudah siap dan menerbitkan kembali titik akhir
  7. Permintaan kembali dirutekan dan berhasil karena siap untuk melayani permintaan

Catatan

Untuk probe Kesiapan, paket kode tidak dimulai ulang, hanya titik akhir yang tidak dipublikasikan, sehingga replika/partisi yang diatur tidak terpengaruh.

Semantik

Anda hanya dapat menentukan probe satu keaktifan dan satu kesiapan per paket kode dan dapat mengontrol perilakunya dengan menggunakan bidang ini:

  • type: Digunakan untuk menentukan apakah jenis probe merupakan Keaktifan atau Kesiapan. Nilai-nilai yang didukung adalah Keaktifan atau Kesiapan

  • initialDelaySeconds: Penundaan awal dalam hitungan detik untuk mulai mengeksekusi probe setelah kontainer dimulai. Nilai yang didukung adalah int. Defaultnya adalah 0 dan minimumnya adalah 0.

  • timeoutSeconds: Periode dalam hitungan detik yang mana setelah itu kami menganggap probe gagal, jika probe tersebut belum berhasil selesai. Nilai yang didukung adalah int. Defaultnya adalah 1 dan minimumnya adalah 1.

  • periodSeconds: Periode dalam hitungan detik untuk menentukan frekuensi probe. Nilai yang didukung adalah int. Defaultnya adalah 10 dan minimumnya adalah 1.

  • failureThreshold: Ketika kita mencapai nilai ini, kontainer akan merestart. Nilai yang didukung adalah int. Defaultnya adalah 3 dan minimumnya adalah 1.

  • successThreshold: Pada kegagalan, agar probe dianggap berhasil, probe harus berjalan dengan sukses untuk nilai ini. Nilai yang didukung adalah int. Defaultnya adalah 1 dan minimumnya adalah 1.

Mungkin terdapat, paling banyak, satu probe untuk satu kontainer setiap saat. Jika probe tidak selesai dalam waktu yang ditetapkan di timeoutSeconds, tunggu dan hitung waktu menuju failureThreshold.

Selain itu, Service Fabric akan menunjukkan laporan kesehatan probe berikut pada DeployedServicePackage:

  • OK: Probe berhasil untuk nilai yang ditetapkan dalam successThreshold.

  • Error: Probe failureCount == failureThreshold, sebelum kontainer merestart.

  • Warning:

    • Probe gagal dan failureCount<failureThreshold. Laporan kesehatan ini tetap ada sampai failureCount mencapai nilai yang ditetapkan dalam failureThreshold atau successThreshold.
    • Pada keberhasilan setelah kegagalan, peringatan tetap ada tetapi dengan keberhasilan yang diperbarui berturut-turut.

Menentukan probe

Anda dapat menentukan probe dalam file ApplicationManifest.xml di bawah ServiceManifestImport.

Probe dapat digunakan untuk salah satu dari berikut ini:

  • HTTP
  • TCP
  • Exec

probe HTTP

Untuk probe HTTP, Service Fabric akan mengirim permintaan HTTP ke port dan jalur yang Anda tentukan. Kode pengembalian yang lebih besar dari atau sama dengan 200, dan kurang dari 400, menunjukkan keberhasilan.

Berikut adalah contoh cara menentukan probe Keaktifan 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>

Probe HTTP memiliki properti tambahan yang bisa Anda atur:

  • path: Jalur yang digunakan dalam permintaan HTTP.

  • port: Port yang digunakan untuk probe. Properti ini wajib. Rentangnya adalah 1 hingga 65535.

  • scheme: Skema yang digunakan untuk menyambungkan ke paket kode. Jika properti ini diatur ke HTTPS, verifikasi sertifikat akan dilompati. Pengaturan default adalah HTTP.

  • httpHeader: Header yang akan diatur dalam permintaan. Anda dapat menentukan beberapa header.

  • host: Alamat IP host untuk dihubungkan.

Catatan

Port dan skema tidak didukung untuk aplikasi non-kontainer. Untuk skenario ini, gunakan atribut EndpointRef="EndpointName" . Ganti 'EndpointName' dengan nama dari Titik Akhir yang ditentukan dalam ServiceManifest.xml.

probe TCP

Untuk probe TCP, Service Fabric akan mencoba membuka soket pada kontainer dengan menggunakan port yang ditentukan. Jika dapat membuat koneksi, probe dianggap berhasil. Berikut ini contoh cara menentukan probe yang menggunakan 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>

Probe exec

Probe ini akan mengeluarkan perintah exec ke dalam kontainer dan menunggu perintah tersebut selesai.

Catatan

Perintah exec mengambil string yang dipisahkan koma. Perintah dalam contoh berikut akan berfungsi untuk kontainer Linux. Jika Anda mencoba melakukan probe pada kontainer Windows, gunakan 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>

Langkah berikutnya

Lihat artikel berikut ini untuk informasi terkait: