Menyiapkan Load Balancer Jaringan passthrough eksternal untuk beberapa protokol IP

Panduan ini memberikan petunjuk untuk membuat Network Load Balancer passthrough eksternal berbasis layanan backend yang melakukan load balancing pada traffic TCP, UDP, ESP, GRE, ICMP, dan ICMPv6. Anda dapat menggunakan konfigurasi tersebut jika ingin melakukan load balancing traffic yang menggunakan protokol IP selain TCP atau UDP. Load Balancer Jaringan passthrough eksternal berbasis kumpulan target tidak mendukung kemampuan ini.

Untuk mengonfigurasi Load Balancer Jaringan passthrough eksternal untuk protokol IP selain TCP atau UDP, Anda membuat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT. Aturan penerusan ini mengarah ke layanan backend dengan protokol yang disetel ke UNSPECIFIED.

Dalam contoh ini, kami menggunakan dua Load Balancer Jaringan passthrough eksternal untuk mendistribusikan traffic di seluruh VM backend dalam dua grup instance terkelola zonal di region us-central1. Kedua load balancer menerima traffic di alamat IP eksternal yang sama.

Satu load balancer memiliki aturan penerusan dengan protokol TCP dan port 80, dan load balancer lainnya memiliki aturan penerusan dengan protokol L3_DEFAULT. Traffic TCP yang tiba di alamat IP di port 80 ditangani oleh aturan penerusan TCP. Semua traffic lain yang tidak cocok dengan aturan penerusan khusus TCP ditangani oleh aturan penerusan L3_DEFAULT.

Load Balancer Jaringan passthrough eksternal dengan grup instance terkelola zonal
Load Balancer Jaringan passthrough eksternal dengan grup instance terkelola zonal

Skenario ini mendistribusikan traffic di seluruh instance yang responsif. Untuk mendukung hal ini, Anda membuat health check TCP untuk memastikan bahwa traffic hanya dikirim ke instance yang responsif.

Load Balancer Jaringan passthrough eksternal adalah load balancer regional. Semua komponen load balancer harus berada di region yang sama.

Sebelum memulai

Instal Google Cloud CLI. Untuk mengetahui ringkasan lengkap alat ini, lihat ringkasan gcloud CLI. Anda dapat menemukan perintah yang terkait dengan load balancing di referensi API dan gcloud.

Jika Anda belum menjalankan gcloud CLI sebelumnya, jalankan terlebih dahulu perintah gcloud init untuk melakukan autentikasi.

Panduan ini mengasumsikan bahwa Anda sudah memahami bash.

Menyiapkan jaringan dan subnet

Contoh di halaman ini menggunakan jaringan VPC mode kustom bernama lb-network. Anda dapat menggunakan jaringan VPC mode otomatis jika hanya ingin menangani traffic IPv4. Namun, traffic IPv6 memerlukan subnet mode kustom.

Traffic IPv6 juga memerlukan subnet stack ganda (stack-type ditetapkan ke IPv4_IPv6). Saat membuat subnet stack ganda di jaringan VPC mode kustom, Anda memilih jenis akses IPv6 untuk subnet. Untuk contoh ini, kita menetapkan parameter ipv6-access-type subnet ke EXTERNAL. Artinya, VM baru di subnet ini dapat diberi alamat IPv4 eksternal dan alamat IPv6 eksternal. Aturan penerusan juga dapat ditetapkan ke alamat IPv4 eksternal dan alamat IPv6 eksternal.

Backend dan komponen load balancer yang digunakan untuk contoh ini berada di region dan subnet ini:

  • Region: us-central1
  • Subnet: lb-subnet, dengan rentang alamat IPv4 utama 10.1.2.0/24. Meskipun Anda memilih rentang alamat IPv4 yang dikonfigurasi di subnet, rentang alamat IPv6 ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 berukuran tetap (/64).

Untuk membuat contoh jaringan dan subnet, ikuti langkah-langkah berikut.

Konsol

Untuk mendukung traffic IPv4 dan IPv6, gunakan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Masukkan Nama lb-network.

  4. Di bagian Subnet:

    • Setel Subnet creation mode ke Custom.
    • Di bagian New subnet, konfigurasikan kolom berikut, lalu klik Done:
      • Nama: lb-subnet
      • Region: us-central1
      • IP stack type: IPv4 and IPv6 (dual-stack)
      • Rentang IPv4: 10.1.2.0/24
        Meskipun Anda dapat mengonfigurasi rentang alamat IPv4 untuk subnet, Anda tidak dapat memilih rentang alamat IPv6 untuk subnet. Google menyediakan blok CIDR IPv6 ukuran tetap (/64).
      • Jenis akses IPv6: Eksternal
  5. Klik Create.

Untuk mendukung hanya traffic IPv4, gunakan langkah-langkah berikut:

  1. Di konsol Google Cloud, buka halaman jaringan VPC.

    Buka VPC networks

  2. Klik Create VPC network.

  3. Masukkan Nama lb-network.

  4. Di bagian Subnet:

    • Setel Subnet creation mode ke Custom.
    • Di bagian New subnet, konfigurasikan kolom berikut, lalu klik Done:
      • Nama: lb-subnet
      • Region: us-central1
      • Jenis stack IP: IPv4 (single-stack)
      • Rentang IPv4: 10.1.2.0/24
  5. Klik Create.

gcloud

  1. Buat jaringan VPC mode kustom:

    gcloud compute networks create lb-network \
        --subnet-mode=custom
    
  2. Dalam jaringan lb-network, buat subnet untuk backend di region us-central1.

    Untuk traffic IPv4 dan IPv6, gunakan perintah berikut untuk membuat subnet dual-stack:

    gcloud compute networks subnets create lb-subnet \
      --stack-type=IPV4_IPv6 \
      --ipv6-access-type=EXTERNAL \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-central1
    

    Untuk traffic IPv4 saja, gunakan perintah berikut:

    gcloud compute networks subnets create lb-subnet \
      --network=lb-network \
      --range=10.1.2.0/24 \
      --region=us-central1
    

Membuat grup instance terkelola zona

Untuk skenario load balancing ini, Anda akan membuat dua grup instance terkelola zona Compute Engine dan menginstal server web Apache di setiap instance.

Untuk menangani traffic IPv4 dan IPv6, konfigurasikan VM backend menjadi stack ganda. Tetapkan stack-type VM ke IPv4_IPv6. VM juga mewarisi setelan ipv6-access-type (dalam contoh ini, EXTERNAL) dari subnet. Untuk mengetahui detail selengkapnya tentang persyaratan IPv6, lihat Ringkasan Load Balancer Jaringan passthrough eksternal: Aturan penerusan.

Untuk menggunakan VM yang ada sebagai backend, update VM menjadi dual-stack menggunakan perintah gcloud compute instances network-interfaces update.

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.

Membuat grup instance untuk traffic TCP di port 80

Konsol

  1. Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.

    Buka halaman Template instance

    1. Klik Create instance template.
    2. Untuk Name, masukkan ig-us-template-tcp-80.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Luaskan bagian Advanced options.
    5. Luaskan bagian Management, lalu salin skrip berikut ke kolom Startup script.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      systemctl restart apache2
      
    6. Luaskan bagian Networking, lalu tentukan hal berikut:

      1. Untuk Network tags, tambahkan network-lb-tcp-80.
      2. Untuk Network interfaces, klik antarmuka default dan konfigurasi kolom berikut:
        1. Jaringan: lb-network
        2. Subnetwork: lb-subnet
    7. Klik Create.

  2. Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.

    Buka Instance groups

    1. Klik Create instance group.
    2. Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan ig-us-tcp-80.
    4. Di bagian Lokasi, pilih Zona tunggal.
    5. Untuk Region, pilih us-central1.
    6. Untuk Zone, pilih us-central1-a.
    7. Di bagian Instance template, pilih ig-us-template-tcp-80.
    8. Tentukan jumlah instance yang ingin Anda buat dalam grup.

      Untuk contoh ini, tentukan opsi berikut di bagian Penskalaan otomatis:

      • Untuk Autoscaling mode, pilih Off:do not autoscale.
      • Untuk Maximum number of instances, masukkan 2.
    9. Klik Create.

gcloud

Petunjuk gcloud dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain dengan bash yang diinstal.

  1. Buat template instance VM dengan server HTTP dengan perintah gcloud compute instance-templates create.

    Untuk menangani traffic IPv4 dan IPv6, gunakan perintah berikut.

    gcloud compute instance-templates create ig-us-template-tcp-80 \
    --region=us-central1 \
    --network=lb-network \
    --subnet=lb-subnet \
    --ipv6-network-tier=PREMIUM \
    --stack-type=IPv4_IPv6 \
    --tags=network-lb-tcp-80 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    

    Atau, jika Anda ingin menangani traffic khusus traffic IPv4, gunakan perintah berikut.

    gcloud compute instance-templates create ig-us-template-tcp-80 \
    --region=us-central1 \
    --network=lb-network \
    --subnet=lb-subnet \
    --tags=network-lb-tcp-80 \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    systemctl restart apache2'
    
  2. Buat grup instance terkelola di zona dengan perintah gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create ig-us-tcp-80 \
        --zone us-central1-a \
        --size 2 \
        --template ig-us-template-tcp-80
    

Membuat grup instance untuk traffic TCP di port 8080, UDP, ESP, dan ICMP

Konsol

  1. Membuat template instance. Di konsol Google Cloud, buka halaman Instance templates.

    Buka halaman Template instance

    1. Klik Create instance template.
    2. Untuk Name, masukkan ig-us-template-l3-default.
    3. Pastikan Boot disk disetel ke image Debian, seperti Debian GNU/Linux 12 (bookworm). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Luaskan bagian Advanced options.
    5. Luaskan bagian Management, lalu salin skrip berikut ke kolom Startup script. Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.

      #! /bin/bash
      apt-get update
      apt-get install apache2 -y
      a2ensite default-ssl
      a2enmod ssl
      vm_hostname="$(curl -H "Metadata-Flavor:Google" \
      http://metadata.google.internal/computeMetadata/v1/instance/name)"
      echo "Page served from: $vm_hostname" | \
      tee /var/www/html/index.html
      sed -ire 's/^Listen 80$/Listen 8080/g' /etc/apache2/ports.conf
      systemctl restart apache2
      
    6. Luaskan bagian Networking, lalu tentukan hal berikut:

      1. Untuk Network tags, tambahkan network-lb-l3-default.
      2. Untuk Network interfaces, klik antarmuka default dan konfigurasi kolom berikut:
        1. Jaringan: lb-network
        2. Subnetwork: lb-subnet
    7. Klik Create.

  2. Membuat grup instance terkelola. Buka halaman Grup instance di konsol Google Cloud.

    Buka Instance groups

    1. Klik Create instance group.
    2. Pilih New managed instance group (stateless). Untuk informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan ig-us-l3-default.
    4. Di bagian Lokasi, pilih Zona tunggal.
    5. Untuk Region, pilih us-central1.
    6. Untuk Zone, pilih us-central1-c.
    7. Di bagian Instance template, pilih ig-us-template-l3-default.
    8. Tentukan jumlah instance yang ingin Anda buat dalam grup.

      Untuk contoh ini, tentukan opsi berikut di bagian Penskalaan otomatis:

      • Untuk Autoscaling mode, pilih Off:do not autoscale.
      • Untuk Maximum number of instances, masukkan 2.
    9. Klik Create.

gcloud

Petunjuk gcloud dalam panduan ini mengasumsikan bahwa Anda menggunakan Cloud Shell atau lingkungan lain dengan bash yang diinstal.

  1. Buat template instance VM dengan server HTTP dengan perintah gcloud compute instance-templates create.

    Skrip startup juga mengonfigurasi server Apache untuk memproses port 8080, bukan port 80.

    Untuk menangani traffic IPv4 dan IPv6, gunakan perintah berikut.

    gcloud compute instance-templates create ig-us-template-l3-default \
    --region=us-central1 \
    --network=lb-network \
    --subnet=lb-subnet \
    --ipv6-network-tier=PREMIUM \
    --stack-type=IPv4_IPv6 \
    --tags=network-lb-l3-default \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
    systemctl restart apache2'
    

    Atau, jika Anda ingin menangani hanya traffic IPv4, gunakan perintah berikut.

    gcloud compute instance-templates create ig-us-template-l3-default \
    --region=us-central1 \
    --network=lb-network \
    --subnet=lb-subnet \
    --tags=network-lb-l3-default \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --metadata=startup-script='#! /bin/bash
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    vm_hostname="$(curl -H "Metadata-Flavor:Google" \
    http://metadata.google.internal/computeMetadata/v1/instance/name)"
    echo "Page served from: $vm_hostname" | \
    tee /var/www/html/index.html
    sed -ire "s/^Listen 80$/Listen 8080/g" /etc/apache2/ports.conf
    systemctl restart apache2'
    
  2. Buat grup instance terkelola di zona dengan perintah gcloud compute instance-groups managed create.

    gcloud compute instance-groups managed create ig-us-l3-default \
        --zone us-central1-c \
        --size 2 \
        --template ig-us-template-l3-default
    

Mengonfigurasi aturan firewall

Buat aturan firewall berikut:

  • Aturan firewall yang mengizinkan traffic TCP eksternal menjangkau instance backend di grup instance ig-us-tcp-80 di port 80 (menggunakan tag target network-lb-tcp-80). Buat aturan firewall terpisah untuk mengizinkan traffic IPv4 dan IPv6.
  • Aturan firewall yang mengizinkan traffic eksternal lainnya (TCP di port 8080, UDP, ESP, dan ICMP) untuk menjangkau instance backend dalam grup instance ig-us-l3-default (menggunakan tag target network-lb-l3-default). Buat aturan firewall terpisah untuk mengizinkan traffic IPv4 dan IPv6.

Contoh ini membuat aturan firewall yang mengizinkan traffic dari semua rentang sumber untuk menjangkau instance backend Anda di port yang dikonfigurasi. Jika Anda ingin membuat aturan firewall terpisah khusus untuk probe health check, gunakan rentang alamat IP sumber yang didokumentasikan dalam Ringkasan health check: Memeriksa rentang IP dan aturan firewall.

Konsol

  1. Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
    Buka Kebijakan firewall
  2. Untuk mengizinkan traffic TCP IPv4 menjangkau backend di grup instance ig-us-tcp-80, buat aturan firewall berikut.
    1. Klik Create firewall rule.
    2. Masukkan Nama allow-network-lb-tcp-80-ipv4.
    3. Pilih Jaringan tempat aturan firewall diterapkan (Default).
    4. Di bagian Target, pilih Tag target yang ditentukan.
    5. Di kolom Tag target, masukkan network-lb-tcp-80.
    6. Tetapkan Source filter ke IPv4 ranges.
    7. Tetapkan Source IPv4 ranges ke 0.0.0.0/0, yang mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan traffic eksternal dan probe health check untuk menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports. Kemudian, pilih kotak centang TCP dan masukkan 80.
    9. Klik Create. Mungkin perlu waktu beberapa saat agar Konsol menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Muat ulang untuk melihat aturan tersebut.
  3. Untuk mengizinkan traffic IPv4 UDP, ESP, dan ICMP menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut.
    1. Klik Create firewall rule.
    2. Masukkan Nama allow-network-lb-l3-default-ipv4.
    3. Pilih Jaringan tempat aturan firewall diterapkan (Default).
    4. Di bagian Target, pilih Tag target yang ditentukan.
    5. Di kolom Tag target, masukkan network-lb-l3-default.
    6. Tetapkan Source filter ke IPv4 ranges.
    7. Tetapkan Source IPv4 ranges ke 0.0.0.0/0, yang mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan traffic eksternal dan probe health check untuk menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports.
      1. Pilih kotak centang TCP, lalu masukkan 8080.
      2. Centang kotak UDP.
      3. Centang kotak Lainnya dan masukkan esp, icmp.
    9. Klik Create. Mungkin perlu waktu beberapa saat agar Konsol menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Muat ulang untuk melihat aturan tersebut.
  4. Untuk mengizinkan traffic TCP IPv6 menjangkau backend di grup instance ig-us-tcp-80, buat aturan firewall berikut.
    1. Klik Create firewall rule.
    2. Masukkan Nama allow-network-lb-tcp-80-ipv6.
    3. Pilih Jaringan tempat aturan firewall diterapkan (Default).
    4. Di bagian Target, pilih Tag target yang ditentukan.
    5. Di kolom Tag target, masukkan network-lb-tcp-80.
    6. Tetapkan Source filter ke Rentang IPv6.
    7. Tetapkan Source IPv6 ranges ke ::/0, yang mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan traffic eksternal dan probe health check untuk menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports. Klik kotak centang di samping TCP, lalu masukkan 80.
    9. Klik Create. Mungkin perlu waktu beberapa saat agar Konsol menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Muat ulang untuk melihat aturan tersebut.
  5. Untuk mengizinkan traffic IPv6 UDP, ESP, dan ICMPv6 menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP menjangkau instance di port 8080.
    1. Klik Create firewall rule.
    2. Masukkan Nama allow-network-lb-l3-default-ipv6.
    3. Pilih Jaringan tempat aturan firewall diterapkan (Default).
    4. Di bagian Target, pilih Tag target yang ditentukan.
    5. Di kolom Tag target, masukkan network-lb-l3-default.
    6. Tetapkan Source filter ke Rentang IPv6.
    7. Tetapkan Source IPv6 ranges ke ::/0, yang mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan traffic eksternal dan probe health check untuk menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports.
      1. Klik kotak centang di samping TCP, lalu masukkan 8080.
      2. Klik kotak centang di samping UDP.
      3. Centang kotak di samping Lainnya dan masukkan esp, 58.
    9. Klik Create. Mungkin perlu waktu beberapa saat agar Konsol menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Muat ulang untuk melihat aturan tersebut.

gcloud

  1. Untuk mengizinkan traffic TCP IPv4 menjangkau backend di grup instance ig-us-tcp-80, buat aturan firewall berikut.

    gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv4 \
        --network=lb-network \
        --target-tags network-lb-tcp-80 \
        --allow tcp:80 \
        --source-ranges=0.0.0.0/0
    
  2. Untuk mengizinkan traffic IPv4 UDP, ESP, dan ICMP menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP menjangkau instance di port 8080.

    gcloud compute firewall-rules create allow-network-lb-l3-default-ipv4 \
        --network=lb-network \
        --target-tags network-lb-l3-default \
        --allow tcp:8080,udp,esp,icmp \
        --source-ranges=0.0.0.0/0
    
  3. Untuk mengizinkan traffic TCP IPv6 menjangkau backend di grup instance ig-us-tcp-80, buat aturan firewall berikut.

    gcloud compute firewall-rules create allow-network-lb-tcp-80-ipv6 \
        --network=lb-network \
        --target-tags network-lb-tcp-80 \
        --allow tcp:80 \
        --source-ranges=::/0
    
  4. Untuk mengizinkan traffic IPv6 UDP, ESP, dan ICMPv6 menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP menjangkau instance di port 8080.

    gcloud compute firewall-rules create allow-network-lb-l3-default-ipv6 \
        --network=lb-network \
        --target-tags network-lb-l3-default \
        --allow tcp:8080,udp,esp,58 \
        --source-ranges=::/0
    

Mengonfigurasi load balancer

Selanjutnya, siapkan dua load balancer. Konfigurasikan kedua load balancer untuk menggunakan alamat IP eksternal yang sama untuk aturan penerusan, dengan satu load balancer menangani traffic TCP di port 80, dan load balancer lainnya menangani traffic TCP, UDP, ESP, dan ICMP di port 8080.

Saat Anda mengonfigurasi load balancer, instance VM backend Anda akan menerima paket yang ditujukan untuk alamat IP eksternal statis yang Anda konfigurasi. Jika Anda menggunakan image yang disediakan oleh Compute Engine, instance Anda akan otomatis dikonfigurasi untuk menangani alamat IP ini. Jika menggunakan image lain, Anda harus mengonfigurasi alamat ini sebagai alias di eth0 atau sebagai loopback di setiap instance.

Untuk menyiapkan dua load balancer, gunakan petunjuk berikut.

Konsol

Memulai konfigurasi

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Di kolom Name, masukkan nama backend-service-tcp-80 untuk load balancer baru.
  2. Dalam daftar Region, pilih us-central1.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Di halaman Backend configuration, lakukan perubahan berikut:
    1. Di bagian New Backend, pilih IP stack type. Jika Anda membuat backend stack ganda untuk menangani traffic IPv4 dan IPv6, pilih IPv4 and IPv6 (dual-stack). Untuk menangani traffic IPv4 saja, pilih IPv4 (single-stack).
    2. Dalam daftar Instance group, pilih ig-us-tcp-80, lalu klik Done.
    3. Dalam daftar Health check, klik Create a health check, lalu masukkan informasi berikut:
      • Nama: tcp-health-check-80
      • Protokol: TCP
      • Port: 80
    4. Klik Simpan.
  3. Pastikan ada tanda centang biru di samping Backend configuration sebelum melanjutkan.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Di kolom Name, masukkan forwarding-rule-tcp-80.
  3. Untuk menangani traffic IPv4, gunakan langkah-langkah berikut:
    1. Untuk IP version, pilih IPv4.
    2. Di bagian Internal IP purpose, dalam daftar IP address, pilih Create IP address.
      1. Di kolom Name, masukkan network-lb-ipv4.
      2. Klik Reserve.
    3. Untuk Port, pilih Single. Di kolom Nomor port, masukkan 80.
    4. Klik Done.
  4. Untuk menangani traffic IPv6, gunakan langkah-langkah berikut:

    1. Untuk IP version, pilih IPv6.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Dalam daftar IPv6 range, pilih Create IP address.
      1. Di kolom Name, masukkan network-lb-ipv6.
      2. Klik Reserve.
    4. Untuk Port, pilih Single. Di kolom Nomor port, masukkan 80.
    5. Klik Done.

    Lingkaran biru dengan tanda centang di sebelah kiri Konfigurasi frontend menunjukkan penyiapan yang berhasil.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau setelan konfigurasi load balancer Anda.
  3. Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create.

    Di halaman load balancing, di kolom Backend untuk load balancer baru, Anda akan melihat tanda centang hijau yang menunjukkan bahwa load balancer baru berfungsi dengan baik.

Membuat load balancer kedua

Memulai konfigurasi

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing

  2. Klik Create load balancer.
  3. Untuk Type of load balancer, pilih Network Load Balancer (TCP/UDP/SSL), lalu klik Next.
  4. Untuk Proxy or passthrough, pilih Passthrough load balancer, lalu klik Next.
  5. Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
  6. Klik Konfigurasikan.

Konfigurasi dasar

  1. Di kolom Name, masukkan nama backend-service-l3-default untuk load balancer baru.
  2. Dalam daftar Region, pilih us-central1.

Konfigurasi backend

  1. Klik Backend configuration.
  2. Di halaman Backend configuration, lakukan perubahan berikut:
    1. Di bagian New Backend, pilih IP stack type. Jika Anda membuat backend stack ganda untuk menangani traffic IPv4 dan IPv6, pilih IPv4 and IPv6 (dual-stack). Untuk menangani traffic IPv4 saja, pilih IPv4 (single-stack).
    2. Dalam daftar Instance group, pilih ig-us-l3-default, lalu klik Done.
    3. Dalam daftar Protocols, pilih L3 (Multiple protocols).
    4. Dalam daftar Health check, klik Create a health check, lalu masukkan informasi berikut:
      • Nama: tcp-health-check-8080
      • Protokol: TCP
      • Port: 8080
    5. Klik Simpan.
  3. Pastikan ada tanda centang biru di samping Backend configuration sebelum melanjutkan.

Konfigurasi frontend

  1. Klik Frontend configuration.
  2. Di kolom Name, masukkan forwarding-rule-l3-default.
  3. Untuk menangani traffic IPv4, gunakan langkah-langkah berikut:
    1. Untuk IP version, pilih IPv4.
    2. Di bagian Internal IP purpose, dalam daftar IP address, pilih Create IP address.
      1. Di kolom Name, masukkan network-lb-ipv4.
      2. Klik Reserve.
    3. Dalam daftar Protokol, pilih L3 (Beberapa protokol).
    4. Untuk Port, pilih All.
    5. Klik Done.
  4. Untuk menangani traffic IPv6, gunakan langkah-langkah berikut:

    1. Untuk IP version, pilih IPv6.
    2. Untuk Subnetwork, pilih lb-subnet.
    3. Dalam daftar IPv6 range, pilih Create IP address.
      1. Di kolom Name, masukkan network-lb-ipv6.
      2. Klik Reserve.
    4. Di kolom Protocol, pilih L3 (Multiple protocols).
    5. Untuk Port, pilih All.
    6. Klik Done.

    Lingkaran biru dengan tanda centang di sebelah kiri Konfigurasi frontend menunjukkan penyiapan yang berhasil.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau setelan konfigurasi load balancer Anda.
  3. Opsional: Klik Equivalent code untuk melihat permintaan REST API yang akan digunakan untuk membuat load balancer.
  4. Klik Create.

    Di halaman load balancing, di kolom Backend untuk load balancer baru, Anda akan melihat tanda centang hijau yang menunjukkan bahwa load balancer baru berfungsi dengan baik.

gcloud

  1. Lakukan reservasi alamat IP eksternal statis.

    Untuk traffic IPv4: Buat alamat IP eksternal statis untuk load balancer Anda.

    gcloud compute addresses create network-lb-ipv4 \
        --region us-central1
    

    Untuk traffic IPv6: Buat rentang alamat IPv6 eksternal statis untuk load balancer Anda. Subnet yang digunakan harus berupa subnet dual-stack dengan rentang subnet IPv6 eksternal.

    gcloud compute addresses create network-lb-ipv6 \
        --region us-central1 \
        --subnet lb-subnet \
        --ip-version IPV6 \
        --endpoint-type NETLB
    
  2. Buat health check TCP untuk port 80. Health check ini digunakan untuk memverifikasi kondisi backend di grup instance ig-us-tcp-80.

    gcloud compute health-checks create tcp tcp-health-check-80 \
        --region us-central1 \
        --port 80
    
  3. Buat health check TCP untuk port 8080. Health check ini digunakan untuk memverifikasi kondisi backend di grup instance ig-us-l3-default.

    gcloud compute health-checks create tcp tcp-health-check-8080 \
        --region us-central1 \
        --port 8080
    
  4. Buat load balancer pertama untuk traffic TCP di port 80.

    1. Buat layanan backend dengan protokol yang ditetapkan ke TCP.

      gcloud compute backend-services create backend-service-tcp-80 \
          --protocol TCP \
          --health-checks tcp-health-check-80 \
          --health-checks-region us-central1 \
          --region us-central1
      
    2. Tambahkan grup instance backend ke layanan backend.

      gcloud compute backend-services add-backend backend-service-tcp-80 \
          --instance-group ig-us-tcp-80 \
          --instance-group-zone us-central1-a \
          --region us-central1
      
    3. Untuk traffic IPv4: Buat aturan penerusan untuk merutekan traffic TCP masuk di port 80 ke layanan backend. TCP adalah protokol aturan penerusan default dan tidak perlu ditetapkan secara eksplisit.

      Gunakan alamat IP yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer.

      gcloud compute forwarding-rules create forwarding-rule-tcp-80 \
          --load-balancing-scheme external \
          --region us-central1 \
          --ports 80 \
          --address network-lb-ipv4 \
          --backend-service backend-service-tcp-80
      
    4. Untuk traffic IPv6: Buat aturan penerusan untuk merutekan traffic TCP masuk di port 80 ke layanan backend. TCP adalah protokol aturan penerusan default dan tidak perlu ditetapkan secara eksplisit.

      Gunakan rentang alamat IPv6 yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer. Subnet yang digunakan harus berupa subnet stack ganda dengan rentang subnet IPv6 eksternal.

      gcloud compute forwarding-rules create forwarding-rule-tcp-80 \
          --load-balancing-scheme external \
          --region us-central1 \
          --network-tier PREMIUM \
          --ip-version IPV6 \
          --subnet lb-subnet \
          --address network-lb-ipv6 \
          --ports 80 \
          --backend-service backend-service-tcp-80
      
  5. Buat load balancer kedua untuk TCP di port 8080, UDP, ESP, dan traffic ICMP.

    1. Buat layanan backend dengan protokol yang ditetapkan ke UNSPECIFIED.

      gcloud compute backend-services create backend-service-l3-default \
          --protocol UNSPECIFIED \
          --health-checks tcp-health-check-8080 \
          --health-checks-region us-central1 \
          --region us-central1
      
    2. Tambahkan grup instance backend ke layanan backend.

      gcloud compute backend-services add-backend backend-service-l3-default \
          --instance-group ig-us-l3-default \
          --instance-group-zone us-central1-c \
          --region us-central1
      
    3. Untuk traffic IPv4: Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IP yang didukung lainnya (TCP di port 8080, UDP, ESP, dan ICMP). Semua port harus dikonfigurasi dengan aturan penerusan L3_DEFAULT.

      Gunakan alamat IPv4 eksternal yang sama dengan yang Anda gunakan untuk load balancer sebelumnya.

      gcloud compute forwarding-rules create forwarding-rule-l3-default \
          --load-balancing-scheme external \
          --region us-central1 \
          --ports all \
          --ip-protocol L3_DEFAULT \
          --address network-lb-ipv4 \
          --backend-service backend-service-l3-default
      
    4. Untuk traffic IPv6: Buat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT untuk menangani semua traffic protokol IP yang didukung lainnya (TCP di port 8080, UDP, ESP, dan ICMP). Semua port harus dikonfigurasi dengan aturan penerusan L3_DEFAULT.

      Gunakan rentang alamat IPv6 yang dicadangkan di langkah 1 sebagai alamat IP eksternal statis load balancer. Subnet yang digunakan harus berupa subnet stack ganda dengan rentang subnet IPv6 eksternal.

      gcloud compute forwarding-rules create forwarding-rule-l3-default \
          --load-balancing-scheme external \
          --region us-central1 \
          --network-tier PREMIUM \
          --ip-version IPV6 \
          --subnet lb-subnet \
          --address network-lb-ipv6 \
          --ports all \
          --ip-protocol L3_DEFAULT \
          --backend-service backend-service-l3-default
      

Menguji load balancer

Setelah layanan load balancing dikonfigurasi, Anda dapat mulai mengirimkan traffic ke alamat IP eksternal load balancer dan melihat traffic didistribusikan ke instance backend.

Mencari alamat IP eksternal load balancer

Konsol

  1. Di halaman load balancing Lanjutan, buka tab Aturan Penerusan.
    Buka tab Aturan Penerusan
  2. Temukan aturan penerusan yang digunakan oleh load balancer.
  3. Di kolom Alamat IP, perhatikan alamat IP eksternal yang tercantum untuk setiap aturan penerusan IPv4 dan IPv6.

gcloud: IPv4

Masukkan perintah berikut untuk melihat alamat IP eksternal dari aturan penerusan yang digunakan oleh load balancer.

gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \
    --region us-central1

Contoh ini menggunakan alamat IP yang sama untuk kedua aturan penerusan IPv4 sehingga penggunaan forwarding-rule-l3-default juga akan berfungsi.

gcloud: IPv6

Masukkan perintah berikut untuk melihat alamat IPv6 eksternal dari aturan penerusan forwarding-rule-tcp-80 yang digunakan oleh load balancer.

gcloud compute forwarding-rules describe forwarding-rule-tcp-80 \
    --region us-central1

Contoh ini menggunakan alamat IP yang sama untuk kedua aturan penerusan IPv6 sehingga penggunaan forwarding-rule-l3-default juga akan berfungsi.

Mengirim traffic ke load balancer

Prosedur ini mengirim traffic eksternal ke load balancer. Jalankan pengujian berikut untuk memastikan bahwa traffic TCP di port 80 sedang di-load balancing oleh grup instance ig-us-tcp-80, sedangkan semua traffic lainnya (TCP di port 8080, UDP, ESP, dan ICMP) sedang ditangani oleh grup instance ig-us-l3-default.

Memverifikasi perilaku dengan permintaan TCP di port 80

  1. Buat permintaan web (melalui TCP di port 80) ke load balancer menggunakan curl untuk menghubungi alamat IP-nya.

    • Dari klien dengan konektivitas IPv4, jalankan perintah berikut:

      $ while true; do curl -m1 IP_ADDRESS; done
      
    • Dari klien dengan konektivitas IPv6, jalankan perintah berikut:

      $ while true; do curl -m1 http://IPV6_ADDRESS; done
      

      Misalnya, jika alamat IPv6 yang ditetapkan adalah [2001:db8:1:1:1:1:1:1/96], perintahnya akan terlihat seperti:

      $ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]; done
      
  2. Perhatikan teks yang ditampilkan oleh perintah curl. Nama VM backend yang menghasilkan respons ditampilkan dalam teks tersebut; misalnya: Page served from: VM_NAME. Respons hanya boleh berasal dari instance dalam grup instance ig-us-tcp-80.

    Jika respons di awal tidak berhasil, Anda mungkin perlu menunggu sekitar 30 detik agar konfigurasi dimuat sepenuhnya dan instance Anda dianggap responsif sebelum mencoba lagi.

Memverifikasi perilaku dengan permintaan TCP di port 8080

Buat permintaan web (melalui TCP di port 8080) ke load balancer menggunakan curl untuk menghubungi alamat IP-nya.

  • Dari klien dengan konektivitas IPv4, jalankan perintah berikut:

    $ while true; do curl -m1 IPV4_ADDRESS:8080; done
    
  • Dari klien dengan konektivitas IPv6, jalankan perintah berikut:

    $ while true; do curl -m1 http://IPV6_ADDRESS; done
    

    Misalnya, jika alamat IPv6 yang ditetapkan adalah [2001:db8:1:1:1:1:1:1/96], perintahnya akan terlihat seperti:

    $ while true; do curl -m1 http://[2001:db8:1:1:1:1:1:1]:8080; done
    

Perhatikan teks yang ditampilkan oleh perintah curl. Respons hanya boleh berasal dari instance dalam grup instance ig-us-l3-default.

Hal ini menunjukkan bahwa setiap traffic yang dikirim ke alamat IP load balancer di port 8080 ditangani oleh backend di grup instance ig-us-l3-default saja.

Memverifikasi perilaku dengan permintaan ICMP

Untuk memverifikasi perilaku dengan traffic ICMP, Anda mengambil output dari perintah tcpdump untuk mengonfirmasi bahwa hanya VM backend dalam grup instance ig-us-l3-default yang menangani permintaan ICMP yang dikirim ke load balancer.

  1. SSH ke VM backend.

    1. Di konsol Google Cloud, buka halaman Instance VM.
      Buka halaman instance VM

    2. Dalam daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.

  2. Jalankan perintah berikut untuk menggunakan tcpdump agar dapat mulai memproses traffic ICMP.

    sudo tcpdump icmp -w ~/icmpcapture.pcap -s0 -c 10000
    tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
    

    Biarkan jendela SSH tetap terbuka.

  3. Ulangi langkah 1 dan 2 untuk keempat VM backend.

  4. Buat permintaan ICMP ke load balancer.

    Untuk menguji respons IPv4, gunakan ping untuk menghubungi alamat IPv4 load balancer.

    ping IPV4_ADDRESS
    

    Untuk menguji respons IPv6, gunakan ping6 untuk menghubungi alamat IPv6 load balancer.

    ping6 IPV6_ADDRESS
    

    Misalnya, jika alamat IPv6 yang ditetapkan adalah [2001:db8:1:1:1:1:1:1/96], perintahnya akan terlihat seperti:

    ping6 2001:db8:1:1:1:1:1:1
    
  5. Kembali ke setiap jendela SSH yang terbuka di VM dan hentikan perintah pengambilan tcpdump. Anda dapat menggunakan Ctrl+C untuk melakukannya.

  6. Untuk setiap VM, periksa output perintah tcpdump dalam file icmpcapture.pcap.

    sudo tcpdump -r ~/icmpcapture.pcap -n
    

    Untuk VM backend di grup instance ig-us-l3-default, Anda akan melihat entri file seperti:

    reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
    22:13:07.814486 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 1, length 64
    22:13:07.814513 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 1, length 64
    22:13:08.816150 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 2, length 64
    22:13:08.816175 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 2, length 64
    22:13:09.817536 IP 35.230.115.24 > 35.193.84.93: ICMP echo request, id 1995, seq 3, length 64
    22:13:09.817560 IP 35.193.84.93 > 35.230.115.24: ICMP echo reply, id 1995, seq 3, length 64
    ...
    

    Untuk VM backend di grup instance ig-us-tcp-80, Anda akan melihat bahwa tidak ada paket yang diterima dan file harus kosong:

    reading from file /home/[user-directory]/icmpcapture.pcap, link-type EN10MB (Ethernet)
    

Opsi konfigurasi tambahan

Membuat aturan penerusan IPv6 dengan BYOIP

Load balancer yang dibuat pada langkah sebelumnya telah dikonfigurasi dengan aturan penerusan dengan IP version sebagai IPv4 atau IPv6. Bagian ini memberikan petunjuk untuk membuat aturan penerusan IPv6 dengan alamat bawa IP Anda sendiri (BYOIP).

Dengan Bawa alamat IP Anda sendiri, Anda dapat menyediakan dan menggunakan alamat IPv6 publik Anda sendiri untuk resource Google Cloud. Untuk informasi selengkapnya, lihat Menggunakan alamat IP Anda sendiri.

Sebelum mulai mengonfigurasi aturan penerusan IPv6 dengan alamat BYOIP, Anda harus menyelesaikan langkah-langkah berikut:

  1. Membuat awalan IPv6 yang diiklankan secara publik
  2. Membuat awalan yang didelegasikan publik
  3. Membuat sub-awalan IPv6
  4. Mengumumkan awalan

Untuk membuat aturan penerusan baru, ikuti langkah-langkah berikut:

Konsol

  1. Di konsol Google Cloud, buka halaman Load balancing.

    Buka Load balancing.

  2. Klik nama load balancer yang ingin diubah.
  3. Klik Edit.
  4. Klik Frontend configuration.
  5. Klik Add frontend IP and port.
  6. Di bagian New Frontend IP and port, tentukan hal berikut:
    1. Protocol adalah TCP.
    2. Di kolom IP version, pilih IPv6.
    3. Di kolom Sumber rentang IPv6, pilih BYOIP.
    4. Dalam daftar IP collection, pilih sub-awalan yang dibuat di langkah sebelumnya dengan opsi aturan penerusan diaktifkan.
    5. Di kolom Rentang IPv6, masukkan rentang alamat IPv6. Rentang alamat IPv6 harus mematuhi spesifikasi sub-awalan IPv6.
    6. Di kolom Port, masukkan nomor port.
    7. Klik Done.
  7. Klik Add frontend IP and port.
  8. Di bagian New Frontend IP and port, tentukan hal berikut:
    1. Protokol adalah L3 (Beberapa protokol).
    2. Di kolom IP version, pilih IPv6.
    3. Di kolom Sumber rentang IPv6, pilih BYOIP.
    4. Dalam daftar IP collection, pilih sub-awalan yang dibuat di langkah sebelumnya dengan opsi aturan penerusan diaktifkan.
    5. Di kolom Rentang IPv6, masukkan rentang alamat IPv6. Rentang alamat IPv6 harus mematuhi spesifikasi sub-awalan IPv6.
    6. Di kolom Ports, pilih All.
    7. Klik Done.
  9. Klik Perbarui.

Google Cloud CLI

Buat aturan penerusan menggunakan perintah gcloud compute forwarding-rules create:

gcloud compute forwarding-rules create FWD_RULE_NAME \
    --load-balancing-scheme EXTERNAL \
    --ip-protocol L3_DEFAULT \
    --ports ALL \
    --ip-version IPV6 \
    --region REGION_A \
    --address IPV6_CIDR_RANGE  \
    --backend-service BACKEND_SERVICE \
    --ip-collection PDP_NAME

Buat aturan penerusan menggunakan perintah gcloud compute forwarding-rules create:

gcloud compute forwarding-rules create FWD_RULE_NAME \
    --load-balancing-scheme EXTERNAL \
    --ip-protocol PROTOCOL \
    --ports ALL \
    --ip-version IPV6 \
    --region REGION_A \
    --address IPV6_CIDR_RANGE  \
    --backend-service BACKEND_SERVICE \
    --ip-collection PDP_NAME

Ganti kode berikut:

  • FWD_RULE_NAME: nama aturan penerusan
  • REGION_A: region untuk aturan penerusan
  • IPV6_CIDR_RANGE: rentang alamat IPv6 yang ditayangkan oleh aturan penerusan. Rentang alamat IPv6 harus mematuhi spesifikasi sub-awalan IPv6.
  • BACKEND_SERVICE: nama layanan backend
  • PDP_NAME: nama awalan yang didelegasikan publik. PDP harus berupa sub-awalan dalam mode EXTERNAL_IPV6_FORWARDING_RULE_CREATION

Langkah selanjutnya