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 Protocol: TCP
Port: port target ingress
Waktu habis: 3 detik
Periode: 1 detik
Penundaan awal: 1 detik
Ambang keberhasilan: 1
Ambang kegagalan: 240
Kesiapan Protocol: TCP
Port: port target ingress
Waktu habis: 5 detik
Periode: 5 detik
Penundaan awal: 3 detik
Ambang keberhasilan: 1
Ambang kegagalan: 48
Keaktivaan Protocol: TCP
Port: port target ingress

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