Deskripsi masalah
Setelah Anda mengaktifkan pemeriksaan kesehatan untuk Listener TCP pada instans Classic Load Balancer (CLB), log layanan server backend sering menampilkan galat konektivitas jaringan seperti Connection reset by peer. Analisis paket yang ditangkap menunjukkan bahwa permintaan tersebut berasal dari instans CLB, yang juga mengirim paket RST ke server backend untuk menghentikan koneksi. Pesan galat dalam log layanan mirip dengan contoh berikut.

Penyebab
Masalah ini disebabkan oleh mekanisme pemeriksaan kesehatan CLB. Protokol TCP tidak mengetahui status layanan lapisan atas. Untuk mengurangi biaya pemeriksaan kesehatan dan dampaknya terhadap layanan backend, CLB melakukan pemeriksaan TCP SYN (deteksi koneksi half-open) untuk pemeriksaan kesehatan Listener TCP tanpa menyelesaikan jabat tangan tiga arah TCP secara lengkap. Setelah menerima SYN+ACK dari backend, CLB segera mengirim paket RST untuk menutup koneksi tanpa bertukar data layanan apa pun. Akibatnya, layanan lapisan atas—seperti kolam koneksi Java—menganggap koneksi tersebut tidak normal dan melemparkan pengecualian Connection reset by peer. Prosedur pertukaran data secara rinci adalah sebagai berikut:
-
Instans CLB mengirim paket SYN ke port layanan backend.
-
Server backend menerima permintaan tersebut dan mengembalikan paket SYN-ACK sesuai protokol TCP standar jika status port normal.
-
Jika instans CLB menerima acknowledgement dari port layanan backend, CLB menganggap pendengar port tersebut normal dan menandai pemeriksaan kesehatan sebagai berhasil.
-
Instans CLB kemudian mengirim paket RST ke port layanan backend untuk menutup koneksi. Dengan demikian, operasi pemeriksaan kesehatan selesai tanpa pengiriman data layanan.
Solusi
Anda dapat menggunakan salah satu solusi berikut untuk mengatasi masalah ini:
-
Solusi 1: Ubah tipe pendengar. Ganti pendengar instans CLB dari TCP ke HTTP atau HTTPS. Untuk informasi selengkapnya, lihat Add an HTTP listener dan Add an HTTPS listener.
-
Solusi 2: Filter log. Pada lapisan layanan, filter log untuk mengabaikan pesan galat yang berasal dari rentang alamat IP yang digunakan untuk pemeriksaan kesehatan CLB.
CatatanRentang alamat IP untuk pemeriksaan kesehatan CLB adalah 100.64.0.0/10.
Berlaku untuk
-
Classic Load Balancer (CLB)