Topik ini mencakup latar belakang, batasan, dan perilaku pemeriksaan kesehatan instans fungsi, serta cara mengonfigurasinya di Konsol Function Compute.
Latar belakang
Fungsi yang menggunakan runtime kustom atau gambar kontainer kustom terkadang menjadi tidak stabil sehingga menyebabkan instans fungsi berperilaku tidak normal. Untuk mengatasi hal ini, Anda dapat mengonfigurasi pemeriksaan kesehatan berkala di Function Compute. Konfigurasi ini mencegah permintaan dialihkan ke instans yang tidak sehat, sehingga menghindari kegagalan permintaan.
Batasan
Pemeriksaan kesehatan hanya didukung untuk Web Function dan fungsi GPU.
Cara kerja pemeriksaan kesehatan
Perilaku startup instans
Jika Anda mengonfigurasi pemeriksaan kesehatan untuk suatu fungsi, instans akan menjalankan proses startup sebagai berikut.
Jika fungsi memiliki hook initializer, hook tersebut dijalankan terlebih dahulu. Jika tidak, platform langsung melakukan pemeriksaan kesehatan awal.
Jika pemeriksaan kesehatan awal berhasil, instans ditandai sebagai sehat dan memulai siklus pemeriksaan kesehatan berkala. Jika pemeriksaan gagal, instans dianggap gagal memulai, proses pemeriksaan kesehatan dihentikan, dan kesalahan dikembalikan.
Jika jumlah pemeriksaan kesehatan gagal berturut-turut mencapai nilai Maximum Failures yang dikonfigurasi, instans ditandai sebagai tidak sehat. Function Compute kemudian mencoba mengarahkan permintaan ke instans sehat lainnya.
Jika jumlah pemeriksaan kesehatan berhasil berturut-turut untuk instans yang tidak sehat mencapai nilai Threshold for Successful Detections yang dikonfigurasi, instans tersebut ditandai kembali sebagai sehat.
Untuk petunjuk cara mengatur Threshold for Successful Detections dan Maximum Failures, lihat Konfigurasi pemeriksaan kesehatan di Konsol.
Perilaku satu kali pemeriksaan kesehatan
Function Compute melakukan satu kali pemeriksaan kesehatan sebagai berikut.
Mengirim permintaan GET ke path HTTP yang ditentukan berdasarkan konfigurasi fungsi.
Jika permintaan GET mengembalikan kode status HTTP antara 200 hingga 399 sebelum timeout, pemeriksaan berhasil. Jika tidak, pemeriksaan gagal.
Penjadwalan setelah kegagalan pemeriksaan kesehatan
Saat instans fungsi menjadi tidak sehat, Function Compute mencoba mengarahkan permintaan ke instans lainnya.
Jika Function Compute berhasil mengarahkan permintaan, instans fungsi baru yang sehat akan mengeksekusinya.
Jika Function Compute tidak dapat mengarahkan permintaan ke instans lain tepat waktu, sistem mengembalikan kesalahan kegagalan pemeriksaan kesehatan. Pada pemanggilan berikutnya, sistem mencoba menjadwalkan permintaan langsung ke instans fungsi baru.
Konfigurasi pemeriksaan kesehatan di Konsol
Bagian ini menjelaskan cara mengonfigurasi pemeriksaan kesehatan untuk suatu fungsi. Contoh berikut menggunakan Web Function dengan Runtime Node.js 18.
Langkah 1: Buat fungsi
Masuk ke Konsol Function Compute, lalu di bilah navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik Create Function.
Di halaman Create Function, pilih Web Function. Untuk Custom Runtime, pilih . Lalu, klik Create.
Di halaman detail fungsi, pilih tab Code. Edit kode fungsi di editor kode, lalu klik Deploy.
Berikut adalah contoh kode untuk
index.js.'use strict'; // Constants const PORT = 9000; const HOST = '0.0.0.0'; const REQUEST_ID_HEADER = 'x-fc-request-id' const express = require('express'); const bodyParser = require('body-parser'); const app = express(); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(bodyParser.raw()); app.get('/readyz', (req, res) => { console.log(`receive health check`); res.status(200); console.log(`i am ready`); res.send('i am ready\n'); }); // invocation app.post('/invoke', (req, res) => { var rid = req.headers[REQUEST_ID_HEADER] console.log(`FC Invoke Start RequestId: ${rid}`) res.send('OK'); console.log(`FC Invoke End RequestId: ${rid}`) }); var server = app.listen(PORT, HOST); console.log(`Running on http://${HOST}:${PORT}`); server.timeout = 0; // never timeout server.keepAliveTimeout = 0; // keepalive, never timeoutPada kode di atas,
readyzadalah penanganan pemeriksaan kesehatan. Handler ini memproses permintaan HTTP GET yang dikirim ke path /readyz. Setelah Anda menyelesaikan Langkah 2: Konfigurasi pemeriksaan kesehatan untuk instans fungsi, Anda dapat mengonfigurasi Function Compute agar secara berkala menjalankan handler ini untuk memeriksa kesehatan instans.Saat Function Compute menentukan bahwa instans fungsi Anda tidak sehat, sistem mencoba mengarahkan permintaan ke instans sehat lainnya. Jika Function Compute gagal melakukannya, sistem mengembalikan kesalahan terkait kegagalan pemeriksaan kesehatan.
Langkah 2: Konfigurasi pemeriksaan kesehatan
Masuk ke Konsol Function Compute, lalu di bilah navigasi kiri, pilih .
Di bilah navigasi atas, pilih wilayah. Di halaman Functions, klik fungsi yang telah Anda buat pada langkah sebelumnya.
Di halaman detail fungsi, pilih tab Configuration. Di sebelah kanan Advanced Settings, klik Modify. Di panel Advanced Settings, aktifkan sakelar Health Check, konfigurasi parameter sesuai tabel berikut, lalu klik Deploy.
Parameter
Deskripsi
Request Path
Path tempat Function Compute mengirim permintaan HTTP GET untuk melakukan pemeriksaan kesehatan. Nilainya harus diawali dengan
/.Delay for First Detection
Waktu tunda dalam detik setelah startup instans sebelum pemeriksaan kesehatan pertama dijalankan.
Detection Interval
Interval dalam detik antara pemeriksaan kesehatan.
Timeout Period
Waktu timeout dalam detik untuk respons pemeriksaan kesehatan. Jika respons tidak diterima dalam periode ini, pemeriksaan dianggap gagal.
Maximum Failures
Jumlah pemeriksaan kesehatan gagal berturut-turut sebelum instans ditandai sebagai tidak sehat.
Threshold for Successful Detections
Jumlah pemeriksaan kesehatan berhasil berturut-turut yang diperlukan untuk menandai kembali instans yang tidak sehat sebagai sehat.
Langkah 3: Verifikasi pemeriksaan kesehatan
Di halaman konfigurasi fungsi, pilih tab Code dan klik Test Function untuk melihat hasilnya.
Dengan kode contoh pada Langkah 1, instans fungsi lolos pemeriksaan kesehatan dan mengembalikan OK.
Ganti handler pemeriksaan kesehatan dalam kode dengan cuplikan berikut. Klik Deploy. Setelah kode dideploy, klik lagi Test Function untuk melihat hasilnya.
Kode yang dimodifikasi adalah sebagai berikut.
app.get('/readyz', (req, res) => { console.log(`receive health check`); res.status(500); console.log(`i am not ready`); res.send('i am not ready\n'); });Pemeriksaan kesehatan sekarang akan selalu gagal dengan kode status 500. Saat Anda memanggil fungsi lagi, Anda akan menerima respons berikut:
{ "RequestId": "1-65081d42-e4895cbc7d6252bda643****", "Code": "FunctionNotStarted", "Message": "The function http server cannot be started. check function health failed with status code: 500 " }
Informasi lebih lanjut
Selain melalui Konsol, Function Compute juga mendukung penggunaan API untuk mengonfigurasi pemeriksaan kesehatan instans. Untuk informasi lebih lanjut, lihat Update health check configurations.