Panduan ini menjelaskan cara memecahkan masalah konfigurasi untuk Google Cloud Load Balancer Aplikasi internal. Sebelum mengikuti panduan ini, pahami hal-hal berikut:
- Ringkasan Load Balancer Aplikasi Internal
- Subnet khusus proxy
- Logging dan pemantauan Load Balancer Aplikasi Internal
Memecahkan masalah umum dengan Network Analyzer
Network Analyzer secara otomatis memantau konfigurasi jaringan VPC Anda dan mendeteksi konfigurasi yang kurang optimal dan kesalahan konfigurasi. Alat ini mengidentifikasi kegagalan jaringan, memberikan informasi penyebab utama, dan menyarankan kemungkinan solusi. Untuk mempelajari berbagai skenario kesalahan konfigurasi yang otomatis dideteksi oleh Penganalisis Jaringan, lihat Insight load balancer dalam dokumentasi Penganalisis Jaringan.
Network Analyzer tersedia di konsol Google Cloud sebagai bagian dari Network Intelligence Center.
Buka Penganalisis JaringanBackend memiliki mode load balancing yang tidak kompatibel
Saat membuat load balancer, Anda mungkin melihat error:
Validation failed for instance group INSTANCE_GROUP: backend services 1 and 2 point to the same instance group but the backends have incompatible balancing_mode. Values should be the same.
Hal ini terjadi saat Anda mencoba menggunakan backend yang sama di dua load balancer yang berbeda, dan backend tidak memiliki mode penyeimbangan yang kompatibel.
Untuk informasi selengkapnya, lihat referensi berikut:
Traffic yang di-load balance tidak memiliki alamat sumber klien asli
Ini adalah perilaku yang diharapkan. Load Balancer Aplikasi internal beroperasi sebagai reverse proxy(gateway) HTTP (S). Saat program klien membuka koneksi ke alamat IP aturan penerusan INTERNAL_MANAGED, koneksi akan dihentikan di proxy. Proxy memproses permintaan yang tiba melalui koneksi tersebut. Untuk setiap permintaan, proxy memilih backend untuk menerima permintaan berdasarkan peta URL dan faktor lainnya. Kemudian, proxy mengirimkan permintaan ke backend yang dipilih. Akibatnya, dari sudut pandang backend, sumber paket masuk adalah alamat IP dari subnet khusus proxy di region tersebut.
Permintaan ditolak oleh load balancer
Untuk setiap permintaan, proxy memilih backend untuk menerima permintaan berdasarkan
pencocok jalur di peta URL load balancer. Jika peta URL tidak memiliki pencocokan jalur yang ditentukan untuk permintaan, peta URL tidak dapat memilih layanan backend, sehingga menampilkan kode respons HTTP 404 (Tidak Ditemukan).
Load balancer tidak terhubung ke backend
Firewall yang melindungi server backend Anda harus dikonfigurasi untuk mengizinkan traffic masuk dari proxy dalam rentang subnet khusus proxy yang Anda alokasikan ke region load balancer HTTP(S) internal.
Proxy terhubung ke backend menggunakan setelan koneksi yang ditentukan oleh konfigurasi layanan backend Anda. Jika nilai ini tidak cocok dengan konfigurasi server yang berjalan di backend Anda, proxy tidak dapat meneruskan permintaan ke backend.
Pemeriksaan health check tidak dapat menjangkau backend
Untuk memverifikasi bahwa traffic health check mencapai VM backend Anda, aktifkan logging health check dan telusuri entri log yang berhasil.
Klien tidak dapat terhubung ke load balancer
Proxy memproses koneksi ke alamat IP dan port load balancer yang dikonfigurasi dalam aturan penerusan (misalnya, 10.1.2.3:80), dan dengan protokol yang ditentukan dalam aturan penerusan (HTTP atau HTTPS). Jika klien Anda tidak dapat terhubung, pastikan mereka menggunakan alamat, port, dan protokol yang benar.
Pastikan firewall tidak memblokir traffic antara instance klien dan alamat IP yang di-load balance.
Pastikan klien berada di region yang sama dengan load balancer. Load Balancing HTTP(S) Internal adalah produk regional, sehingga semua klien (dan backend) harus berada di region yang sama dengan resource load balancer.
Pembatasan kebijakan organisasi untuk VPC Bersama
Jika Anda menggunakan VPC Bersama dan tidak dapat membuat Load Balancer Aplikasi internal baru di subnet tertentu, kebijakan organisasi mungkin menjadi penyebabnya. Di kebijakan organisasi, tambahkan subnet ke daftar subnet yang diizinkan atau hubungi administrator organisasi Anda. Untuk informasi selengkapnya, lihat
constraints/compute.restrictSharedVpcSubnetworks.
Load balancer tidak mendistribusikan traffic secara merata di seluruh zona
Anda mungkin mengamati ketidakseimbangan traffic Load Balancer Aplikasi internal di seluruh zona. Hal ini dapat terjadi terutama jika pemanfaatan kapasitas backend Anda rendah (< 10%).
Perilaku tersebut dapat memengaruhi latensi secara keseluruhan karena traffic hanya dikirim ke beberapa server di satu zona.
Untuk meratakan distribusi traffic di seluruh zona, Anda dapat melakukan perubahan konfigurasi berikut:
- Gunakan
RATEmode penyeimbangan dengan target kapasitasmax-rate-per-instanceyang rendah. - Gunakan traffic
policy backend
LocalityLbPolicydengan algoritma load balancingLEAST_REQUEST.
Error 5xx yang tidak dapat dijelaskan
Untuk kondisi error yang disebabkan oleh masalah komunikasi antara proxy load balancer dan backend-nya, load balancer akan membuat kode status HTTP (5xx) dan menampilkan kode status tersebut ke klien. Tidak semua error HTTP 5xx
dihasilkan oleh load balancer—misalnya, jika backend mengirim
respons HTTP 5xx ke load balancer, load balancer akan meneruskan
respons tersebut ke kliennya. Untuk menentukan apakah respons 5xx HTTP diteruskan dari backend atau dihasilkan oleh proxy load balancer, lihat kolom proxyStatus pada log load balancer.
Perubahan konfigurasi pada Load Balancer Aplikasi internal, seperti penambahan atau
penghapusan layanan backend, dapat menyebabkan pengguna melihat kode status HTTP 503 selama jangka waktu singkat. Saat perubahan konfigurasi ini diterapkan ke
Envoy secara global,
Anda akan melihat entri log dengan kolom proxyStatus yang cocok dengan
string log connection_refused.
Jika kode status HTTP 5xx tetap ada lebih dari beberapa menit setelah Anda menyelesaikan konfigurasi load balancer, lakukan langkah-langkah berikut untuk memecahkan masalah respons HTTP 5xx:
Pastikan ada aturan firewall yang dikonfigurasi untuk mengizinkan health check. Jika tidak ada, log load balancer biasanya memiliki
proxyStatusyang cocok dengandestination_unavailable, yang menunjukkan bahwa load balancer menganggap backend tidak tersedia.Pastikan traffic health check mencapai VM backend Anda. Untuk melakukannya, aktifkan logging health check dan telusuri entri log yang berhasil.
Untuk load balancer baru, tidak adanya entri log health check yang berhasil tidak berarti bahwa traffic health check tidak mencapai backend Anda. Hal ini mungkin berarti bahwa status respons awal backend belum berubah dari
UNHEALTHYke status yang berbeda. Anda hanya akan melihat entri log health check yang berhasil setelah pemeriksa health check menerima respons HTTP200 OKdari backend.Verifikasi bahwa parameter konfigurasi keep-alive untuk software server HTTP yang berjalan di instance backend tidak kurang dari waktu tunggu keep-alive load balancer, yang nilainya ditetapkan pada 10 menit (600 detik) dan tidak dapat dikonfigurasi.
Load balancer menghasilkan kode status HTTP
5xxsaat koneksi ke backend ditutup secara tidak terduga saat mengirim permintaan HTTP atau sebelum respons HTTP lengkap diterima. Hal ini dapat terjadi karena parameter konfigurasi keep-alive untuk software server web yang berjalan di instance backend kurang dari waktu tunggu keep-alive tetap load balancer. Pastikan konfigurasi waktu tunggu tetap aktif untuk software server HTTP di setiap backend disetel sedikit lebih besar dari 10 menit (nilai yang direkomendasikan adalah 620 detik).
Batasan
Jika Anda mengalami masalah saat menggunakan Load Balancer Aplikasi internal dengan Google Cloud fitur jaringan lainnya, perhatikan batasan kompatibilitas saat ini.