Application Load Balancer (ALB) melakukan pemeriksaan kesehatan untuk memastikan bahwa server backend berfungsi sesuai harapan. Jika server backend gagal melewati pemeriksaan kesehatan, ALB secara otomatis mengarahkan permintaan ke server backend yang sehat. Hal ini mencegah gangguan pada layanan keseluruhan dan memastikan tingkat ketersediaan yang tinggi. Topik ini menjelaskan cara memecahkan masalah terkait pemeriksaan kesehatan.
Masalah
Kolom Health Check Status dari listener instance ALB menampilkan Unhealthy.
Penyebab
Jika kesalahan terjadi setelah probe pemeriksaan kesehatan pertama dikirim, kemungkinan besar disebabkan oleh konfigurasi pemeriksaan kesehatan yang tidak tepat. Periksa penyebab potensial berikut:
Pengaturan parameter yang tidak tepat
Port pemeriksaan kesehatan yang salah
Jika pemeriksaan kesehatan telah dikonfigurasi dengan benar, kesalahan tersebut mungkin disebabkan oleh server backend. Dalam hal ini, periksa penyebab berikut:
Konfigurasi layanan keamanan yang tidak tepat
Konfigurasi rute yang salah
Beban berat pada server backend
Solusi
Kesalahan yang terjadi setelah probe pemeriksaan kesehatan pertama dikirim
Penyebab 1: pengaturan parameter yang tidak tepat
Masuk ke konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat instance ALB yang ingin Anda kelola diterapkan.
Di panel navigasi sisi kiri, pilih .
Di halaman Server Groups, temukan grup server yang terkait dengan instance ALB dan klik ID grup server.
Di halaman detail grup server, klik Modify Health Check di bagian Health Check.
Di kotak dialog Modify Health Check, periksa pengaturan parameter. Kami merekomendasikan menggunakan pengaturan default.
Untuk informasi lebih lanjut, lihat Pemeriksaan Kesehatan.
Penyebab 2: port pemeriksaan kesehatan yang tidak tepat
Masuk ke konsol ALB.
Di bilah navigasi atas, pilih wilayah tempat instance ALB yang ingin Anda kelola diterapkan.
Di panel navigasi sisi kiri, pilih .
Di halaman Server Groups, temukan grup server yang terkait dengan instance ALB dan klik ID grup server.
Di halaman detail grup server, klik tab Backend Servers dan catat port server backend.
Di halaman detail grup server, klik tab Details. Kemudian, klik Modify Health Check di bagian Health Check. Di kotak dialog Modify Health Check, catat konfigurasi pemeriksaan kesehatan.
Masuk ke server backend dan jalankan perintah nc atau curl untuk menyelidiki server backend.
Untuk informasi lebih lanjut tentang cara masuk ke instance Elastic Compute Service (ECS), lihat Panduan Koneksi Instance.
# Perintah nc: echo -e "[$Method] [$PATH] [$VERSION]\r\nHost: [$Domain]\r\n\r\n" | nc -t [$IP] [$Port] #Format echo -e "HEAD /index.html HTTP/1.0\r\nHost: wwww.example.org\r\n\r\n" | nc -t 127.0.0.1 80 #Contoh # Perintah curl: curl -X [$Method] -H "Host: [$Domain]" -I http://[$IP]:[$Port][$PATH] #Format curl -X HEAD --http1.0 -H "Host: www.example.org" -I http://127.0.0.1:80/index.html # ContohCatatanAtur [$Method] ke metode pemeriksaan kesehatan grup server.
Atur [$PATH] ke jalur pemeriksaan kesehatan grup server.
Atur [$VERSION] ke versi protokol HTTP grup server, seperti HTTP/1.0.
Atur [$Domain] ke nama domain pemeriksaan kesehatan grup server. Jika nama domain adalah -----, alamat IP privat instance ECS digunakan sebagai nama domain pemeriksaan kesehatan. Dalam hal ini, Anda dapat mengganti [$Domain] dengan [$IP].
Atur [$IP] ke alamat IP privat instance ECS.
Atur [$Port] ke port pemeriksaan kesehatan grup server. Jika tidak ada port yang ditentukan, port instance ECS digunakan secara default. Jika port ditentukan, masukkan port yang ditentukan.
Setelah menjalankan perintah, lihat kode status HTTP yang dikembalikan dan tentukan apakah kode status HTTP yang dikembalikan menunjukkan keadaan sehat:
Jika kode status HTTP yang dikembalikan menunjukkan keadaan sehat tetapi tidak termasuk dalam pengaturan pemeriksaan kesehatan, ubah pengaturan pemeriksaan kesehatan untuk memasukkan kode status HTTP.
Jika kode status HTTP yang dikembalikan menunjukkan keadaan tidak sehat, lihat tabel berikut untuk pemecahan masalah. Tabel berikut menjelaskan kode status HTTP yang mungkin dikembalikan dan cara memecahkan masalah.
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
Sumber daya yang diminta tidak ditemukan.
Periksa apakah URL yang diminta valid.
405
Metode permintaan pemeriksaan kesehatan tidak didukung.
Periksa apakah layanan backend mendukung metode permintaan pemeriksaan kesehatan.
500
Permintaan tidak dapat diproses karena server memiliki kesalahan internal.
Periksa logika bisnis layanan backend.
503
Server sementara tidak tersedia.
Periksa logika bisnis layanan backend atau apakah server backend kelebihan beban.
Kesalahan yang terjadi selama probe pemeriksaan kesehatan berikutnya
Penyebab 1: konfigurasi layanan keamanan yang tidak tepat
Secara default, instance ALB yang ditingkatkan menggunakan alamat IP privat dalam blok CIDR vSwitch yang ditentukan untuk instance tersebut untuk berkomunikasi dengan instance ECS backend. Pastikan instance ECS backend tidak memblokir alamat IP ini dengan cara apa pun, termasuk menggunakan aturan iptables atau perangkat lunak kebijakan keamanan pihak ketiga. Anda dapat masuk ke konsol ALB untuk memeriksa alamat IP privat, yang ditampilkan sebagai Local IP.
Instance ALB yang tidak ditingkatkan menggunakan alamat IP dalam blok CIDR 100.64.0.0/10 untuk berkomunikasi dengan instance ECS backend. Pastikan instance ECS backend tidak memblokir alamat IP ini dengan cara apa pun, termasuk menggunakan aturan iptables atau perangkat lunak kebijakan keamanan pihak ketiga.
Untuk informasi tentang peningkatan instance ALB, lihat Peningkatan Instance ALB.
Instance ALB menggunakan alamat IP cadangan dalam blok CIDR untuk berkomunikasi dengan instance ECS backend. Jika blok CIDR yang digunakan oleh instance ALB diblokir, kesalahan pemeriksaan kesehatan muncul dan instance ALB tidak dapat bekerja seperti yang diharapkan. Dalam contoh berikut, 100.64.0.0/10 diblokir oleh aturan iptables.
Masuk ke instance ECS dan jalankan perintah berikut untuk menanyakan semua aturan dalam tabel filter:
iptables -nLKeluaran berikut menunjukkan bahwa instance ECS memblokir permintaan dari blok CIDR privat instance ALB.

Jalankan perintah berikut untuk menghapus aturan:
iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROPJalankan perintah berikut untuk memverifikasi bahwa instance ECS tidak lagi memblokir permintaan dari blok CIDR privat instance ALB:
iptables -nL
Penyebab 2: Konfigurasi rute yang tidak tepat
Penyebab ini hanya berlaku untuk instance ALB yang tidak ditingkatkan. Instance yang ditingkatkan menggunakan alamat IP privat (Local IP di konsol) dalam blok CIDR vSwitch yang ditentukan untuk berkomunikasi dengan instance ECS backend. Oleh karena itu, tidak memerlukan kebijakan izin untuk blok CIDR 100.64.0.0/10.
Untuk informasi tentang peningkatan instance ALB, lihat Peningkatan Instance ALB.
Periksa rute yang sesuai pada instance ECS backend. Rute tersebut menunjuk ke 100.64.0.0/10, yang merupakan blok CIDR privat instance ALB. Jika rute dikonfigurasi dengan tidak tepat, ALB tidak dapat menerima paket probe pemeriksaan kesehatan yang dikembalikan oleh instance ECS backend. Ini menghasilkan kesalahan pemeriksaan kesehatan. Dalam contoh ini, perintah route di Linux digunakan untuk memeriksa konfigurasi rute.
Masuk ke instance ECS backend yang bermasalah dan jalankan perintah berikut untuk memeriksa konfigurasi rute:
route -nJika nilai Destination dari rute adalah 100.64.0.0, nilai Genmask dari rute adalah 255.192.0.0, dan nilai Gateway tidak diatur ke gateway default dari antarmuka jaringan elastis (ENI) yang sesuai, rute tersebut dikonfigurasi dengan tidak tepat. Gateway default mengacu pada nilai Gateway ketika nilai Destination adalah 0.0.0.0.

Jalankan perintah berikut untuk menghapus rute yang menunjuk ke 100.64.0.0/10:
route del -net 100.64.0.0/10
Penyebab 3: Instance ECS backend kelebihan beban
Lihat Kueri dan Analisis Beban Sistem pada Instance Linux dan periksa apakah instance ECS kelebihan beban.