Ringkasan Load Balancer Jaringan passthrough berbasis kumpulan target

Load Balancer Jaringan passthrough eksternal adalah load balancer Lapisan 4 regional. Load Balancer Jaringan passthrough eksternal mendistribusikan traffic TCP dan UDP di antara instance virtual machine (VM) backend di region yang sama di jaringan Virtual Private Cloud (VPC). Load Balancer Jaringan passthrough eksternal dapat menerima traffic dari salah satu opsi berikut:

  • Klien apa pun di internet
  • VM Google Cloud dengan IP eksternal
  • VM Google Cloud yang memiliki akses internet melalui Cloud NAT atau NAT berbasis instance

Bergantung pada konfigurasi aturan penerusan, setiap load balancer berbasis kumpulan target mendukung salah satu jenis traffic protokol berikut:

  • TCP
  • UDP
  • TCP dan UDP

Cakupan load balancer bersifat regional, bukan global. Artinya, semua instance backend untuk Load Balancer Jaringan passthrough eksternal harus berada di region yang sama. Anda dapat menempatkan backend di zona mana pun pada region tersebut.

Load Balancer Jaringan passthrough eksternal mendukung setiap dan semua port. Anda dapat menggunakan Load Balancer Jaringan passthrough eksternal untuk melakukan load balancing terhadap traffic TCP atau UDP. Karena load balancer adalah load balancer pass-through, backend Anda akan menghentikan koneksi TCP atau paket UDP yang di-load balanced. Misalnya, Anda dapat menjalankan server web HTTPS di backend dan menggunakan Load Balancer Jaringan passthrough eksternal untuk mengarahkan permintaan ke server web HTTPS, yang menghentikan TLS di backend Anda sendiri.

Jika Anda membangun aplikasi di GKE, sebaiknya gunakan pengontrol Layanan GKE bawaan, yang men-deploy load balancer Google Cloud atas nama pengguna GKE. Ini sama dengan arsitektur load balancing mandiri, hanya saja siklusnya sepenuhnya otomatis dan dikontrol oleh GKE. Untuk mengetahui detailnya, lihat Mengekspos aplikasi menggunakan layanan.

Arsitektur

Load balancer terdiri dari beberapa komponen konfigurasi. Load balancer tunggal dapat memiliki hal berikut:

Load Balancer Jaringan passthrough eksternal selalu memiliki satu kumpulan target. Beberapa aturan penerusan dapat mereferensikan kumpulan target.

Kumpulan target adalah backend untuk load balancer. Atribut ini menentukan instance backend tempat traffic melakukan load balancing. Setiap aturan penerusan adalah frontend untuk load balancer. Perlu diingat bahwa ada batasan jumlah aturan penerusan dan kumpulan target per project.

Load Balancer Jaringan passthrough eksternal menyeimbangkan beban pada sistem Anda berdasarkan data protokol IP yang masuk, seperti alamat, port, dan jenis protokol.

Load Balancer Jaringan passthrough eksternal adalah load balancer passthrough, sehingga backend Anda menerima permintaan klien asli. Load Balancer Jaringan passthrough eksternal tidak melakukan pemindahan atau proxy Transport Layer Security (TLS). Traffic diarahkan langsung ke VM Anda.

Saat membuat aturan penerusan untuk load balancer, Anda akan menerima alamat IP virtual (VIP) sementara atau mencadangkan VIP yang berasal dari blok jaringan regional.

Selanjutnya, Anda akan mengaitkan aturan penerusan tersebut dengan kumpulan target. VIP adalah setiap transmisi dari titik kehadiran global Google, tetapi backend bersifat regional. Load balancer tidak boleh memiliki backend yang mencakup beberapa region.

Anda dapat menggunakan firewall Google Cloud untuk mengontrol atau memfilter akses ke VM backend.

Load Balancer Jaringan passthrough eksternal memeriksa port sumber dan tujuan, alamat IP, serta protokol untuk menentukan cara meneruskan paket. Untuk traffic TCP, Anda dapat memodifikasi perilaku penerusan load balancer dengan mengonfigurasi afinitas sesi. Load Balancer Jaringan passthrough eksternal meneruskan paket ke antarmuka jaringan pertama (nic0) dari instance dalam kumpulan target.

Load balancer menyimpan alamat IP sumber paket masuk. Alamat IP tujuan untuk paket masuk adalah alamat IP eksternal regional yang terkait dengan aturan penerusan load balancer.

Algoritma distribusi beban

Secara default, untuk mendistribusikan traffic ke instance, nilai afinitas sesi ditetapkan ke NONE. Cloud Load Balancing memilih instance berdasarkan hash IP sumber dan port, IP dan port tujuan, serta protokol. Artinya, koneksi TCP yang masuk tersebar di seluruh instance, dan setiap koneksi baru dapat diarahkan ke instance yang berbeda. Semua paket untuk koneksi diarahkan ke instance yang sama sampai koneksi ditutup. Koneksi yang sudah ada tidak diperhitungkan dalam proses load balancing.

Terlepas dari setelan afinitas sesi, semua paket untuk koneksi diarahkan ke instance yang dipilih hingga koneksi ditutup. Koneksi yang ada tidak berdampak pada keputusan load balancing untuk koneksi masuk baru. Hal ini dapat menyebabkan ketidakseimbangan di antara backend jika koneksi TCP yang berumur panjang digunakan.

Anda dapat memilih setelan afinitas sesi yang berbeda jika memerlukan beberapa koneksi dari klien untuk menuju ke instance yang sama.

Kumpulan target

Resource kumpulan target menentukan grup instance yang akan menerima traffic masuk dari aturan penerusan. Saat aturan penerusan mengarahkan traffic ke kumpulan target, Cloud Load Balancing akan memilih instance dari kumpulan target ini berdasarkan hash IP dan port sumber serta IP dan port tujuan. Setiap kumpulan target beroperasi di satu region dan mendistribusikan traffic ke antarmuka jaringan pertama (nic0) dari backend instance. Untuk mengetahui informasi selengkapnya tentang cara traffic didistribusikan ke instance, baca bagian Algoritma distribusi beban.

Load Balancer Jaringan passthrough eksternal bukanlah proxy. Respons dari VM backend langsung dikirim ke klien, bukan melalui load balancer. Load balancer mempertahankan alamat IP sumber paket. Alamat IP tujuan untuk paket masuk adalah alamat IP eksternal regional yang terkait dengan aturan penerusan load balancer. Oleh karena itu:

  • Instance yang berpartisipasi sebagai VM backend untuk Load Balancer Jaringan passthrough eksternal harus menjalankan lingkungan tamu Linux, lingkungan tamu Windows, atau proses lain yang memberikan kemampuan yang setara.

    Lingkungan OS tamu (atau proses yang setara) bertanggung jawab untuk mengonfigurasi rute lokal pada setiap VM backend. Rute ini memungkinkan VM menerima paket yang memiliki tujuan yang cocok dengan alamat IP aturan penerusan load balancer.

  • Pada backend instance yang menerima traffic load balancing, Anda harus mengonfigurasi software agar terikat ke alamat IP yang terkait dengan aturan penerusan load balancer (atau ke alamat IP apa pun, 0.0.0.0/0).

Load Balancer Jaringan passthrough eksternal mendukung autoscaler Compute Engine, yang memungkinkan pengguna menjalankan penskalaan otomatis pada grup instance dalam kumpulan target berdasarkan pemakaian backend. Untuk mengetahui informasi selengkapnya, lihat Penskalaan berdasarkan pemakaian CPU.

Jika Anda ingin kumpulan target Anda berisi satu instance VM, Anda harus mempertimbangkan untuk menggunakan fitur penerusan protokol.

Kumpulan target hanya dapat digunakan dengan aturan penerusan yang menangani traffic TCP dan UDP. Untuk semua protokol lainnya, Anda harus membuat instance target. Anda harus membuat kumpulan target sebelum dapat menggunakannya dengan aturan penerusan. Setiap project dapat memiliki hingga 50 kumpulan target.

Aturan penerusan

Aturan penerusan berfungsi bersama dengan kumpulan target untuk mendukung load balancing. Untuk menggunakan load balancing, Anda harus membuat aturan penerusan yang mengarahkan traffic ke kumpulan target tertentu. Tidak mungkin melakukan load balancing pada traffic tanpa aturan penerusan.

Setiap aturan penerusan cocok dengan alamat IP, protokol, dan secara opsional, rentang port dengan satu kumpulan target. Saat traffic dikirim ke alamat IP eksternal yang disalurkan oleh aturan penerusan, aturan penerusan akan mengarahkan traffic tersebut ke kumpulan target yang sesuai.

Jika Anda melakukan load balancing paket UDP yang mungkin terfragmentasi sebelum tiba di jaringan VPC Google Cloud, lihat Load balancing dan paket UDP yang terfragmentasi.

Load Balancer Jaringan passthrough eksternal berbasis kumpulan target mendukung protokol berikut untuk setiap aturan penerusan: TCP atau UDP. Jika ingin load balancer meneruskan semua traffic protokol IP, Anda harus menggunakan Load Balancer Jaringan passthrough eksternal berbasis layanan Backend.

Beberapa aturan penerusan

Anda dapat mengonfigurasi beberapa aturan penerusan eksternal regional untuk Load Balancer Jaringan passthrough eksternal yang sama. Secara opsional, setiap aturan penerusan dapat memiliki alamat IP eksternal regional yang berbeda, atau beberapa aturan penerusan dapat memiliki alamat IP eksternal regional yang sama.

Mengonfigurasi beberapa aturan penerusan eksternal regional dapat berguna untuk kasus penggunaan berikut:

  • Anda perlu mengonfigurasi lebih dari satu alamat IP eksternal untuk kumpulan target yang sama.
  • Anda perlu mengonfigurasi rentang port yang berbeda atau protokol yang berbeda dengan menggunakan alamat IP eksternal yang sama untuk kumpulan target yang sama.

Saat menggunakan beberapa aturan penerusan, pastikan Anda mengonfigurasi software yang berjalan di VM backend agar terhubung ke semua alamat IP yang diperlukan. Hal ini diperlukan karena alamat IP tujuan untuk paket yang dikirim melalui load balancer adalah alamat IP eksternal regional yang terkait dengan masing-masing aturan penerusan eksternal regional.

Health check

Health check memastikan bahwa Compute Engine meneruskan koneksi baru hanya ke instance yang sudah aktif dan siap untuk menerimanya. Compute Engine mengirim permintaan health check ke setiap instance pada frekuensi yang ditentukan. Setelah instance melampaui jumlah kegagalan health check yang diizinkan, instance tersebut tidak lagi dianggap sebagai instance yang memenuhi syarat untuk menerima traffic baru.

Untuk memungkinkan penghentian dan penutupan koneksi TCP halus, koneksi yang ada tidak dihentikan secara aktif. Namun, koneksi yang ada ke backend yang tidak responsif tidak dijamin akan tetap bertahan untuk jangka waktu yang lama. Jika memungkinkan, Anda harus memulai proses penonaktifan halus sesegera mungkin untuk backend yang tidak responsif.

Health checker akan terus mengkueri instance yang tidak responsif, dan menampilkan instance ke kumpulan saat jumlah pemeriksaan yang berhasil yang ditentukan terjadi. Jika semua instance ditandai sebagai UNHEALTHY, load balancer akan mengarahkan traffic baru ke semua instance yang ada.

Load Balancer Jaringan passthrough eksternal mengandalkan health check HTTP lama untuk menentukan kondisi instance. Meskipun layanan Anda tidak menggunakan HTTP, Anda harus menjalankan server web dasar pada setiap instance yang dapat dikueri oleh sistem health check.

Health check HTTPS lama tidak didukung untuk Load Balancer Jaringan passthrough eksternal dan tidak dapat digunakan dengan sebagian besar jenis load balancer lainnya.

Aturan firewall

Health check untuk Load Balancer Jaringan passthrough eksternal dikirim dari rentang IP ini. Anda harus membuat aturan firewall izinkan masuk yang mengizinkan traffic dari rentang tersebut.

Load Balancer Jaringan passthrough eksternal adalah load balancer passthrough, yang berarti bahwa aturan firewall Anda harus mengizinkan traffic dari alamat IP sumber klien. Jika layanan Anda terbuka untuk internet, akan lebih mudah untuk mengizinkan traffic dari semua rentang IP. Jika ingin membatasi akses sehingga hanya alamat IP sumber tertentu yang diizinkan, Anda dapat menyiapkan aturan firewall untuk menerapkan pembatasan tersebut. Namun, Anda harus mengizinkan akses dari rentang IP health check.

Untuk mengetahui contoh aturan firewall dan contoh konfigurasi, baca Aturan firewall untuk Load Balancer Jaringan passthrough eksternal.

Alamat IP untuk paket permintaan dan pengembalian

Saat VM backend menerima paket yang di-load balanced dari klien, sumber dan tujuan paket adalah:

  • Sumber: alamat IP eksternal yang terkait dengan VM Google Cloud atau alamat IP internet-routable dari sistem yang terhubung ke load balancer.
  • Tujuan: alamat IP dari aturan penerusan load balancer.

Karena load balancer adalah load balancer pass-through (bukan proxy), paket akan masuk yang memuat alamat IP tujuan dari aturan penerusan load balancer. Software yang berjalan di VM backend harus dikonfigurasi untuk melakukan hal berikut:

  • Memproses (mengikat) alamat IP aturan penerusan load balancer atau setiap alamat IP (0.0.0.0 atau ::)
  • Jika protokol aturan penerusan load balancer mendukung port: Dengarkan (ikat ke) port yang disertakan dalam aturan penerusan load balancer

Paket yang ditampilkan dikirim langsung dari VM backend load balancer ke klien. Alamat IP sumber dan tujuan paket yang dikembalikan bergantung pada protokol:

  • TCP berorientasi pada koneksi sehingga VM backend harus membalas dengan paket yang alamat IP sumbernya cocok dengan alamat IP aturan penerusan, sehingga klien dapat mengaitkan paket respons dengan koneksi TCP yang sesuai.
  • UDP tidak memiliki koneksi sehingga VM backend dapat mengirim paket respons yang alamat IP sumbernya cocok dengan alamat IP aturan penerusan atau cocok dengan alamat IP apa pun yang ditetapkan untuk VM. Secara praktis, sebagian besar klien mengharapkan respons berasal dari alamat IP yang sama tempat mereka mengirim paket.

Tabel berikut merangkum sumber dan tujuan untuk paket respons:

Jenis traffic Sumber Tujuan
TCP Alamat IP aturan penerusan load balancer Sumber paket yang meminta
UDP Untuk sebagian besar kasus penggunaan, alamat IP dari aturan penerusan load balancer Sumber paket yang meminta

Jika VM memiliki alamat IP eksternal atau saat Anda menggunakan Cloud NAT, Anda juga dapat menetapkan alamat IP sumber paket respons ke alamat IPv4 internal utama NIC VM. Google Cloud atau Cloud NAT mengubah alamat IP sumber paket respons menjadi alamat IPv4 eksternal NIC atau alamat IPv4 eksternal Cloud NAT agar dapat mengirim paket respons ke alamat IP eksternal klien. Tidak menggunakan alamat IP aturan penerusan sebagai sumber adalah skenario lanjutan karena klien menerima paket respons dari alamat IP eksternal yang tidak cocok dengan alamat IP tujuan pengiriman paket permintaan.

Jalur pengembalian

Google Cloud menggunakan rute khusus yang tidak ditetapkan dalam jaringan VPC Anda untuk health check. Untuk mengetahui informasi selengkapnya, lihat Jalur yang ditampilkan load balancer.

Arsitektur VPC Bersama

Tabel berikut merangkum komponen VPC Bersama untuk Load Balancer Jaringan passthrough eksternal:

Alamat IP Aturan penerusan Komponen backend
Alamat IP eksternal regional harus ditentukan dalam project yang sama dengan instance yang mengalami load balancing. Aturan penerusan eksternal regional harus ditentukan dalam project yang sama dengan instance dalam kumpulan target (project layanan). Kumpulan target harus ditentukan dalam project dan region yang sama tempat instance dalam kumpulan target berada. Health check yang terkait dengan kumpulan target juga harus ditentukan dalam project yang sama.

Distribusi traffic

Cara Load Balancer Jaringan passthrough eksternal berbasis kumpulan target mendistribusikan koneksi baru bergantung pada cara afinitas sesi dikonfigurasi.

Afinitas sesi

Afinitas sesi mengontrol metode hashing yang digunakan untuk mendistribusikan koneksi baru dari klien ke VM backend load balancer. Load balancer berbasis kumpulan target menggunakan parameter sessionAffinity untuk mengonfigurasi afinitas sesi.

Untuk mengetahui informasi selengkapnya, lihat Menggunakan kumpulan target.

Paket load balancing dan UDP yang terfragmentasi

Jika Anda melakukan load balancing paket UDP, perhatikan hal-hal berikut:

  1. Paket yang tidak terfragmentasi ditangani secara normal di semua konfigurasi.
  2. Paket UDP mungkin terfragmentasi sebelum mencapai Google Cloud. Jaringan yang melakukan intervensi mungkin menunggu semua fragmen tiba sebelum meneruskannya, sehingga menyebabkan penundaan, atau mungkin melepaskan fragmen. Google Cloud tidak menunggu semua fragmen; Google Cloud meneruskan setiap fragmen segera setelah fragmen tersebut tiba.
  3. Karena fragmen UDP berikutnya tidak berisi port tujuan, masalah dapat terjadi dalam situasi berikut:

    • Jika afinitas sesi kumpulan target ditetapkan ke NONE (afinitas 5-tuple), fragmen berikutnya mungkin akan dihapus karena load balancer tidak dapat menghitung hash 5-tuple.
    • Jika ada lebih dari satu aturan penerusan UDP untuk alamat IP yang di-load balanced yang sama, fragmen berikutnya mungkin sampai di aturan penerusan yang salah.

Jika Anda mengharapkan paket UDP yang terfragmentasi, lakukan hal berikut:

  • Tetapkan afinitas sesi ke NONE, CLIENT_IP_PROTO, atau CLIENT_IP.
    • Menetapkan afinitas sesi ke NONE menunjukkan bahwa mempertahankan afinitas tidak diperlukan. Oleh karena itu, load balancer menggunakan hash 5 tuple untuk memilih backend bagi paket yang tidak terfragmentasi, tetapi hash 3 tuple untuk paket yang terfragmentasi.
    • Menetapkan afinitas sesi ke CLIENT_IP_PROTO atau CLIENT_IP berarti port sumber dan tujuan tidak digunakan untuk hashing, sehingga hash yang sama dihitung untuk paket yang terfragmentasi dan tidak terfragmentasi.
  • Hanya gunakan satu aturan penerusan UDP per alamat IP dengan load balancing. Cara ini memastikan bahwa semua fragmen sampai ke aturan penerusan yang sama.

Dengan setelan ini, fragmen UDP dari paket yang sama diteruskan ke instance yang sama untuk dirakit ulang.

Menggunakan instance target sebagai backend

Jika Anda menggunakan instance target sebagai backend untuk Load Balancer Jaringan passthrough eksternal dan Anda mengharapkan paket UDP yang terfragmentasi, hanya gunakan satu aturan penerusan UDP per alamat IP yang di-load balanced, dan konfigurasikan aturan penerusan untuk menerima traffic di semua port 0-65535. Hal ini memastikan bahwa semua fragmen tiba di aturan penerusan yang sama meskipun fragmen tersebut tidak memiliki port tujuan yang sama.

Batasan

  • Anda tidak dapat menggunakan Konsol Google Cloud untuk membuat Load Balancer Jaringan passthrough eksternal berbasis kumpulan target. Sebagai gantinya, gunakan gcloud atau REST API.
  • Load Balancer Jaringan passthrough eksternal tidak mendukung Peering Jaringan VPC.

Langkah selanjutnya