Bagikan melalui


Pemeriksaan kesehatan di Azure Container Apps

Pemeriksaan kesehatan Azure Container Apps memungkinkan runtime Aplikasi Kontainer untuk memeriksa status aplikasi kontainer Anda secara teratur.

Anda dapat menyiapkan pemeriksaan menggunakan TCP atau HTTP secara eksklusif.

Container Apps mendukung pemeriksaan berikut:

Probe Deskripsi
Startup Memeriksa apakah aplikasi Anda telah berhasil dimulai. Pemeriksaan ini terpisah dari pemeriksaan keaktifan dan dijalankan selama fase startup awal aplikasi Anda.
Keaktivaan Memeriksa apakah aplikasi Anda masih berjalan dan responsif.
Kesiapan Memeriksa untuk melihat apakah replika siap untuk menangani permintaan masuk.

Untuk daftar lengkap spesifikasi pemeriksaan yang didukung di Azure Container Apps, lihat spesifikasi Azure REST API.

Pemeriksaan HTTP

Pemeriksaan HTTP memungkinkan Anda menerapkan logika kustom untuk memeriksa status dependensi aplikasi sebelum melaporkan status sehat.

Konfigurasikan titik akhir pemeriksaan kesehatan Anda untuk merespons dengan kode status HTTP yang lebih besar dari atau sama dengan 200 dan kurang dari 400 untuk menunjukkan keberhasilan. Kode respons lain di luar rentang ini menunjukkan kegagalan.

Contoh berikut menunjukkan cara mengimplementasikan titik akhir liveness di JavaScript.

const express = require('express');
const app = express();

app.get('/liveness', (req, res) => {
  let isSystemStable = false;
  
  // check for database availability
  // check filesystem structure
  //  etc.

  // set isSystemStable to true if all checks pass

  if (isSystemStable) {
    res.status(200); // Success
  } else {
    res.status(503); // Service unavailable
  }
})

Pemeriksaan TCP

Pemeriksaan TCP menunggu untuk membuat koneksi dengan server untuk menunjukkan keberhasilan. Pemeriksaan gagal jika tidak dapat membuat koneksi ke aplikasi Anda.

Batasan

  • Anda hanya dapat menambahkan salah satu dari setiap jenis probe per kontainer.
  • exec pemeriksaan tidak didukung.
  • Nilai port harus berupa bilangan bulat; port bernama tidak didukung.
  • gRPC tidak didukung.

Contoh

Daftar kode berikut menunjukkan bagaimana Anda dapat menentukan pemeriksaan kesehatan untuk kontainer Anda.

Tempat penampung ... menunjukkan kode yang dihilangkan. Lihat Spesifikasi API template ARM Container Apps untuk detail template ARM lengkap.

{
  ...
  "containers":[
    {
      "image":"nginx",
      "name":"web",
      "probes": [
        {
          "type": "liveness",
          "httpGet": {
            "path": "/health",
            "port": 8080,
            "httpHeaders": [
              {
                "name": "Custom-Header",
                "value": "liveness probe"
              }]
          },
          "initialDelaySeconds": 7,
          "periodSeconds": 3
        },
        {
          "type": "readiness",
          "tcpSocket": {
            "port": 8081
          },
          "initialDelaySeconds": 10,
          "periodSeconds": 3
        },
        {
          "type": "startup",
          "httpGet": {
            "path": "/startup",
            "port": 8080,
            "httpHeaders": [
              {
                "name": "Custom-Header",
                "value": "startup probe"
              }]
          },
          "initialDelaySeconds": 3,
          "periodSeconds": 3
        }]
    }]
  ...
}

Pengaturan opsional failureThreshold menentukan jumlah upaya Container Apps mencoba menjalankan pemeriksaan jika eksekusi gagal. Upaya yang melebihi failureThreshold jumlah menyebabkan hasil yang berbeda untuk setiap jenis pemeriksaan.

Konfigurasi default

Jika ingress diaktifkan, pemeriksaan default berikut secara otomatis ditambahkan ke kontainer aplikasi utama jika tidak ada yang ditentukan untuk setiap jenis.

Jenis pemeriksaan Nilai default
Startup Protokol: TCP
Port: port target ingress
Waktu habis: 3 detik
Periode: 1 detik
Penundaan awal: 1 detik
Ambang keberhasilan: 1
Ambang kegagalan: 240
Keaktivaan Protokol: TCP
Port: port target ingress
Kesiapan Protokol: TCP
Port: port target ingress
Waktu habis: 5 detik
Periode: 5 detik
Penundaan awal: 3 detik
Ambang keberhasilan: 1
Ambang kegagalan: 48

Jika Anda menjalankan aplikasi kontainer dalam beberapa mode revisi, setelah menyebarkan revisi, tunggu hingga pemeriksaan kesiapan menunjukkan keberhasilan sebelum Mengalihkan lalu lintas ke revisi tersebut. Dalam mode revisi tunggal, lalu lintas digeser secara otomatis setelah pemeriksaan kesiapan mengembalikan status berhasil.

Status revisi muncul sebagai tidak sehat jika salah satu replikanya gagal pemeriksaan kesiapannya, bahkan jika semua replika lain dalam revisi sehat. Container Apps memulai ulang replika yang dimaksud sampai sehat lagi atau ambang kegagalan terlampaui. Jika ambang kegagalan terlampaui, coba mulai ulang revisi, tetapi mungkin berarti revisi tidak dikonfigurasi dengan benar.

Jika aplikasi Anda membutuhkan waktu lama untuk memulai (yang umum di Java) Anda sering kali perlu menyesuaikan pemeriksaan sehingga kontainer Anda tidak mengalami crash.

Contoh berikut menunjukkan cara mengonfigurasi pemeriksaan keaktifan dan kesiapan untuk memperpanjang waktu startup.

"probes": [
       {
        "type": "liveness",
        "failureThreshold": 3,
        "periodSeconds": 10,
        "successThreshold": 1,
        "tcpSocket": {
          "port": 80
        },
        "timeoutSeconds": 1
       },
       {
         "type": "readiness",
         "failureThreshold": 48,
         "initialDelaySeconds": 3,
         "periodSeconds": 5,
         "successThreshold": 1,
         "tcpSocket": {
           "port": 80
          },
          "timeoutSeconds": 5
       }]

Langkah berikutnya