Application Load Balancer (ALB) melakukan pemeriksaan kesehatan untuk memverifikasi bahwa server backend merespons dengan benar. Jika server backend gagal dalam pemeriksaan kesehatan, ALB berhenti meneruskan permintaan ke server tersebut dan mengalihkan lalu lintas ke server yang sehat.
Gunakan panduan ini untuk mendiagnosis dan menyelesaikan masalah ketika kolom Health Check Status pada suatu listener menampilkan Unhealthy.
Referensi diagnosis cepat
Gejala | Kemungkinan penyebab utama | Bagian |
Semua server menampilkan Unhealthy segera setelah konfigurasi | Parameter atau port pemeriksaan kesehatan salah dikonfigurasi | Parameter pemeriksaan kesehatan salah, Port pemeriksaan kesehatan salah |
Server menjadi Unhealthy setelah perubahan aturan firewall atau keamanan | Perangkat lunak keamanan atau aturan iptables memblokir IP sumber pemeriksaan kesehatan ALB | |
Server menjadi Unhealthy secara intermiten | Server backend kelebihan beban atau entri rute salah dikonfigurasi | |
Pemeriksaan kesehatan mengembalikan HTTP 404 | Jalur pemeriksaan kesehatan tidak ada di server backend | |
Pemeriksaan kesehatan mengembalikan HTTP 503 | Layanan backend tidak tersedia atau kelebihan beban |
Alamat IP sumber pemeriksaan kesehatan
Server backend harus mengizinkan lalu lintas dari alamat IP sumber pemeriksaan kesehatan ALB. Memblokirnya menyebabkan kegagalan pemeriksaan kesehatan.
Tipe instans ALB | Health Check Source IP | Cara menemukannya |
Instans ALB yang telah di-upgrade | Alamat IP pribadi dalam Blok CIDR dari vSwitch yang ditentukan untuk instans ALB | Ditampilkan sebagai Local IP di Konsol ALB |
Instans ALB yang belum di-upgrade | Alamat IP dalam Blok CIDR | Rentang tetap; tidak perlu pencarian di konsol |
Untuk informasi lebih lanjut, lihat Peningkatan instans ALB.
Pastikan server backend tidak memblokir alamat IP ini melalui aturan iptables, aturan security group, atau perangkat lunak keamanan pihak ketiga. Pemblokiran alamat ini merupakan penyebab umum kegagalan pemeriksaan kesehatan.
Masalah konfigurasi
Masalah ini biasanya menyebabkan pemeriksaan kesehatan gagal segera setelah probe pertama.
Parameter pemeriksaan kesehatan salah
Gejala: Semua server backend menampilkan Unhealthy segera setelah pemeriksaan kesehatan diaktifkan.
Penyebab: Satu atau beberapa parameter pemeriksaan kesehatan (seperti protokol, jalur, kode status yang diharapkan, atau timeout) tidak sesuai dengan konfigurasi server backend.
Solusi:
Masuk ke Konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat instans ALB dideploy.
Di panel navigasi kiri, pilih ALB > Server Groups.
Di halaman Server Groups, temukan kelompok server target dan klik ID-nya.
Di halaman detail kelompok server, klik Modify Health Check di bagian Health Check.
Di kotak dialog Modify Health Check, tinjau pengaturan parameter. Gunakan pengaturan default sebagai titik awal jika nilai yang benar tidak jelas.
Untuk detail tentang setiap parameter, lihat Pemeriksaan kesehatan.
Verifikasi perbaikan: Setelah menyimpan perubahan, tunggu beberapa siklus pemeriksaan kesehatan, lalu periksa apakah Health Check Status berubah menjadi sehat.
Port pemeriksaan kesehatan salah
Gejala: Server backend menampilkan Unhealthy meskipun layanan backend berjalan dengan benar.
Penyebab: Port pemeriksaan kesehatan tidak sesuai dengan port tempat layanan backend mendengarkan, atau layanan backend tidak merespons dengan benar terhadap permintaan pemeriksaan kesehatan.
Solusi:
Masuk ke Konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat instans ALB dideploy.
Di panel navigasi kiri, pilih ALB > Server Groups.
Di halaman Server Groups, temukan kelompok server target dan klik ID-nya.
Di halaman detail kelompok server, klik tab Backend Servers dan catat port server backend.
Klik tab Details. Lalu, klik Modify Health Check di bagian Health Check. Di kotak dialog Modify Health Check, catat konfigurasi pemeriksaan kesehatan.
Masuk ke server backend dan kirim permintaan pemeriksaan kesehatan secara manual untuk memverifikasi respons. Untuk detail tentang cara menghubungkan ke Instance Elastic Compute Service (ECS), lihat Pedoman koneksi instans. Gunakan perintah
ncatau perintahcurl. Ganti placeholder dengan nilai dari konfigurasi pemeriksaan kesehatan Anda:Placeholder
Deskripsi
[$Method]Metode pemeriksaan kesehatan kelompok server
[$PATH]Jalur pemeriksaan kesehatan kelompok server
[$VERSION]Versi protokol HTTP kelompok server, seperti
HTTP/1.0[$Domain]Nama domain pemeriksaan kesehatan kelompok server. Jika nama domain adalah
-----, gunakan alamat IP pribadi instans ECS sebagai gantinya[$IP]Alamat IP pribadi instans ECS
[$Port]Port pemeriksaan kesehatan kelompok server. Jika tidak ada port yang ditentukan, gunakan port server backend
# Format echo -e "[$Method] [$PATH] [$VERSION]\r\nHost: [$Domain]\r\n\r\n" | nc -t [$IP] [$Port] # Contoh echo -e "HEAD /index.html HTTP/1.0\r\nHost: www.example.org\r\n\r\n" | nc -t 127.0.0.1 80# Format curl -X [$Method] -H "Host: [$Domain]" -I http://[$IP]:[$Port][$PATH] # Contoh curl -X HEAD --http1.0 -H "Host: www.example.org" -I http://127.0.0.1:80/index.htmlPeriksa kode status HTTP yang dikembalikan untuk menentukan apakah menunjukkan kondisi sehat:
Jika kode status sehat tetapi tidak termasuk dalam pengaturan pemeriksaan kesehatan, perbarui pengaturan agar mencakup kode status tersebut.
Jika kode status menunjukkan kondisi tidak sehat, lihat tabel berikut.
Referensi kode status HTTP
Kode status | Deskripsi | Pemecahan masalah |
400 | Format permintaan HTTP tidak valid. | Periksa apakah format permintaan HTTP valid. Misalnya, periksa header Content-Length kosong dan konfigurasi yang meneruskan permintaan HTTP ke port HTTPS server backend. |
404 | Resource yang diminta tidak ditemukan. | Verifikasi bahwa jalur pemeriksaan kesehatan ada di server backend dan dapat diakses. |
405 | Metode permintaan pemeriksaan kesehatan tidak didukung. | Verifikasi bahwa layanan backend mendukung metode permintaan pemeriksaan kesehatan (HEAD atau GET). |
500 | Server mengalami kesalahan internal. | Periksa logika bisnis layanan backend dan tinjau log aplikasi. |
503 | Server sementara tidak tersedia. | Periksa logika bisnis layanan backend atau verifikasi bahwa server backend tidak kelebihan beban. |
Verifikasi perbaikan: Setelah memperbaiki port atau jalur, jalankan kembali perintah nc atau curl. Pastikan respons mengembalikan kode status yang sesuai dengan konfigurasi pemeriksaan kesehatan Anda.
Masalah server backend
Masalah ini biasanya menyebabkan pemeriksaan kesehatan mulai gagal setelah server backend sebelumnya dalam kondisi sehat.
Aturan keamanan memblokir traffic pemeriksaan kesehatan
Gejala: Server backend menampilkan Unhealthy meskipun layanan backend berjalan dan merespons permintaan dari sumber lain.
Penyebab: Aturan firewall (seperti iptables), aturan security group, atau perangkat lunak keamanan pihak ketiga di server backend memblokir permintaan dari alamat IP sumber pemeriksaan kesehatan ALB.
Instans ALB yang telah di-upgrade menggunakan alamat IP pribadi dalam Blok CIDR dari vSwitch yang ditentukan untuk instans tersebut untuk berkomunikasi dengan instans ECS backend. Alamat IP ini ditampilkan sebagai Local IP di Konsol ALB. Pastikan instans ECS backend tidak memblokir alamat IP ini melalui aturan iptables atau perangkat lunak keamanan pihak ketiga.
Instans ALB yang belum di-upgrade menggunakan alamat IP dalam Blok CIDR
100.64.0.0/10untuk berkomunikasi dengan instans ECS backend. Pastikan instans ECS backend tidak memblokir alamat IP ini melalui aturan iptables atau perangkat lunak keamanan pihak ketiga.
Untuk informasi lebih lanjut, lihat Peningkatan instans ALB.
Solusi (contoh iptables):
Contoh berikut menunjukkan cara mengidentifikasi dan menghapus aturan iptables yang memblokir Blok CIDR 100.64.0.0/10.
Masuk ke instans ECS dan jalankan perintah berikut untuk menampilkan semua aturan di tabel filter: Jika output menunjukkan aturan yang menjatuhkan traffic dari Blok CIDR pemeriksaan kesehatan ALB (misalnya,
DROP all -- 100.64.0.0/10 0.0.0.0/0), aturan ini memblokir probe pemeriksaan kesehatan.iptables -nLHapus aturan pemblokiran:
iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROPVerifikasi bahwa aturan telah dihapus: Pastikan tidak ada aturan yang memblokir traffic dari Blok CIDR ALB.
iptables -nL
Verifikasi perbaikan: Tunggu beberapa siklus pemeriksaan kesehatan, lalu periksa apakah Health Check Status berubah menjadi sehat di Konsol ALB.
Konfigurasi rute salah
Masalah ini hanya berlaku untuk instans ALB yang belum di-upgrade. Instans ALB yang telah di-upgrade menggunakan alamat IP pribadi (Local IP di konsol) dalam Blok CIDR dari vSwitch yang ditentukan untuk instans tersebut untuk berkomunikasi dengan instans ECS backend. Instans yang telah di-upgrade tidak memerlukan entri rute untuk Blok CIDR 100.64.0.0/10.
Untuk informasi lebih lanjut, lihat Peningkatan instans ALB.
Gejala: Server backend menampilkan Unhealthy pada instans ALB yang belum di-upgrade meskipun layanan backend berjalan dan aturan firewall benar.
Penyebab: Entri rute untuk 100.64.0.0/10 pada instans ECS backend tidak dikonfigurasi dengan gerbang yang benar. Ketika entri rute mengarah ke gerbang yang salah, paket respons pemeriksaan kesehatan dari server backend tidak dapat mencapai instans ALB.
Solusi:
Masuk ke instans ECS backend dan periksa konfigurasi rute: Entri rute salah dikonfigurasi jika semua kondisi berikut benar: Gerbang default adalah nilai Gateway yang terkait dengan entri rute di mana nilai Destination adalah
0.0.0.0.Nilai Destination adalah
100.64.0.0Nilai Genmask adalah
255.192.0.0Nilai Gateway tidak diatur ke gerbang default dari elastic network interface (ENI) yang sesuai
route -nHapus entri rute yang salah:
route del -net 100.64.0.0/10
Verifikasi perbaikan: Jalankan route -n lagi untuk memastikan entri rute yang salah telah dihapus. Tunggu beberapa siklus pemeriksaan kesehatan dan periksa apakah Health Check Status berubah menjadi sehat.
Kelebihan beban server backend
Gejala: Server backend secara intermiten menampilkan Unhealthy, atau pemeriksaan kesehatan gagal selama lonjakan lalu lintas.
Penyebab: Instans ECS backend kelebihan beban (penggunaan CPU tinggi, tekanan memori, atau saturasi I/O disk). Ketika server tidak dapat merespons probe pemeriksaan kesehatan dalam batas waktu yang dikonfigurasi, ALB menandainya sebagai tidak sehat.
Solusi:
Periksa beban sistem pada instans ECS backend. Untuk instruksi detail, lihat Kueri dan analisis beban sistem pada instans Linux.
Verifikasi perbaikan: Setelah menyelesaikan masalah beban (dengan scaling out, mengoptimalkan aplikasi, atau meningkatkan spesifikasi instans), pastikan Health Check Status kembali sehat di Konsol ALB.