Classic Load Balancer (CLB) melakukan pemeriksaan kesehatan untuk memastikan ketersediaan server backend. Jika pemeriksaan kesehatan diaktifkan dan server backend dinyatakan tidak sehat, CLB akan mendistribusikan permintaan ke server lain. Ketika server yang tidak sehat pulih, CLB akan mengalihkan kembali permintaan ke server tersebut. Pemeriksaan kesehatan meningkatkan ketersediaan aplikasi dengan mencegah titik kegagalan tunggal (SPOF).
Jika bisnis Anda sangat sensitif terhadap fluktuasi lalu lintas, pemeriksaan kesehatan yang sering dapat memengaruhi ketersediaannya. Untuk mengurangi dampak negatif, Anda dapat menurunkan frekuensi pemeriksaan, memperpanjang intervalnya, atau mengubah pemeriksaan Lapisan 7 menjadi Lapisan 4. Meskipun demikian, kami tetap menyarankan untuk mengaktifkan fitur pemeriksaan kesehatan demi kelangsungan bisnis.
Cara kerja pemeriksaan kesehatan
Pemeriksaan kesehatan melibatkan pengiriman permintaan berkala ke server backend untuk memeriksa statusnya.
Instans CLB dikerahkan dalam kluster. Node dalam kluster bertanggung jawab atas pengelolaan lalu lintas jaringan dan pelaksanaan pemeriksaan kesehatan.
Jika server backend gagal dalam pemeriksaan oleh salah satu node kluster, server tersebut dinyatakan tidak sehat. Semua node dalam kluster berhenti mendistribusikan permintaan ke server tersebut.
Pemeriksaan kesehatan CLB menggunakan blok CIDR 100.64.0.0/10, yang tidak boleh diblokir oleh server backend. Tidak perlu mengonfigurasi aturan grup keamanan untuk mengizinkan akses dari blok CIDR ini, kecuali jika ada aturan seperti iptables yang telah dikonfigurasi. Mengizinkan blok CIDR ini tidak meningkatkan risiko karena dicadangkan oleh Alibaba Cloud.
Cara CLB melakukan pemeriksaan kesehatan HTTP dan HTTPS
Untuk listener HTTP dan HTTPS pada Lapisan 7, pemeriksaan kesehatan menggunakan metode HEAD atau GET untuk memverifikasi ketersediaan server backend.
Sertifikat listener HTTPS dikelola di CLB. Data antara CLB dan server backend dipertukarkan melalui HTTP untuk meningkatkan kinerja sistem.
Berikut adalah cara CLB melakukan pemeriksaan kesehatan Lapisan 7:
Node mengirimkan permintaan HTTP HEAD ke server backend sesuai konfigurasi pemeriksaan kesehatan.
Server backend mengembalikan kode status HTTP.
Jika node tidak menerima respons dalam periode timeout, server backend dinyatakan tidak sehat.
Jika node menerima respons dalam periode timeout, kode status HTTP yang dikembalikan dibandingkan dengan kode status yang ditentukan. Jika cocok, server backend dinyatakan sehat; jika tidak, server dinyatakan tidak sehat.
Cara CLB melakukan pemeriksaan kesehatan TCP
Untuk meningkatkan efisiensi pemeriksaan kesehatan pada listener TCP, instans CLB melakukan pemeriksaan Lapisan 4 (TCP) dengan membuka sesi TCP, seperti yang ditunjukkan pada gambar berikut.
Berikut adalah cara CLB melakukan pemeriksaan kesehatan TCP:
Node dalam kluster Lapisan 4 mengirimkan paket TCP SYN ke alamat IP internal dan port pemeriksaan kesehatan server backend sesuai konfigurasi.
Jika port server backend aktif, server mengembalikan paket SYN-ACK setelah menerima paket TCP-SYN.
Jika node tidak menerima paket SYN-ACK dalam periode timeout, server backend dinyatakan tidak sehat. Node mengirimkan paket RST untuk menutup koneksi TCP.
Jika node menerima paket SYN-ACK dalam periode timeout, server backend dinyatakan sehat. Node mengirimkan paket RST untuk menutup koneksi TCP.
Mekanisme ini dapat menyebabkan kesalahan koneksi TCP palsu pada server backend, yang dapat mencatat pesan seperti Connection reset by peer dalam log perangkat lunak.
Solusi:
Konfigurasikan pemeriksaan kesehatan HTTP untuk listener TCP.
Aktifkan pelestarian IP klien pada server backend untuk mengabaikan kesalahan koneksi yang dipicu oleh permintaan dari titik akhir CLB.
Cara CLB melakukan pemeriksaan kesehatan UDP
Jika listener UDP ditambahkan ke instans CLB, CLB memeriksa status server backend dengan mengirimkan paket UDP, seperti yang ditunjukkan pada gambar berikut.
Berikut adalah cara CLB melakukan pemeriksaan kesehatan UDP:
Node dalam kluster Lapisan 4 mengirimkan paket UDP ke alamat IP internal dan port pemeriksaan kesehatan server backend sesuai konfigurasi listener.
Jika port server backend tidak aktif, pesan kesalahan ICMP seperti
port XX unreachabledikembalikan. Jika tidak, tidak ada pesan kesalahan ICMP yang dikembalikan.Jika node menerima pesan kesalahan ICMP dalam periode timeout, server backend dinyatakan tidak sehat.
Jika node tidak menerima pesan kesalahan ICMP dalam periode timeout, server backend dinyatakan sehat.
Hasil pemeriksaan kesehatan UDP mungkin tidak mencerminkan status aktual aplikasi pada server backend dalam situasi berikut:
Jika server backend Linux digunakan dalam skenario konkurensi tinggi, perlindungan banjir ICMP dari Linux membatasi frekuensi transmisi paket ICMP. Dalam kasus ini, meskipun terjadi kesalahan aplikasi, CLB mungkin menganggap server backend sehat karena belum menerima pesan kesalahan port XX unreachable. Akibatnya, hasil pemeriksaan kesehatan berbeda dari status aplikasi aktual.
Solusi:
Anda dapat mengatur CLB untuk mengirim string tertentu ke server backend. Server backend dianggap sehat hanya jika mengembalikan respons tertentu ke CLB. Namun, aplikasi pada server backend harus dikonfigurasi sesuai untuk mengembalikan respons.
Jendela waktu pemeriksaan kesehatan
Fitur pemeriksaan kesehatan meningkatkan ketersediaan layanan Anda. Namun, failover yang sering disebabkan oleh server backend yang tidak sehat dapat memengaruhi ketersediaan sistem. Jendela waktu pemeriksaan kesehatan diperkenalkan untuk mengontrol failover. Failover dilakukan hanya ketika server backend secara berturut-turut lulus atau gagal dalam sejumlah pemeriksaan kesehatan tertentu dalam jendela waktu. Jendela waktu pemeriksaan kesehatan ditentukan oleh faktor-faktor berikut:
Interval pemeriksaan kesehatan: waktu antara dua pemeriksaan kesehatan.
Waktu habis respons: waktu yang diperlukan server backend untuk merespons.
Ambang batas pemeriksaan kesehatan: jumlah kali berturut-turut server backend lulus atau gagal dalam pemeriksaan kesehatan.
Jendela waktu pemeriksaan kesehatan dihitung berdasarkan rumus berikut:
Jendela waktu untuk kegagalan pemeriksaan kesehatan = Waktu habis respons × Ambang batas tidak sehat + Interval pemeriksaan kesehatan × (Ambang batas tidak sehat - 1)

Jendela waktu untuk keberhasilan pemeriksaan kesehatan = Waktu respons pemeriksaan kesehatan berhasil × Ambang batas sehat + Interval pemeriksaan kesehatan × (Ambang batas sehat - 1)
CatatanWaktu respons pemeriksaan kesehatan berhasil adalah durasi dari waktu permintaan pemeriksaan kesehatan dikirim hingga waktu respons diterima. Untuk pemeriksaan kesehatan TCP, waktu respons singkat dan hampir dapat diabaikan. Untuk pemeriksaan kesehatan HTTP, waktu respons bergantung pada kinerja dan beban server dan biasanya dalam beberapa detik.

Hasil pemeriksaan kesehatan memiliki dampak berikut pada penerusan permintaan:
Jika server backend gagal dalam pemeriksaan kesehatan, permintaan baru didistribusikan ke server backend lainnya. CLB tetap dapat diakses oleh klien.
Jika server backend lulus dalam pemeriksaan kesehatan, permintaan baru didistribusikan ke server backend tersebut. CLB tetap dapat diakses oleh klien.
Jika server backend mengalami kesalahan dan gagal dalam pemeriksaan kesehatan, tetapi tidak dinyatakan tidak sehat oleh pemeriksaan kesehatan, permintaan didistribusikan ke server backend tersebut. Namun, server backend tidak dapat diakses oleh permintaan. Secara default, server backend dinyatakan tidak sehat jika gagal dalam pemeriksaan kesehatan selama tiga kali berturut-turut.
Contoh waktu habis respons pemeriksaan kesehatan dan interval pemeriksaan kesehatan
Dalam contoh ini, pengaturan pemeriksaan kesehatan berikut digunakan:
Response timeout period: 5 seconds
Health check interval: 2 seconds
Healthy threshold: 3 times
Unhealthy threshold: 3 times
Jendela waktu untuk kegagalan pemeriksaan kesehatan = Waktu habis respons × Ambang batas tidak sehat + Interval pemeriksaan kesehatan × (Ambang batas tidak sehat - 1). Dalam contoh ini, jendela waktu adalah 19 detik berdasarkan rumus 5 × 3 + 2 × (3 - 1). Jika server backend tidak merespons selama 19 detik, server backend dinyatakan tidak sehat.

Jendela waktu untuk keberhasilan pemeriksaan kesehatan = Waktu respons pemeriksaan kesehatan berhasil × Ambang batas sehat + Interval pemeriksaan kesehatan × (Ambang batas sehat - 1). Dalam contoh ini, jendela waktu adalah 7 detik berdasarkan rumus (1 × 3) + 2 × (3 – 1). Jika server backend merespons dalam 7 detik, server backend dinyatakan sehat.
Waktu respons pemeriksaan kesehatan berhasil adalah durasi dari waktu permintaan pemeriksaan kesehatan dikirim hingga waktu respons diterima. Saat pemeriksaan kesehatan TCP dikonfigurasi, waktu respons singkat dan hampir dapat diabaikan karena item pemeriksaan satu-satunya adalah apakah port yang diperiksa hidup. Saat pemeriksaan kesehatan HTTP dikonfigurasi, waktu respons bergantung pada kinerja dan beban server aplikasi dan biasanya dalam beberapa detik.

Nama domain untuk pemeriksaan kesehatan HTTP
Anda dapat menentukan nama domain untuk pemeriksaan kesehatan HTTP. Pengaturan ini bersifat opsional. Beberapa server aplikasi memerlukan verifikasi header Host dalam permintaan sebelum dapat menerima permintaan tersebut. Dalam hal ini, permintaan harus membawa header Host. Jika nama domain dikonfigurasi untuk pemeriksaan kesehatan, CLB menyisipkan nama domain ke dalam header Host. Jika tidak ada nama domain yang dikonfigurasi, permintaan pemeriksaan kesehatan mungkin ditolak oleh server backend, mengakibatkan hasil pemeriksaan kesehatan yang salah.
Oleh karena itu, jika server aplikasi Anda memverifikasi header Host dalam permintaan, Anda harus mengonfigurasi nama domain untuk pemeriksaan kesehatan agar fitur tersebut berfungsi sesuai harapan.
Referensi
Untuk informasi lebih lanjut tentang cara mengonfigurasi pemeriksaan kesehatan saat membuat listener, lihat Konfigurasi dan Kelola Pemeriksaan Kesehatan CLB.
Untuk informasi lebih lanjut tentang pertanyaan yang sering diajukan (FAQ) tentang pemeriksaan kesehatan, lihat FAQ tentang Pemeriksaan Kesehatan.