Membuat layanan yang di-load balance

Tutorial ini menunjukkan cara Anda, sebagai produsen layanan, membuat layanan sederhana yang menggunakan Load Balancer Jaringan passthrough internal. Secara default, Load Balancer Jaringan passthrough internal hanya tersedia dari dalam jaringan VPC yang menghostingnya.

Tutorial ini ditujukan untuk arsitek cloud, arsitek jaringan, administrator jaringan, dan administrator IT.

Tujuan

  • Mengonfigurasi jaringan untuk resource produsen layanan
  • Buat resource VM untuk backend load balancer
  • Mengonfigurasi komponen load balancer
  • Menguji akses ke load balancer

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih sebagai berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.

Sebelum memulai

  1. Buat atau pilih project yang akan digunakan untuk resource produsen layanan. Project ini disebut dalam tutorial selanjutnya sebagai PRODUCER_PROJECT
    1. In the Google Cloud console, go to the project selector page.

      Go to project selector

    2. Select or create a Google Cloud project.

      Roles required to select or create a project

      • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
      • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
  2. Enable the Compute Engine API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  3. Make sure that you have the following role or roles on the project: Compute Engine > Compute Network Admin, Compute Engine > Compute Security Admin, Compute Engine > Compute Instance Admin

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the project.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role column to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      Buka IAM
    2. Pilih project.
    3. Klik Grant access.
    4. Di kolom New principals, masukkan ID pengguna Anda. Biasanya, ini adalah alamat email untuk Akun Google.

    5. Klik Pilih peran, lalu telusuri peran.
    6. Untuk memberikan peran tambahan, klik Add another role, lalu tambahkan tiap peran tambahan.
    7. Klik Simpan.

Mengonfigurasi jaringan

Bagian berikut menjelaskan cara membuat jaringan, subnet, dan aturan firewall untuk layanan.

Mengonfigurasi jaringan dan subnet

Untuk membuat jaringan dan subnet layanan bagi load balancer, selesaikan langkah-langkah di bagian berikut.

Konsol

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

    Buka VPC networks

  2. Klik Create VPC network.

  3. Untuk Name, masukkan service-network.

  4. Untuk Mode pembuatan subnet, klik Kustom.

  5. Di bagian New subnet, masukkan informasi berikut.

    1. Untuk Name, masukkan service-subnet.
    2. Untuk Region, pilih region yang ingin Anda gunakan.
    3. Untuk IP stack type, pilih IPv4 (single-stack).
    4. Untuk IPv4 range, masukkan 10.10.10.0/24.
    5. Klik Done.
  6. Klik Create.

gcloud

  1. Buat jaringan VPC mode kustom:

    gcloud compute networks create service-network --subnet-mode=custom
    
  2. Di jaringan service-network, buat subnet.

    gcloud compute networks subnets create service-subnet \
        --network=service-network \
        --range=10.10.10.0/24 \
        --region=REGION
    

    Ganti REGION dengan region yang ingin Anda gunakan.

Mengonfigurasi aturan firewall

Buat aturan firewall untuk mengizinkan traffic berikut:

  • fw-allow-subnet: memungkinkan traffic dari 10.10.10.0/24 menjangkau resource lain di 10.10.10.0/24.
  • fw-allow-ssh: memungkinkan traffic SSH dari 0.0.0.0/0 menjangkau VM yang memiliki tag jaringan allow-ssh.
  • fw-allow-healthcheck: memungkinkan traffic dari sistem health check Google Cloud mencapai VM yang memiliki tag jaringan allow-healthcheck.

Konsol

  1. Di konsol Google Cloud , buka halaman Firewall policies.

    Buka Kebijakan firewall

  2. Untuk mengizinkan traffic subnet, klik Create firewall rule dan gunakan setelan berikut:

    • Untuk Name, masukkan fw-allow-subnet.
    • Untuk Network, pilih service-network.
    • Untuk Priority, masukkan 1000.
    • Untuk Direction of traffic, pilih Ingress.
    • Untuk Action on match, pilih Allow.
    • Untuk Target, klik All instances in the network.
    • Untuk Source filter, pilih IPv4 ranges.
    • Untuk Source IPv4 ranges, masukkan 10.10.10.0/24.
    • Untuk Protocols and ports, pilih Allow all.
  3. Klik Create.

  4. Untuk mengizinkan koneksi SSH yang masuk, klik Create firewall rule dan gunakan setelan berikut:

    • Untuk Name, masukkan fw-allow-ssh.
    • Untuk Network, pilih service-network.
    • Untuk Priority, masukkan 1000.
    • Untuk Direction of traffic, pilih Ingress.
    • Untuk Action on match, pilih Allow.
    • Untuk Target, pilih Tag target yang ditentukan.
    • Untuk Target tags, masukkan allow-ssh.
    • Untuk Source filter, pilih IPv4 ranges.
    • Untuk Source IPv4 ranges, masukkan 0.0.0.0/0.
    • Untuk Protocols and ports, pilih Specified protocols and ports, lalu pilih kotak centang TCP. Untuk Ports, masukkan 22.
  5. Klik Create.

  6. Untuk mengizinkan Google Cloud health check, klik Create firewall rule dan gunakan setelan berikut:

    • Untuk Name, masukkan fw-allow-healthcheck.
    • Untuk Network, pilih service-network.
    • Untuk Priority, masukkan 1000.
    • Untuk Direction of traffic, pilih Ingress.
    • Untuk Action on match, pilih Allow.
    • Untuk Target, pilih Tag target yang ditentukan.
    • Untuk Target tags, masukkan allow-healthcheck.
    • Untuk Source filter, pilih IPv4 ranges.
    • Untuk Source IPv4 ranges, masukkan 130.211.0.0/22 dan 35.191.0.0/16.
    • Untuk Protocols and ports, pilih Allow all.
  7. Klik Create.

gcloud

  1. Buat aturan firewall fw-allow-subnet untuk mengizinkan komunikasi dari dalam subnet:

    gcloud compute firewall-rules create fw-allow-subnet \
        --network=service-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=10.10.10.0/24 \
        --rules=tcp,udp,icmp
    

  1. Buat aturan firewall fw-allow-ssh untuk mengizinkan konektivitas SSH ke VM dengan tag jaringan allow-ssh.

    gcloud compute firewall-rules create fw-allow-ssh \
        --network=service-network \
        --action=allow \
        --direction=ingress \
        --source-ranges=0.0.0.0/0 \
        --target-tags=allow-ssh \
        --rules=tcp:22
    

  1. Buat aturan fw-allow-healthcheck untuk mengizinkan health check Google Cloud.

    gcloud compute firewall-rules create fw-allow-healthcheck \
        --network=service-network \
        --action=allow \
        --direction=ingress \
        --target-tags=allow-healthcheck \
        --source-ranges=130.211.0.0/22,35.191.0.0/16 \
        --rules=tcp,udp,icmp
    

Buat resource VM untuk backend load balancer

Buat VM dan grup instance untuk digunakan dengan load balancer.

Membuat VM backend

Layanan yang Anda buat berjalan di dua VM untuk ketersediaan yang lebih tinggi: vm-1 dan vm-2. VM berada di zona yang sama, tetapi di lingkungan produksi, sebaiknya gunakan beberapa zona.

Selain membuat VM, langkah-langkah berikut akan melakukan hal-hal berikut:

Konsol

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Klik Create instance.

  3. Untuk Name, masukkan vm-1.

  4. Untuk Region dan Zone, pilih region dan zona di dalam region tersebut.

  5. Di menu navigasi, buka OS dan penyimpanan.

  6. Di panel Operating system and storage, pastikan Debian GNU/Linux 12 (bookworm) dipilih untuk boot disk. Jika Anda perlu memilih gambar lain, klik Ubah.

  7. Di menu navigasi, buka Networking.

  8. Untuk Network tags, masukkan allow-ssh, allow-healthcheck, dan allow-nat.

  9. Untuk Network interfaces, pilih berikut ini:

    • Untuk Network, pilih service-network.
    • Untuk Subnet, pilih service-subnet.
    • Untuk IP stack type, pilih IPv4 (single-stack).
    • Untuk Primary internal IPv4 address, pilih Ephemeral (automatic).
    • Untuk External IPv4 address, pilih Ephemeral.
  10. Di menu navigasi, buka Lanjutan.

  11. Di bagian Automation, di kolom Startup script, masukkan skrip berikut.

    
    #! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed
    

  12. Klik Create.

  13. Ulangi langkah-langkah ini untuk membuat VM lain bernama vm-2 di region dan zona yang sama dengan vm-1.

gcloud

  1. Buat dua VM dengan menjalankan perintah berikut:

    gcloud compute instances create vm-1 \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-healthcheck,allow-nat \
        --subnet=service-subnet \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    
    gcloud compute instances create vm-2 \
        --zone=ZONE \
        --image-family=debian-12 \
        --image-project=debian-cloud \
        --tags=allow-ssh,allow-healthcheck,allow-nati \
        --subnet=service-subnet \
        --metadata=startup-script='#! /bin/bash
    if [ -f /etc/startup_script_completed ]; then
    exit 0
    fi
    apt-get update
    apt-get install apache2 -y
    a2ensite default-ssl
    a2enmod ssl
    file_ports="/etc/apache2/ports.conf"
    file_http_site="/etc/apache2/sites-available/000-default.conf"
    file_https_site="/etc/apache2/sites-available/default-ssl.conf"
    http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088"
    http_vh_prts="*:80 *:8008 *:8080 *:8088"
    https_listen_prts="Listen 443\nListen 8443"
    https_vh_prts="*:443 *:8443"
    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
    prt_conf="$(cat "$file_ports")"
    prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")"
    prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")"
    echo "$prt_conf" | tee "$file_ports"
    http_site_conf="$(cat "$file_http_site")"
    http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")"
    echo "$http_site_conf_2" | tee "$file_http_site"
    https_site_conf="$(cat "$file_https_site")"
    https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")"
    echo "$https_site_conf_2" | tee "$file_https_site"
    systemctl restart apache2
    touch /etc/startup_script_completed'
    

    Ganti ZONE dengan zona yang ingin Anda gunakan.

Membuat grup instance

Untuk menggunakan VM di backend load balancer, Anda harus menambahkan VM ke grup instance.

Konsol

  1. Di konsol Google Cloud , buka halaman Instance groups.

    Buka Instance groups

  2. Klik Create instance group.

  3. Di panel navigasi, klik New unmanaged instance group.

  4. Untuk Name, masukkan ig-1.

  5. Di bagian Location, pilih region dan zona yang sama dengan VM Anda.

  6. Untuk Network, pilih service-network.

  7. Untuk Subnetwork, pilih service-subnet.

  8. Di bagian VM instances, tambahkan vm-1 dan vm-2 ke grup instance.

  9. Klik Create.

gcloud

  1. Buat grup instance tidak terkelola:

    gcloud compute instance-groups unmanaged create ig-1 \
        --zone=ZONE
    

    Ganti ZONE dengan zona yang berisi VM.

  2. Tambahkan VM ke grup instance:

    gcloud compute instance-groups unmanaged add-instances ig-1 \
        --zone=ZONE \
        --instances=vm-1,vm-2
    

Mengonfigurasi komponen load balancer

Konfigurasi semua komponen Load Balancer Jaringan passthrough internal, mulai dari health check dan layanan backend, lalu komponen frontend:

  • Health check. Anda menggunakan health check HTTP yang memeriksa kode status HTTP 200 OK.

  • Layanan backend. Karena Anda perlu meneruskan traffic HTTP melalui load balancer internal, Anda harus menggunakan TCP, bukan UDP.

  • Aturan penerusan. Anda membuat satu aturan penerusan internal, service-rule.

  • Alamat IP internal. Anda menentukan alamat IP internal, 10.10.10.99, saat membuat aturan penerusan.

Konsol

Mulai 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 Internal, lalu klik Next.
  6. Klik Configure.

Konfigurasi dasar

Di halaman Buat Load Balancer Jaringan passthrough internal, masukkan informasi berikut:

  • Untuk Load balancer name, masukkan service-lb.
  • Untuk Region, pilih region yang sama dengan VM Anda.
  • Untuk Network, pilih service-network.

Mengonfigurasi backend

  1. Klik Backend configuration.
  2. Di daftar Health check, klik Create a health check, lalu masukkan informasi berikut:
    • Untuk Name:, masukkan hc-http-80.
    • Untuk Protocol:, pilih HTTP.
    • Untuk Port:, masukkan 80.
    • Untuk Proxy protocol:, pilih NONE.
    • Untuk Jalur permintaan:, masukkan /.
  3. Klik Create.
  4. Di bagian New Backend pada Backends, pilih IPv4 (single-stack).
  5. Di Instance group, pilih grup instance ig-1, lalu klik Done.
  6. Pastikan terdapat tanda centang biru di samping Backend configuration sebelum melanjutkan.

Mengonfigurasi frontend

  1. Klik Frontend configuration.
  2. Di bagian New Frontend IP and port, lakukan langkah berikut:
    1. Untuk Name, masukkan service-rule.
    2. Untuk Subnetwork, pilih service-subnet.
    3. Di bagian Internal IP purpose, dalam daftar IP address, pilih Create IP address, masukkan informasi berikut:
      • Untuk Name, masukkan service-rule-ip.
      • Untuk IP version, pilih IPv4.
      • Untuk Static IP address, pilih Let me choose.
      • Untuk Custom IP address, masukkan 10.10.10.99.
    4. Klik Reserve.
    5. Untuk Ports, pilih Single, lalu di Port numbers, masukkan 80.
    6. Klik Done.
    7. Pastikan terdapat tanda centang biru di samping Frontend configuration sebelum melanjutkan.

Meninjau konfigurasi

  1. Klik Review and finalize.
  2. Tinjau setelan konfigurasi load balancer Anda.
  3. Klik Create.

gcloud

  1. Buat health check HTTP regional baru untuk menguji konektivitas HTTP ke VM di port 80.

    gcloud compute health-checks create http hc-http-80 \
        --region=REGION \
        --port=80
    

    Ganti REGION dengan region yang sama dengan VM backend.

  2. Buat layanan backend untuk traffic HTTP:

    gcloud compute backend-services create service-lb \
        --load-balancing-scheme=internal \
        --protocol=tcp \
        --region=REGION \
        --health-checks=hc-http-80 \
        --health-checks-region=REGION
    

    Ganti REGION dengan region yang sama dengan VM backend.

  3. Tambahkan grup instance ke layanan backend:

    gcloud compute backend-services add-backend service-lb \
        --region=REGION \
        --instance-group=ig-1 \
        --instance-group-zone=ZONE
    

    Ganti kode berikut:

    • REGION: region yang sama dengan VM backend.
    • ZONE: zona yang sama dengan VM backend.
  4. Buat aturan penerusan untuk layanan backend:

    gcloud compute forwarding-rules create service-rule \
        --region=REGION \
        --load-balancing-scheme=internal \
        --network=service-network \
        --subnet=service-subnet \
        --address=10.10.10.99 \
        --ip-protocol=TCP \
        --ports=80 \
        --backend-service=service-lb \
        --backend-service-region=REGION
    

    Ganti REGION dengan region yang sama dengan VM backend.

Menguji akses ke load balancer

Untuk menguji apakah load balancer berfungsi, buat VM pengujian dan kirim permintaan dari VM tersebut ke load balancer.

Membuat VM klien untuk pengujian

Buat VM klien di region yang sama dengan VM backend (server).

Konsol

  1. Di konsol Google Cloud , buka halaman VM instances.

    Buka instance VM

  2. Klik Create instance.

  3. Untuk Name, masukkan producer-test.

  4. Untuk Region, pilih region yang sama dengan VM backend.

  5. Untuk Zone, pilih zona di region tersebut.

  6. Klik Networking dan konfigurasi kolom berikut:

    1. Untuk Network tags, masukkan allow-ssh.
    2. Untuk Network interfaces, pilih opsi berikut:
      • Untuk Network, pilih service-network
      • Untuk Subnet, pilih service-subnet
  7. Klik Create.

gcloud

gcloud compute instances create producer-test \
    --zone=ZONE \
    --image-family=debian-12 \
    --image-project=debian-cloud \
    --tags=allow-ssh \
    --subnet=service-subnet

Ganti ZONE dengan zona yang berada di region yang sama dengan VM backend.

Menguji konektivitas

Pengujian ini menghubungi load balancer dari VM klien. Perilaku yang diharapkan adalah traffic didistribusikan di seluruh VM backend load balancer.

  1. Hubungkan ke instance VM klien.
    gcloud compute ssh producer-test --zone=ZONE
    
    Ganti ZONE dengan zona VM klien.
  2. Buat permintaan web ke load balancer menggunakan curl untuk menghubungi alamat IP-nya. Ulangi permintaan sehingga Anda dapat melihat bahwa respons berasal dari VM backend yang berbeda. Nama VM yang menghasilkan respons ditampilkan dalam teks di respons HTML, karena konten /var/www/html/index.html di setiap VM backend. Misalnya, respons yang diharapkan terlihat seperti Page served from: vm-1 dan Page served from: vm-2.
    curl -s http://10.10.10.99
    

Langkah berikutnya