Network Load Balancer (NLB) melakukan pengecekan kesehatan untuk memastikan ketersediaan server backend. Jika status pengecekan kesehatan listener berubah menjadi Tidak Sehat, kemungkinan terjadi kesalahan pada konfigurasi pengecekan kesehatan atau server backend. Topik ini menjelaskan cara memecahkan masalah pengecekan kesehatan untuk NLB.
Masalah
Health Check Status dari listener NLB menjadi Unhealthy.
Penyebab
Jika Anda baru pertama kali mengonfigurasi pengecekan kesehatan untuk listener, pastikan bahwa pengaturannya benar. Periksa penyebab berikut yang mungkin terjadi:
Pengaturan parameter pengecekan kesehatan tidak valid.
Port pengecekan kesehatan tidak valid.
Jika masalah tetap terjadi meskipun pengecekan kesehatan telah dikonfigurasi dengan benar, periksa potensi masalah pada server backend. Berikut beberapa penyebab yang mungkin terjadi:
Konfigurasi layanan keamanan tidak valid.
Konfigurasi rute tidak valid.
Server backend mengalami beban berat.
Solusi
Kesalahan yang terjadi setelah probe pengecekan kesehatan pertama dikirim
Penyebab 1: Pengaturan parameter tidak valid
Masuk ke Konsol NLB.
Di bilah navigasi atas, pilih wilayah tempat instance NLB diterapkan.
Di panel navigasi sisi kiri, pilih NLB > Server Groups.
Di halaman Server Groups, temukan grup server yang terkait dengan instance NLB Anda dan klik Modify Health Check Settings.
Di kotak dialog Modify Health Check Settings, periksa pengaturan parameter. Kami sarankan menggunakan pengaturan default.
Penyebab 2: Port pengecekan kesehatan tidak valid
1. Periksa port pengecekan kesehatan.
Masuk ke Konsol NLB.
Di bilah navigasi atas, pilih wilayah tempat instance NLB diterapkan.
Di panel navigasi sisi kiri, pilih NLB > Server Groups.
Di halaman Server Groups, klik ID grup server yang terkait dengan instance NLB Anda.
Di halaman detail grup server, klik tab Backend Servers dan catat port server backend.
Di halaman detail grup server, klik tab Details, lalu klik Modify Health Check Settings di bagian Health Check. Di kotak dialog Modify Health Check Settings, catat konfigurasi pengecekan kesehatan.
Listener TCP
Masuk ke server backend yang tidak sehat dan jalankan perintah berikut untuk memeriksa port pengecekan kesehatan.
Untuk informasi lebih lanjut tentang cara masuk ke server backend, lihat Metode untuk Menghubungkan ke Instance ECS.
telnet [$IP] [$Port]CatatanGanti [$IP] dengan alamat IP privat server backend.
Ganti [$Port] dengan port pengecekan kesehatan di server backend. Jika tidak ada port pengecekan kesehatan yang ditentukan, port server backend digunakan sebagai port pengecekan kesehatan secara default. Jika port pengecekan kesehatan ditentukan, masukkan port pengecekan kesehatan tersebut.
Lihat keluaran perintah.
Jika keluaran berisi pesan "telnet: connect to address [$IP]: Connection refused", permintaan koneksi ditolak, seperti yang ditunjukkan pada gambar berikut. Dalam hal ini, port pengecekan kesehatan di server backend dalam keadaan error.

Jika keluaran berisi pesan "Connected to [$IP]", port pengecekan kesehatan di server backend dapat diakses, seperti yang ditunjukkan pada gambar berikut.

Listener UDP
Masuk ke server backend yang tidak sehat dan jalankan perintah berikut untuk memeriksa port pengecekan kesehatan.
Untuk informasi lebih lanjut tentang cara masuk ke server backend, lihat Metode untuk Menghubungkan ke Instance ECS.
netstat -anu | grep [$IP]:[$Port]CatatanGanti [$IP] dengan alamat IP privat server backend.
Ganti [$Port] dengan port pengecekan kesehatan di server backend. Jika tidak ada port pengecekan kesehatan yang ditentukan, port server backend digunakan sebagai port pengecekan kesehatan secara default. Jika port pengecekan kesehatan ditentukan, masukkan port pengecekan kesehatan tersebut.
Lihat keluaran perintah.
Jika keluaran tidak berisi entri [$IP]:[$Port], port pengecekan kesehatan di server backend dalam keadaan error, seperti yang ditunjukkan pada gambar berikut.

Jika keluaran berisi entri [$IP]:[$Port], port pengecekan kesehatan di server backend dapat diakses, seperti yang ditunjukkan pada gambar berikut.

2. Periksa apakah port pengecekan kesehatan di server backend terbuka atau sama dengan port yang ditentukan dalam pengaturan pengecekan kesehatan. Dalam contoh ini, aplikasi NGINX digunakan.
Masuk ke server backend yang tidak sehat dan jalankan perintah berikut untuk menanyakan status aplikasi NGINX:
systemctl status nginxKeluaran berikut menunjukkan bahwa aplikasi NGINX dinonaktifkan.

Jalankan perintah berikut untuk mengaktifkan aplikasi NGINX:
systemctl start nginxJalankan perintah berikut untuk menanyakan status aplikasi NGINX:
systemctl status nginxKeluaran berikut menunjukkan bahwa aplikasi NGINX diaktifkan.

Masuk ke Konsol NLB dan lakukan operasi berikut:
Di panel navigasi sisi kiri, pilih .
Di halaman Server Groups, temukan grup server yang ingin Anda kelola, dan klik Modify Health Check Settings di kolom Actions.
Di kotak dialog Modify Health Check Settings, lihat port pengecekan kesehatan.

Lihat status pengecekan kesehatan listener. Jika listener tidak sehat, jalankan perintah berikut untuk menanyakan port pengecekan kesehatan aplikasi NGINX:
netstat -tanp |grep nginx
Keluaran berikut menunjukkan bahwa port pengecekan kesehatan aplikasi NGINX berbeda dengan port yang ditentukan dalam pengaturan pengecekan kesehatan.

Ubah file
/etc/nginx/nginx.conf, ubah nilai listen ke port yang ditentukan dalam pengaturan pengecekan kesehatan, simpan modifikasi, dan tutup file.CatatanJika Anda tidak dapat mengubah nilai listen karena pembatasan bisnis, ubah port pengecekan kesehatan dalam pengaturan pengecekan kesehatan sesuai skenario penggunaan. Untuk informasi lebih lanjut, lihat Listener NLB.

Jalankan perintah berikut untuk memulai ulang aplikasi NGINX. Tunggu hingga status pengecekan kesehatan berubah menjadi Sehat.
systemctl restart nginx
Kesalahan yang terjadi selama probe pengecekan kesehatan berikutnya
Penyebab 1: Konfigurasi layanan keamanan tidak valid
NLB menggunakan blok CIDR dari virtual private cloud (VPC) untuk berkomunikasi dengan server backend. Pastikan bahwa blok CIDR VPC tidak diblokir oleh kebijakan kontrol akses, seperti iptables atau layanan keamanan pihak ketiga. Jika blok CIDR VPC diblokir, status pengecekan kesehatan berubah menjadi Tidak Sehat dan menyebabkan kesalahan layanan NLB. Dalam contoh berikut, blok CIDR VPC diblokir oleh iptables.
Masuk ke Konsol NLB dan lihat alamat IP yang digunakan oleh instance NLB untuk berkomunikasi dengan server backend.

Masuk ke server backend yang tidak sehat dan jalankan perintah berikut untuk menanyakan semua aturan dalam tabel filter:
iptables -nLKeluaran berikut menunjukkan bahwa permintaan yang dikirim dari alamat IP yang digunakan oleh instance NLB diblokir oleh server backend.

Jalankan perintah berikut untuk menghapus aturan yang memblokir permintaan dari alamat IP tersebut:
iptables -t filter -D INPUT -s 192.168.20.75 -j DROP # Alamat IP hanya untuk referensi.CatatanGanti alamat IP dalam perintah dengan alamat IP privat sebenarnya yang digunakan oleh instance NLB Anda.
Jalankan perintah berikut untuk menanyakan apakah ada aturan lain yang memblokir permintaan dari alamat IP tersebut. Pastikan bahwa alamat IP tidak diblokir oleh aturan.
iptables -nLPastikan bahwa Health Check Status dari listener berubah menjadi Healthy.
Penyebab 2: Konfigurasi rute tidak valid
Jika blok CIDR VPC yang digunakan oleh instance NLB ditambahkan ke tabel rute server backend, instance NLB tidak dapat menerima paket probe pengecekan kesehatan. Akibatnya, status pengecekan kesehatan berubah menjadi Tidak Sehat. Dalam contoh berikut, perintah route Linux digunakan untuk menanyakan konfigurasi rute.
Masuk ke Konsol NLB dan lihat alamat IP yang digunakan oleh instance NLB untuk berkomunikasi dengan server backend.

Masuk ke server backend yang tidak sehat dan jalankan perintah berikut untuk menanyakan konfigurasi rute:
route -nJika ada entri rute yang tujuannya adalah alamat IP yang digunakan oleh instance NLB, genmask adalah 255.255.255.255, dan gateway bukan gateway default dari network interface controller (NIC), entri rute tersebut dikonfigurasi dengan salah. Jika tujuan dari entri rute adalah 0.0.0.0, nilai Gateway adalah gateway default.

Jalankan perintah berikut untuk menghapus entri rute yang salah:
ip route del blackhole 192.168.20.75 # Alamat IP hanya untuk referensi.CatatanGanti alamat IP dalam perintah dengan alamat IP privat sebenarnya yang digunakan oleh instance NLB Anda.
Pastikan bahwa Health Check Status dari listener berubah menjadi Healthy.
Penyebab 3: Beban berat pada server backend
Periksa apakah server backend kelebihan beban. Untuk informasi lebih lanjut, lihat Memecahkan Masalah dan Menyelesaikan Masalah Beban Tinggi pada Instance Linux.
Referensi
Anda dapat menggunakan fitur diagnosis instance NLB untuk memecahkan masalah pengecekan kesehatan. Untuk informasi lebih lanjut, lihat Mendiagnosis Instance NLB.