全部产品
Search
文档中心

Server Load Balancer:Memecahkan masalah pemeriksaan kesehatan ALB

更新时间:Jul 02, 2025

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

  1. Masuk ke konsol ALB.

  2. Di bilah navigasi atas, pilih wilayah tempat instance ALB yang ingin Anda kelola diterapkan.

  3. Di panel navigasi sisi kiri, pilih ALB > Server Groups.

  4. Di halaman Server Groups, temukan grup server yang terkait dengan instance ALB dan klik ID grup server.

  5. Di halaman detail grup server, klik Modify Health Check di bagian Health Check.

  6. 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

  1. Masuk ke konsol ALB.

  2. Di bilah navigasi atas, pilih wilayah tempat instance ALB yang ingin Anda kelola diterapkan.

  3. Di panel navigasi sisi kiri, pilih ALB > Server Groups.

  4. Di halaman Server Groups, temukan grup server yang terkait dengan instance ALB dan klik ID grup server.

  5. Di halaman detail grup server, klik tab Backend Servers dan catat port server backend.

  6. 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.

  7. 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 # Contoh
    Catatan
    • Atur [$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.

  8. 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

Catatan
  • 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.

  1. Masuk ke instance ECS dan jalankan perintah berikut untuk menanyakan semua aturan dalam tabel filter:

    iptables -nL

    Keluaran berikut menunjukkan bahwa instance ECS memblokir permintaan dari blok CIDR privat instance ALB.安全防护问题排查

  2. Jalankan perintah berikut untuk menghapus aturan:

    iptables -t filter -D INPUT -s 100.64.0.0/10 -j DROP
  3. Jalankan 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

Catatan

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.

  1. Masuk ke instance ECS backend yang bermasalah dan jalankan perintah berikut untuk memeriksa konfigurasi rute:

    route -n

    Jika 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.健康检查故障定位

  2. 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.