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 dan kesalahan konfigurasi yang kurang optimal. Alat ini mengidentifikasi kegagalan jaringan, memberikan informasi akar masalah, dan menyarankan penyelesaian yang memungkinkan. Untuk mempelajari berbagai skenario kesalahan konfigurasi yang terdeteksi secara otomatis oleh Network Analyzer, lihat Insight load balancer dalam dokumentasi Network Analyzer.

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

Buka Network Analyzer

Memecahkan masalah penyiapan

Backend memiliki mode penyeimbangan 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 dalam dua load balancer yang berbeda, dan backend tidak memiliki mode balancing 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 bahwa ingress mengizinkan aturan firewall ditetapkan untuk mengizinkan health check ke VM backend.
    • Pastikan bahwa ingress mengizinkan aturan firewall mengizinkan traffic ke VM backend dari klien.
    • Pastikan adanya aturan firewall yang relevan agar traffic dapat mencapai VM backend pada 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 Anda, 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, Windows Guest Environment atau Linux Guest Environment) 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 di VM backend (iptables atau Windows Firewall) tidak memblokir akses ke server metadata.
  • Pastikan 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 situasi, hal ini diimplementasikan 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 menerapkan ini dengan menggunakan iptables.

    Pada 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 diproses 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 ::)
    • Memproses (terikat ke) port yang disertakan dalam aturan penerusan load balancer

    Untuk mengujinya, hubungkan ke VM backend menggunakan SSH atau RDP. Kemudian, jalankan 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 mencapai 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 Load Balancer Jaringan passthrough eksternal baru di subnet tertentu, kebijakan organisasi mungkin menjadi penyebabnya. Pada kebijakan organisasi, tambahkan subnet ke daftar subnet yang diizinkan atau hubungi administrator organisasi Anda. Untuk mengetahui 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:

  • Pastikan Anda telah menetapkan setidaknya satu backend failover.
  • Verifikasi setelan kebijakan failover Anda.
  • Pastikan Anda memahami cara kerja langganan di kumpulan aktif, serta kapan Google Cloud menjalankan failover dan failback. Periksa konfigurasi load balancer dengan melakukan hal berikut:

    • Gunakan konsol Google Cloud untuk memeriksa jumlah VM backend yang responsif di setiap grup instance backend. Konsol Google Cloud juga menunjukkan VM mana yang berada di kumpulan aktif.

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

Masalah lain yang dapat terjadi adalah sebagai berikut:

  • Kumpulan aktif berubah-ubah (flapping) antara backend utama dan failover.

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

  • Menonaktifkan pengosongan koneksi tidak berfungsi.

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

    Pesan error berikut 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 sudah ada dihentikan selama failover atau failback.

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

Memecahkan masalah logging

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

  • Pengukuran RTT seperti nilai byte mungkin hilang di beberapa log jika tidak ada cukup paket yang diambil sampelnya 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.