Menyiapkan Load Balancer Jaringan passthrough eksternal untuk beberapa protokol IP

Panduan ini berisi petunjuk untuk membuat Load Balancer Jaringan passthrough berbasis layanan backend yang melakukan load balancing terhadap traffic TCP, UDP, ESP, GRE, ICMP, dan ICMPv6. Anda dapat menggunakan konfigurasi ini jika ingin melakukan load balancing terhadap 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 harus membuat aturan penerusan dengan protokol yang ditetapkan ke L3_DEFAULT. Aturan penerusan ini mengarah ke layanan backend dengan protokol yang ditetapkan 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 menurut zona 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, sedangkan load balancer lainnya memiliki aturan penerusan dengan protokol L3_DEFAULT. Traffic TCP yang tiba di alamat IP pada port 80 ditangani oleh aturan penerusan TCP. Semua traffic lain yang tidak cocok dengan aturan penerusan khusus TCP akan ditangani oleh aturan penerusan L3_DEFAULT.

Load Balancer Jaringan passthrough eksternal dengan grup instance terkelola menurut zona
Load Balancer Jaringan passthrough eksternal dengan grup instance terkelola menurut zona

Skenario ini mendistribusikan traffic ke berbagai 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 ringkasan lengkap tentang alat ini, baca ringkasan gcloud CLI. Anda dapat menemukan perintah yang terkait dengan load balancing di referensi API dan gcloud.

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

Panduan ini mengasumsikan bahwa Anda sudah terbiasa dengan 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 dual-stack (stack-type yang disetel ke IPv4_IPv6). Saat membuat subnet stack ganda di jaringan VPC mode kustom, Anda memilih jenis akses IPv6 untuk subnet tersebut. 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.

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 akan ditetapkan secara otomatis. Google menyediakan blok CIDR IPv6 dengan ukuran 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 Subnet baru, konfigurasi kolom berikut, lalu klik Done:
      • Name: lb-subnet
      • Region: us-central1
      • Jenis stack IP: IPv4 dan 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 memberikan blok CIDR IPv6 dengan ukuran tetap (/64).
      • Jenis akses IPv6: Eksternal
  5. Klik Create.

Untuk mendukung traffic IPv4 saja, 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 Subnet baru, konfigurasi kolom berikut, lalu klik Done:
      • Name: lb-subnet
      • Region: us-central1
      • Jenis stack IP: IPv4 (stack tunggal)
      • 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 stack ganda:

    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 menurut zona

Untuk skenario load balancing ini, Anda harus membuat dua grup instance Compute Engine yang dikelola sesuai zona dan menginstal server web Apache pada setiap instance.

Untuk menangani traffic IPv4 dan IPv6, konfigurasikan VM backend menjadi dual-stack. 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, perbarui VM menjadi dual stack dengan 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 pada port 80

Konsol

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

    Buka Instance templates

    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 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Networking, disks, security, management, sole tenancy.
    5. Klik Management dan 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. Klik Networking.

      1. Untuk Tag jaringan, tambahkan network-lb-tcp-80.
      2. Untuk Network interfaces, klik antarmuka default, lalu konfigurasikan kolom berikut:
        1. Jaringan: lb-network
        2. Subjaringan: lb-subnet
    7. Klik Create.

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

    Buka Instance groups

    1. Klik Create grup instance.
    2. Pilih New managed instance group (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan ig-us-tcp-80.
    4. Di bagian Location, pilih Single zone.
    5. Untuk Region, pilih us-central1.
    6. Untuk Zone, pilih us-central1-a.
    7. Pada 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 Autoscaling:

      • 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 yang menginstal bash.

  1. Buat template instance VM dengan server HTTP menggunakan 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-10 \
    --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-10 \
    --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 tersebut 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 TCP pada traffic port 8080, UDP, ESP, dan ICMP

Konsol

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

    Buka Instance templates

    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 10 (buster). Petunjuk ini menggunakan perintah yang hanya tersedia di Debian, seperti apt-get.
    4. Klik Networking, disks, security, management, sole tenancy.
    5. Klik Management dan 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. Klik Networking.

      1. Untuk Tag jaringan, tambahkan network-lb-l3-default.
      2. Untuk Network interfaces, klik antarmuka default, lalu konfigurasikan kolom berikut:
        1. Jaringan: lb-network
        2. Subjaringan: lb-subnet
    7. Klik Create.

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

    Buka Instance groups

    1. Klik Create grup instance.
    2. Pilih Grup instance terkelola baru (stateless). Untuk mengetahui informasi selengkapnya, lihat MIG stateless atau stateful.
    3. Untuk Name, masukkan ig-us-l3-default.
    4. Di bagian Location, pilih Single zone.
    5. Untuk Region, pilih us-central1.
    6. Untuk Zone, pilih us-central1-c.
    7. Pada 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 Autoscaling:

      • 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 yang menginstal bash.

  1. Buat template instance VM dengan server HTTP menggunakan 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-10 \
    --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-10 \
    --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 tersebut 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 pada 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 di 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 memungkinkan traffic dari semua rentang sumber menjangkau instance backend Anda pada port yang dikonfigurasi. Jika Anda ingin membuat aturan firewall terpisah khusus untuk pemeriksaan health check, gunakan rentang alamat IP sumber yang didokumentasikan dalam Ringkasan health check: Rentang IP pemeriksaan dan aturan firewall.

Konsol

  1. Pada konsol Google Cloud, buka halaman Kebijakan Firewall.
    Buka kebijakan Firewall
  2. Agar traffic TCP IPv4 dapat 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 Target tags, masukkan network-lb-tcp-80.
    6. Tetapkan Filter sumber ke rentang IPv4.
    7. Tetapkan Source IPv4 ranges ke 0.0.0.0/0, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports. Kemudian, centang kotak TCP dan masukkan 80.
    9. Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
  3. Agar traffic UDP, ESP, dan ICMP IPv4 dapat 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 Target tags, masukkan network-lb-l3-default.
    6. Tetapkan Filter sumber ke rentang IPv4.
    7. Tetapkan Source IPv4 ranges ke 0.0.0.0/0, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports.
      1. Centang kotak TCP dan masukkan 8080.
      2. Centang kotak UDP.
      3. Pilih kotak centang Other, dan masukkan esp, icmp.
    9. Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
  4. Agar traffic TCP IPv6 dapat 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 Target tags, masukkan network-lb-tcp-80.
    6. Setel Filter sumber ke rentang IPv6.
    7. Tetapkan Source IPv6 ranges ke ::/0, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports. Klik kotak centang di samping TCP dan masukkan 80.
    9. Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.
  5. Agar traffic UDP, ESP, dan ICMPv6 IPv6 dapat menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai 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 Target tags, masukkan network-lb-l3-default.
    6. Setel Filter sumber ke rentang IPv6.
    7. Tetapkan Source IPv6 ranges ke ::/0, yang akan mengizinkan traffic dari sumber mana pun. Hal ini memungkinkan pemeriksaan traffic eksternal dan health check menjangkau instance backend.
    8. Di bagian Protocols and ports, pilih Specified protocols and ports.
      1. Klik kotak centang di samping TCP dan masukkan 8080.
      2. Klik kotak centang di samping UDP.
      3. Klik kotak centang di samping Other dan masukkan esp, 58.
    9. Klik Create. Mungkin perlu waktu beberapa saat bagi Konsol untuk menampilkan aturan firewall baru, atau Anda mungkin harus mengklik Refresh untuk melihat aturan tersebut.

gcloud

  1. Agar traffic TCP IPv4 dapat 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. Agar traffic UDP, ESP, dan ICMP IPv4 dapat menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai 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. Agar traffic TCP IPv6 dapat 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. Agar traffic UDP, ESP, dan ICMPv6 IPv6 dapat menjangkau backend di grup instance ig-us-l3-default, buat aturan firewall berikut. Aturan firewall ini juga memungkinkan pemeriksaan health check TCP mencapai 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 load balancer. Konfigurasi satu load balancer untuk menangani traffic TCP di port 80 dan load balancer lainnya untuk menangani TCP pada traffic port 8080, UDP, ESP, dan ICMP. Kedua load balancer akan menggunakan alamat IP eksternal yang sama dengan aturan penerusannya.

Ketika Anda mengonfigurasi load balancer, instance VM backend Anda akan menerima paket yang ditujukan untuk alamat IP eksternal statis yang dikonfigurasi. 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 pada eth0 atau sebagai loopback pada setiap instance.

Konsol

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 respons 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 pada 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-ipv4 \
          --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 dual-stack dengan rentang subnet IPv6 eksternal.

      gcloud compute forwarding-rules create forwarding-rule-tcp-80-ipv6 \
          --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 pada port 8080, UDP, ESP, dan 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 (TCP pada 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-ipv4 \
          --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 (TCP pada 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 dual-stack dengan rentang subnet IPv6 eksternal.

      gcloud compute forwarding-rules create forwarding-rule-l3-default-ipv6 \
          --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 mengirim traffic ke alamat IP eksternal load balancer dan melihat traffic didistribusikan ke backend instance.

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 IP Address, catat 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-ipv4 \
    --region us-central1

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

gcloud: IPv6

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

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

Contoh ini menggunakan alamat IP yang sama untuk kedua aturan penerusan IPv6, sehingga penggunaan forwarding-rule-l3-default-ipv6 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 mengalami load balancing oleh grup instance ig-us-tcp-80, sementara semua traffic lainnya (TCP di port 8080, UDP, ESP, dan ICMP) ditangani oleh grup instance ig-us-l3-default.

Memverifikasi perilaku dengan permintaan TCP pada port 80

  1. Buat permintaan web (melalui TCP pada 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 ini:

      $ 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 harus berasal dari instance dalam grup instance ig-us-tcp-80 saja.

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

Memverifikasi perilaku dengan permintaan TCP pada port 8080

Buat permintaan web (melalui TCP pada 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 ini:

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

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

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

Memverifikasi perilaku dengan permintaan ICMP

Untuk memverifikasi perilaku dengan traffic ICMP, Anda merekam 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 VM instances

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

  2. Jalankan perintah berikut untuk menggunakan tcpdump guna 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 terbuka.

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

  4. Membuat 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 ini:

    ping6 2001:db8:1:1:1:1:1:1
    
  5. Kembali ke jendela SSH setiap VM yang terbuka dan hentikan perintah perekaman 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 dalam 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 dalam 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)
    

Langkah selanjutnya