Gateway Load Balancer (GWLB) menggunakan pemeriksaan kesehatan untuk memantau kondisi server backend. Setelah pemeriksaan kesehatan diaktifkan, jika server backend gagal dalam pemeriksaan tersebut, GWLB berhenti meneruskan permintaan baru ke server tersebut dan mendistribusikannya ke server backend lain yang sehat. Ketika server kembali sehat, GWLB secara otomatis melanjutkan penerusan traffic kepadanya.
Status pemeriksaan kesehatan
Tabel berikut menjelaskan status pemeriksaan kesehatan server backend.
State | Description |
Initializing | Instans GWLB telah dikonfigurasi untuk pemeriksaan kesehatan dan sedang menginisialisasi daftar server backend. |
Healthy | Server backend berjalan sesuai harapan. |
Unhealthy | Server backend gagal dalam pemeriksaan kesehatan atau tidak memberikan respons. |
Unused | Server backend tidak sedang digunakan. |
Disabled | Pemeriksaan kesehatan dinonaktifkan. |
Cara kerja
Selama pemeriksaan kesehatan GWLB, paket permintaan tidak dienkapsulasi menggunakan protokol Geneve.
Pemeriksaan kesehatan TCP
Untuk meningkatkan efisiensi, GWLB menggunakan probe TCP kustom untuk memeriksa status server backend, seperti yang ditunjukkan pada gambar berikut.
Proses pemeriksaan kesehatan TCP adalah sebagai berikut:
Berdasarkan konfigurasi listener, GWLB mengirim paket TCP SYN ke IP privat dan port pemeriksaan kesehatan server backend.
Jika port pada server backend sedang mendengarkan, server merespons dengan paket SYN+ACK.
Jika GWLB tidak menerima paket SYN+ACK dari server backend dalam batas waktu respons yang ditentukan, pemeriksaan kesehatan gagal.
Jika GWLB menerima paket SYN+ACK dari server backend dalam batas waktu respons, pemeriksaan kesehatan berhasil. GWLB kemudian mengirim paket RST untuk menghentikan koneksi TCP.
Pemeriksaan kesehatan HTTP
Pemeriksaan kesehatan HTTP menggunakan probe GET untuk mendapatkan informasi status, seperti yang ditunjukkan pada gambar berikut.
Proses pemeriksaan kesehatan HTTP adalah sebagai berikut:
Berdasarkan konfigurasi listener, GWLB mengirim permintaan HTTP GET ke IP privat, port pemeriksaan kesehatan, dan path pemeriksaan server backend. Permintaan tersebut mencakup nama domain yang dikonfigurasi.
Server backend mengembalikan kode status HTTP berdasarkan status operasionalnya.
Jika GWLB tidak menerima respons dari server backend dalam batas waktu respons yang ditentukan, pemeriksaan kesehatan gagal.
Jika GWLB menerima respons dalam batas waktu tersebut, GWLB membandingkan kode status yang dikembalikan dengan kode yang diharapkan. Jika sesuai, pemeriksaan kesehatan berhasil. Jika tidak, pemeriksaan kesehatan gagal.
Jendela waktu pemeriksaan kesehatan
Pemeriksaan kesehatan meningkatkan ketersediaan layanan. Namun, untuk mencegah ketidakstabilan sistem akibat failover yang terlalu sering karena kegagalan sementara, GWLB hanya mengubah status server setelah server tersebut secara berturut-turut lulus atau gagal dalam jumlah pemeriksaan tertentu. Proses ini ditentukan oleh tiga faktor yang mendefinisikan jendela waktu pemeriksaan kesehatan:
health check interval: Interval antar pemeriksaan kesehatan.
response timeout: Waktu maksimum menunggu respons.
health check threshold: Jumlah pemeriksaan berturut-turut yang diperlukan untuk mengubah status kesehatan server.
Gunakan rumus berikut untuk menghitung jendela waktu pemeriksaan kesehatan:
Failure time window = response timeout × unhealthy threshold + health check interval × (unhealthy threshold - 1)

Success time window = (Response time of a successful check × healthy threshold) + health check interval × (healthy threshold - 1)
CatatanResponse time of a successful health check adalah durasi mulai dari pengiriman permintaan pemeriksaan kesehatan hingga penerimaan respons. Untuk pemeriksaan kesehatan TCP, waktu ini dapat diabaikan karena probe hanya memeriksa apakah port aktif. Untuk pemeriksaan kesehatan HTTP, waktu ini bergantung pada performa dan beban server aplikasi, tetapi biasanya dalam orde detik.

Status pemeriksaan kesehatan memengaruhi penerusan permintaan sebagai berikut:
Jika server backend gagal dalam pemeriksaan kesehatan, permintaan baru tidak lagi didistribusikan kepadanya. Hal ini tidak memengaruhi akses klien.
Jika server backend lulus dalam pemeriksaan kesehatan, permintaan baru didistribusikan kepadanya. Akses klien berjalan normal.
Jika server backend mengalami masalah tetapi belum mencapai ambang batas unhealthy, permintaan tetap dikirim kepadanya. Hal ini dapat menyebabkan permintaan tersebut gagal. Secara default, ambang batas unhealthy adalah tiga kali kegagalan berturut-turut.
Contoh: Response timeout dan health check interval
Asumsikan pengaturan pemeriksaan kesehatan berikut:
response timeout: 5 seconds
health check interval: 2 seconds
healthy threshold: 3
unhealthy threshold: 3
Failure time window = response timeout × unhealthy threshold + health check interval × (unhealthy threshold - 1). Dalam contoh ini, jendela waktunya adalah 19 detik: 5 × 3 + 2 × (3 - 1) = 19 detik. Setelah 19 detik pemeriksaan gagal, status server berubah menjadi unhealthy.
Gambar berikut menunjukkan proses perubahan status server dari healthy menjadi unhealthy.

Success time window = (response time of a successful check × healthy threshold) + health check interval × (healthy threshold - 1). Dengan asumsi server membutuhkan waktu 1 detik untuk merespons, jendela waktunya adalah 7 detik: (1 × 3) + 2 × (3 - 1) = 7 detik. Setelah 7 detik pemeriksaan berhasil, status server berubah menjadi healthy.
Gambar berikut menunjukkan proses perubahan status server dari unhealthy menjadi healthy, dengan asumsi server membutuhkan waktu 1 detik untuk merespons permintaan.

Nama domain untuk pemeriksaan kesehatan HTTP
Saat mengonfigurasi pemeriksaan kesehatan HTTP, menentukan nama domain bersifat opsional. Namun, beberapa server backend memvalidasi header host dari permintaan masuk. Jika Anda menentukan nama domain, GWLB menyertakannya dalam header host probe pemeriksaan kesehatan. Jika Anda tidak menentukan nama domain dan memilih Use private IP of the backend server, GWLB menggunakan alamat IP privat dan port server sebagai nilai host. Server backend mungkin menolak permintaan ini jika tidak mengenali nilainya, sehingga menyebabkan pemeriksaan kesehatan gagal.
Oleh karena itu, jika server backend Anda memvalidasi header host, Anda harus mengonfigurasi nama domain agar pemeriksaan kesehatan berfungsi dengan benar.