Panduan ini menjelaskan cara memecahkan masalah konfigurasi untuk Load Balancer Jaringan passthrough internal Google Cloud. Sebelum menyelidiki masalah, pahami halaman berikut:
- Ringkasan Load Balancer Jaringan passthrough internal
- Ringkasan failover untuk Load Balancer Jaringan passthrough internal
- Load Balancer Jaringan passthrough internal sebagai next hop
- Logging dan pemantauan Load Balancer Jaringan passthrough internal
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 AnalyzerBackend 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 internal, periksa masalah umum berikut.
Memverifikasi 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 internal Anda, lihat Mengonfigurasi aturan firewall.
Memastikan lingkungan Tamu berjalan di VM backend
Jika Anda dapat terhubung ke VM backend yang sehat, tetapi tidak dapat terhubung ke load
balancer, mungkin lingkungan Tamu
(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 lingkungan Tamu 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.
Memverifikasi 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 kebanyakan situasi, hal ini dilakukan 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
Memverifikasi alamat IP layanan dan binding port pada VM backend
Paket yang dikirim ke Load Balancer Jaringan passthrough internal tiba di VM backend dengan alamat IP tujuan load balancer itu sendiri. Jenis load balancer ini bukan proxy, dan ini adalah perilaku yang diharapkan.
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, 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.
Memeriksa apakah VM klien berada di region yang sama dengan load balancer
Jika klien yang terhubung ke load balancer berada di region lain, pastikan akses global diaktifkan.
Memverifikasi bahwa 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.
Anda juga dapat memverifikasi bahwa fungsi load balancer responsif dengan melihat status"Sehat" untuk backend.
Jika tidak ada instance responsif di backend, pastikan health check yang sesuai telah dikonfigurasi dan setiap VM di backend tersebut memproses port health check yang dikonfigurasi.
Dari klien di jaringan VPC yang sama, jalankan perintah berikut untuk memastikan bahwa VM backend memproses di port TCP tertentu:
telnet SERVER_IP_ADDRESS PORT
Ganti kode berikut:
- SERVER_IP_ADDRESS: Alamat IP VM backend.
- PORT: Port yang Anda konfigurasi untuk health check.
Secara default, port health check adalah
80
.
Atau, Anda dapat menggunakan SSH untuk menghubungkan VM backend dan menjalankan perintah berikut:
curl localhost:PORT
Sekali lagi, ganti PORT dengan port yang Anda konfigurasikan untuk health check.
Cara lain untuk melakukan pengujian ini adalah dengan menjalankan perintah berikut:
netstat -npal | grep LISTEN
Pada output, periksa hal berikut:
<var>LB_IP_ADDRESS</var>:<var>PORT</var>
0.0.0.0:<var>PORT</var>
:::<var>PORT</var>
Parameter ini tidak menentukan apakah perutean disiapkan dengan benar untuk merespons alamat IP load balancer. Itu adalah masalah lain dengan
gejala serupa. Untuk perutean, jalankan perintah ip route list table local
dan pastikan
bahwa alamat IP load balancer tercantum, seperti yang dijelaskan dalam Memverifikasi bahwa
VM backend menerima paket yang dikirim ke load balancer.
Memecahkan masalah performa
Jika Anda menemukan masalah performa dan latensi yang meningkat, periksa masalah umum berikut.
Memverifikasi fungsi server
Jika semua server backend merespons health check, pastikan permintaan dari klien berfungsi dengan baik saat dikeluarkan di server secara langsung. Misalnya, jika klien mengirimkan permintaan HTTP ke server melalui load balancer dan tidak ada respons atau responsnya jauh lebih lambat dari biasanya, berikan permintaan HTTP yang sama di setiap server backend dan amati perilakunya.
Jika salah satu server backend individu tidak berperilaku dengan benar saat permintaan dikeluarkan dari dalam server itu sendiri, Anda dapat menyimpulkan bahwa stack aplikasi server tidak berfungsi dengan benar. Anda dapat lebih berfokus pada pemecahan masalah pada aplikasi itu sendiri. Jika semua server berperilaku dengan benar, langkah selanjutnya adalah melihat sisi klien dan jaringan.
Memverifikasi konektivitas dan latensi jaringan
Jika semua server backend merespons permintaan dengan benar, verifikasi latensi jaringan. Dari VM klien, berikan perintah ping konstan ke setiap server, sebagai berikut:
ping SERVER_IP_ADDRESS
Pengujian ini menunjukkan latensi jaringan bawaan dan apakah jaringan mengurangi paket. Dalam beberapa kasus, aturan firewall mungkin memblokir traffic ICMP. Jika ya, pengujian ini gagal memberikan hasil apa pun. Verifikasi dengan administrator aturan firewall Anda untuk mengetahui apakah hal ini terjadi.
Jika perintah ping
menunjukkan latensi yang jauh lebih tinggi daripada kehilangan paket normal atau
yang signifikan, buka kasus dukungan
Google Cloud untuk menyelidiki lebih lanjut.
Mengidentifikasi kombinasi klien-server yang bermasalah
Jika pengujian ping
jaringan menyarankan latensi rendah dan tidak ada paket yang hilang, langkah berikutnya adalah mengidentifikasi kombinasi klien-server tertentu, jika ada, yang memberikan hasil bermasalah. Anda dapat melakukannya dengan mengurangi jumlah server backend hingga setengahnya hingga jumlah server mencapai 1, sekaligus mereproduksi perilaku yang bermasalah (misalnya, latensi tinggi atau tanpa respons).
Jika Anda mengidentifikasi satu atau beberapa kombinasi klien-server yang bermasalah, lakukan pencatatan dan analisis traffic.
Jika kombinasi klien-server yang bermasalah tidak teridentifikasi, lanjutkan ke pengujian performa.
Melakukan penangkapan dan analisis traffic
Jika Anda mengidentifikasi kombinasi tertentu dari server klien-server yang bermasalah, Anda dapat menggunakan pengambilan paket untuk menentukan bagian komunikasi yang menyebabkan penundaan atau kerusakan. Perekaman paket dapat dilakukan dengan tcpdump sebagai berikut:
- Instal {i>tcpdump<i} di server.
- Mulai penangkapan tcpdump di server.
Dari klien, berikan contoh permintaan, seperti berikut:
curl URL
Menganalisis {i>output<i} {i>tcpdump<i} untuk mengidentifikasi masalahnya.
Melakukan pengujian performa
Jika Anda tidak mengidentifikasi kombinasi klien-server yang bermasalah dan performa gabungan semua klien dan server secara bersamaan lebih rendah dari yang diharapkan, pertimbangkan pengujian berikut:
- Satu klien dan satu server, tanpa load balancing.
Satu klien dan satu server, dengan load balancing.
Hasil: Kombinasi hasil dari pengujian [1] dan [2] mengidentifikasi apakah load balancer menyebabkan masalah.
Satu klien dan beberapa server, dengan load balancing.
Hasil: Identifikasi batas performa dari satu klien.
Beberapa klien dan satu server, dengan load balancing.
Hasil: Mengidentifikasi batas performa satu server.
Beberapa klien dan beberapa server, tanpa load balancing.
Hasil: Identifikasi batas performa jaringan.
Saat menjalankan pengujian daya tahan dengan beberapa klien dan server, resource klien atau server (CPU, memori, I/O) mungkin menjadi bottleneck dan mengurangi hasil agregat. Hasil gabungan yang menurun dapat terjadi meskipun setiap klien dan server berperilaku dengan benar.
Memecahkan masalah VPC Bersama
Jika Anda menggunakan VPC Bersama dan tidak dapat membuat Load Balancer Jaringan passthrough internal 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 informasi selengkapnya, lihat
batasan
constraints/compute.restrictSharedVpcSubnetworks
.
Memecahkan masalah failover
Jika Anda telah mengonfigurasi failover untuk Load Balancer Jaringan passthrough internal, bagian berikut menjelaskan masalah yang dapat terjadi.
Konektivitas
- Pastikan Anda telah menetapkan setidaknya satu backend failover.
- Verifikasi setelan kebijakan failover Anda:
- Rasio failover
- Menurunkan traffic saat semua VM backend tidak responsif
- Menonaktifkan pengosongan koneksi saat failover
Masalah terkait grup instance terkelola dan failover
- Gejala: Kumpulan aktif berubah bolak-balik (mengayunkan jari) antara backend utama dan failover.
- Kemungkinan alasan: Menggunakan grup instance terkelola dengan penskalaan otomatis dan failover dapat menyebabkan kumpulan aktif mengalami failover dan failover berulang kali 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.
Nonaktifkan batasan pengosongan koneksi untuk grup failover
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 \ --global-health-checks \ --load-balancing-scheme=internal \ --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.
Traffic dikirim ke VM backend yang tidak terduga
Pertama, periksa hal berikut: Jika VM klien juga merupakan VM backend dari load balancer, perilaku yang diharapkan adalah bahwa koneksi yang dikirim ke alamat IP aturan penerusan load balancer selalu dijawab oleh VM backend itu sendiri. Untuk mengetahui informasi selengkapnya, lihat menguji koneksi dari satu klien dan mengirim permintaan dari VM yang di-load balanced.
Jika VM klien bukan VM backend dari load balancer:
Untuk permintaan dari satu klien, lihat menguji koneksi dari satu klien agar Anda memahami batasan metode ini.
Pastikan Anda telah mengonfigurasi ingress untuk mengizinkan aturan firewall mengizinkan health check.
Untuk konfigurasi failover, pastikan Anda memahami cara kerja langganan di kumpulan aktif, serta kapan Google Cloud melakukan failover dan failback. Periksa konfigurasi load balancer Anda:
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 failover0.0
memiliki arti khusus: Google Cloud melakukan failover saat tidak ada VM utama yang responsif.
Koneksi yang ada dihentikan selama failover atau failback
Edit kebijakan failover layanan backend Anda. Pastikan pengosongan koneksi saat failover diaktifkan.
Memecahkan masalah load balancer sebagai next hop
Saat Anda menetapkan Load Balancer Jaringan passthrough internal menjadi next-hop dari rute statis kustom, masalah berikut mungkin akan terjadi:
Terjadi masalah konektivitas
Jika Anda tidak dapat melakukan ping ke alamat IP di rentang tujuan rute yang next hop-nya adalah aturan penerusan untuk Load Balancer Jaringan passthrough internal, perhatikan bahwa rute yang menggunakan jenis next hop ini mungkin tidak memproses traffic ICMP, bergantung pada kapan rute tersebut dibuat. Jika rute dibuat sebelum 15 Mei 2021, rute tersebut hanya akan memproses traffic TCP dan UDP hingga 16 Agustus 2021. Mulai 16 Agustus 2021, semua rute akan otomatis meneruskan semua traffic protokol (TCP, UDP, dan ICMP) terlepas dari kapan rute dibuat. Jika tidak ingin menunggu hingga saat itu, Anda dapat mengaktifkan fungsi ping sekarang dengan membuat rute baru dan menghapus yang lama.
Saat menggunakan Load Balancer Jaringan passthrough internal sebagai next hop untuk rute statis kustom, semua traffic akan dikirimkan ke VM backend responsif load balancer, terlepas dari protokol yang dikonfigurasi untuk layanan backend internal load balancer, dan terlepas dari port atau port yang dikonfigurasi pada aturan penerusan internal load balancer.
Pastikan Anda telah membuat aturan firewall masuk dan izinkan yang mengidentifikasi dengan benar sumber traffic yang harus dikirimkan ke VM backend melalui next hop rute statis kustom. Paket yang tiba di VM backend mempertahankan alamat IP sumbernya, bahkan saat dikirimkan melalui rute statis kustom.
Nilai tidak valid untuk rentang tujuan
Rentang tujuan dari rute statis kustom tidak boleh lebih spesifik daripada rute subnet apa pun di jaringan VPC Anda. Jika Anda menerima pesan error berikut saat membuat rute statis kustom:
Invalid value for field 'resource.destRange': [ROUTE_DESTINATION]. [ROUTE_DESTINATION] hides the address space of the network .... Cannot change the routing of packets destined for the network.
Anda tidak dapat membuat rute statis kustom dengan tujuan yang sama persis atau lebih spesifik (dengan mask yang lebih panjang) daripada rute subnet. Lihat pemberlakuan dan urutan untuk informasi selengkapnya.
Jika paket pergi ke tujuan yang tidak terduga, hapus rute lain di jaringan VPC Anda yang memiliki tujuan yang lebih spesifik. Tinjau urutan pemilihan rute untuk memahami pemilihan rute Google Cloud.
Memecahkan masalah logging
Jika Anda mengonfigurasi logging untuk Load Balancer Jaringan passthrough internal, 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
.
Langkah selanjutnya
- Lihat Logging dan Pemantauan Load Balancer Jaringan passthrough internal untuk mengetahui informasi tentang cara mengonfigurasi Logging dan Pemantauan untuk Load Balancer Jaringan passthrough internal.
- Lihat Load Balancer Jaringan passthrough internal dan jaringan yang terhubung untuk mengetahui informasi tentang cara mengakses Load Balancer Jaringan passthrough internal dari jaringan pembanding yang terhubung ke jaringan VPC Anda.