Memecahkan masalah Load Balancer Jaringan passthrough eksternal

Panduan ini menjelaskan cara memecahkan masalah konfigurasi untuk Load Balancer Jaringan passthrough eksternal Google Cloud. Sebelum menyelidiki masalah, pahami halaman berikut:

Memecahkan masalah umum dengan Network Analyzer

Network Analyzer otomatis memantau konfigurasi jaringan VPC Anda dan mendeteksi konfigurasi yang kurang optimal dan kesalahan konfigurasi. Fitur ini mengidentifikasi kegagalan jaringan, memberikan informasi akar masalah, dan menyarankan kemungkinan resolusi. Untuk mempelajari berbagai skenario kesalahan konfigurasi yang otomatis terdeteksi oleh Network Analyzer, lihat Insight load balancer dalam dokumentasi Network Analyzer.

Network Analyzer tersedia di konsol Google Cloud sebagai bagian dari Network Intelligence Center.

Buka Network Analyzer

Memecahkan masalah penyiapan

Backend memiliki mode 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:

Memecahkan masalah konektivitas umum

Jika Anda tidak dapat terhubung ke Load Balancer Jaringan passthrough eksternal, periksa masalah umum berikut:

  • Verifikasi aturan firewall.

    • Pastikan aturan firewall yang mengizinkan traffic masuk ditentukan untuk mengizinkan health check ke VM backend.
    • Pastikan aturan firewall izinkan masuk mengizinkan traffic ke VM backend dari klien.
    • Pastikan aturan firewall yang relevan ada untuk mengizinkan traffic menjangkau VM backend di port yang digunakan oleh load balancer.
    • Jika Anda menggunakan tag target untuk aturan firewall, pastikan VM backend load balancer diberi tag dengan benar.

    Untuk mempelajari cara mengonfigurasi aturan firewall yang diperlukan oleh Load Balancer Jaringan passthrough eksternal, lihat Mengonfigurasi aturan firewall.

  • Pastikan agen tamu Google berjalan di VM backend. Jika Anda dapat terhubung ke VM backend yang sehat, tetapi tidak dapat terhubung ke load balancer, mungkin agen tamu Google (sebelumnya, Lingkungan tamu Windows atau Lingkungan Tamu Linux) di VM tidak berjalan atau tidak dapat berkomunikasi dengan server metadata (metadata.google.internal, 169.254.169.254).

    Periksa hal-hal berikut:

    • Pastikan agen tamu Google diinstal dan berjalan di VM backend.
    • Pastikan aturan firewall dalam sistem operasi tamu VM backend (iptables atau Windows Firewall) tidak memblokir akses ke server metadata.
  • Verifikasi bahwa VM backend menerima paket yang dikirim ke load balancer. Setiap VM backend harus dikonfigurasi untuk menerima paket yang dikirim ke load balancer. Artinya, tujuan paket yang dikirim ke VM backend adalah alamat IP load balancer. Dalam sebagian besar kasus, ini diterapkan dengan rute lokal.

    Untuk VM yang dibuat dari image Google Cloud, Agen tamu akan menginstal rute lokal untuk alamat IP load balancer. Instance Google Kubernetes Engine yang didasarkan pada Container-Optimized OS menerapkannya dengan menggunakan iptables.

    Di VM backend Linux, Anda dapat memverifikasi keberadaan rute lokal dengan menjalankan perintah berikut. Ganti LOAD_BALANCER_IP dengan alamat IP load balancer:

    sudo ip route list table local | grep LOAD_BALANCER_IP
    
  • Verifikasi alamat IP layanan dan binding port di VM backend. Paket yang dikirim ke Load Balancer Jaringan passthrough eksternal tiba di VM backend dengan alamat IP tujuan load balancer itu sendiri. Jenis load balancer ini bukan proxy, dan ini adalah perilaku yang diharapkan.

    Untuk melihat layanan yang memproses di port, jalankan perintah berikut:

    netstat -nl | grep ':PORT'
    

    Software yang berjalan di VM backend harus melakukan hal berikut:

    • Memproses (terikat dengan) alamat IP load balancer atau alamat IP apa pun (0.0.0.0 atau ::)
    • Mendengarkan (terikat dengan) port yang disertakan dalam aturan penerusan load balancer

    Untuk mengujinya, hubungkan ke VM backend menggunakan SSH atau RDP. Kemudian, lakukan pengujian berikut menggunakan curl, telnet, atau alat serupa:

    • Coba jangkau layanan dengan menghubunginya menggunakan alamat IP internal VM backend itu sendiri, 127.0.0.1, atau localhost.
    • Coba jangkau layanan dengan menghubunginya menggunakan alamat IP aturan penerusan load balancer.
  • Pastikan traffic health check dapat menjangkau VM backend. Untuk memverifikasi bahwa traffic health check menjangkau VM backend Anda, aktifkan logging health check dan telusuri entri log yang berhasil.

Memecahkan masalah VPC Bersama

Jika Anda menggunakan VPC Bersama dan tidak dapat membuat Network Load Balancer passthrough external 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 batasan constraints/compute.restrictSharedVpcSubnetworks.

Memecahkan masalah failover

Jika Anda telah mengonfigurasi failover untuk Load Balancer Jaringan passthrough eksternal, gunakan langkah-langkah berikut untuk memverifikasi konfigurasi Anda:

  • Pastikan Anda telah menetapkan minimal satu backend failover.
  • Verifikasi setelan kebijakan failover Anda.
  • Pastikan Anda memahami cara kerja keanggotaan dalam kumpulan aktif, dan kapan Google Cloud melakukan failover dan failback. Periksa konfigurasi load balancer Anda dengan melakukan tindakan berikut:

    • Gunakan konsol Google Cloud untuk memeriksa jumlah VM backend yang berfungsi dengan baik di setiap grup instance backend. Konsol Google Cloud juga menampilkan VM mana yang ada dalam kumpulan aktif.

    • Pastikan rasio failover load balancer Anda ditetapkan dengan benar. Misalnya, jika Anda memiliki sepuluh VM utama dan rasio failover ditetapkan ke 0.2, ini berarti Google Cloud melakukan failover jika kurang dari dua (10 × 0.2 = 2) VM utama yang responsif. Rasio failover 0.0 memiliki makna khusus: Google Cloud melakukan failover jika tidak ada VM utama yang responsif.

Masalah lain yang dapat terjadi adalah sebagai berikut:

  • Pembentukan aktif berubah bolak-balik (flapping) antara backend utama dan failover.

    Menggunakan grup instance terkelola dengan penskalaan otomatis dan failover dapat menyebabkan kumpulan aktif berulang kali melakukan failover dan failback antara backend utama dan failover. Google Cloud tidak mencegah Anda mengonfigurasi failover dengan grup instance terkelola, karena deployment Anda mungkin mendapatkan manfaat dari penyiapan ini.

  • Menonaktifkan pengosongan koneksi tidak berfungsi.

    Menonaktifkan pengosongan koneksi hanya berfungsi jika layanan backend disiapkan dengan protokol TCP.

    Pesan error berikut akan muncul jika Anda membuat layanan backend dengan UDP saat pengosongan koneksi dinonaktifkan:

    gcloud compute backend-services create my-failover-bs
      --load-balancing-scheme external \
      --health-checks-region us-central1 \
      --health-checks my-tcp-health-check \
      --region us-central1 \
      --no-connection-drain-on-failover \
      --drop-traffic-if-unhealthy \
      --failover-ratio 0.5 \
      --protocol UDP
    ERROR: (gcloud.compute.backend-services.create) Invalid value for
    [--protocol]: can only specify --connection-drain-on-failover if the protocol is
    TCP.
    
  • Koneksi yang ada akan dihentikan selama failover atau failback.

    Edit kebijakan penggantian layanan backend Anda. Pastikan pengosongan koneksi saat failover diaktifkan.

Memecahkan masalah logging

Jika Anda mengonfigurasi logging untuk Load Balancer Jaringan passthrough eksternal, masalah berikut dapat terjadi:

  • Pengukuran RTT seperti nilai byte mungkin tidak ada di beberapa log jika sampel yang diambil tidak cukup untuk menangkap RTT. Hal ini lebih mungkin terjadi untuk koneksi bervolume rendah.
  • Nilai RTT hanya tersedia untuk alur TCP.
  • Beberapa paket dikirim tanpa payload. Jika paket khusus header diambil sampelnya, nilai byte-nya adalah 0.