Mem-build konektivitas internet untuk VM pribadi

Last reviewed 2024-05-10 UTC

Dokumen ini menjelaskan opsi untuk menghubungkan ke dan dari internet menggunakan resource Compute Engine yang memiliki alamat IP pribadi. Hal ini berguna bagi developer yang membuat layanan Google Cloud dan bagi administrator jaringan lingkungan Google Cloud.

Tutorial ini mengasumsikan bahwa Anda telah memahami deployment VPC, dengan Compute Engine, dan jaringan TCP/IP dasar.

Tujuan

  • Pelajari opsi yang tersedia untuk menghubungkan antara VM pribadi di luar VPC-nya.
  • Buat instance Identity-Aware Proxy (IAP) untuk tunnel TCP yang sesuai untuk layanan interaktif seperti SSH.
  • Buat instance Cloud NAT untuk memungkinkan VM membuat koneksi keluar ke internet.
  • Konfigurasikan load balancer HTTP untuk mendukung koneksi masuk dari internet ke VM Anda.

Biaya

Tutorial ini menggunakan komponen Google Cloud yang dapat ditagih, termasuk:

Gunakan kalkulator harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan. Kami menghitung bahwa total untuk menjalankan tutorial ini kurang dari US$5 per hari.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Pengantar

Alamat IP pribadi memberikan sejumlah keunggulan dibandingkan alamat IP publik (eksternal), termasuk:

  • Mengurangi permukaan serangan. Menghapus alamat IP eksternal dari VM akan mempersulit penyerang untuk menjangkau VM dan mengeksploitasi potensi kerentanan.
  • Lebih fleksibel Memperkenalkan lapisan abstraksi, seperti load balancer atau layanan NAT, memungkinkan pengiriman layanan yang lebih andal dan fleksibel jika dibandingkan dengan alamat IP eksternal statis.

Solusi ini membahas tiga skenario, seperti yang dijelaskan dalam tabel berikut:

Interaktif Mengambil Aktif
Koneksi SSH dimulai dari host jarak jauh secara langsung ke VM menggunakan IAP untuk TCP.

Contoh: Administrasi jarak jauh menggunakan SSH atau RDP

Koneksi dimulai oleh VM ke host eksternal pada internet menggunakan Cloud NAT.

Contoh: Update OS, API eksternal

Koneksi dimulai oleh host jarak jauh ke VM melalui load balancer Google Cloud global.

Contoh: Frontend aplikasi, WordPress

Beberapa lingkungan mungkin hanya melibatkan salah satu skenario ini. Namun, banyak lingkungan memerlukan semua skenario ini, dan didukung sepenuhnya di Google Cloud.

Bagian berikut menjelaskan lingkungan multi-region dengan layanan HTTP di-load balanced yang didukung oleh dua VM di dua region. VM ini menggunakan Cloud NAT untuk komunikasi keluar. Untuk administrasi, VM dapat diakses melalui tunnel SSH melalui IAP.

Diagram berikut memberikan ringkasan ketiga kasus penggunaan dan komponen yang relevan.

Arsitektur solusi menunjukkan alur dari klien melalui load balancer ke instance VM, Cloud NAT untuk akses dari instance ke internet, dan IAP untuk mengizinkan akses SSH langsung dari klien ke instance.

Membuat instance VM

Untuk memulai tutorial, Anda harus membuat total empat instance mesin virtual (VM) dua—instance per region di dua region yang berbeda. Anda memberikan tag yang sama kepada semua instance, yang kemudian digunakan oleh aturan firewall untuk memungkinkan traffic masuk menjangkau instance Anda.

Diagram berikut menunjukkan instance VM dan grup instance yang Anda buat, yang didistribusikan di dua zona.

Arsitektur solusi yang menyoroti empat instance VM di 2 zona.

Skrip startup yang Anda tambahkan ke setiap instance akan menginstal Apache dan membuat halaman beranda yang unik untuk setiap instance.

Prosedur ini mencakup petunjuk untuk menggunakan konsol Google Cloud dan gcloud perintah. Cara termudah untuk menggunakan gcloud perintah adalah dengan menggunakan Cloud Shell.

Konsol

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

    Buka halaman Instance VM.

  2. Klik Create instance.

  3. Setel Nama ke www-1.

  4. Set Zona ke us-central1-b.

  5. Klik Management, Security, Disks, Networking, Sole Tenancy.

  6. Klik Networking dan buat setelan berikut:

    • Untuk traffic HTTP, di kotak Network tags, masukkan http-tag.
    • Di bagian Network Interfaces, klik .
    • Di bagian External IP, pilih None.
  7. Klik Management lalu tetapkan Startup script ke berikut ini:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 1</h1></body></html>' | sudo tee /var/www/html/index.html
    
  8. Klik Buat.

  9. Buat www-2 dengan setelan yang sama, kecuali tetapkan Skrip startup ke berikut:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 2<h1></body></html>' | sudo tee /var/www/html/index.html
    
  10. Buat www-3 dengan setelan yang sama, kecuali set Zona ke europe-west1-b dan tetapkan Startup script ke berikut ini:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 3</h1></body></html>' | sudo tee /var/www/html/index.html
    
  11. Buat www-4 dengan setelan yang sama, kecuali set Zona ke europe-west1-b dan tetapkan Startup script ke berikut ini:

    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo a2ensite default-ssl
    sudo a2enmod ssl
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>server 4</h1></body></html>' | sudo tee /var/www/html/index.html
    

gcloud

  1. Buka Cloud Shell:

    BUKA Cloud Shell

  2. Buat instance bernama www-1 di us-central1-bdengan skrip startup dasar:

    gcloud compute instances create www-1 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-1</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  3. Buat instance bernama www-2 di us-central1-b:

    gcloud compute instances create www-2 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone us-central1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-2</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  4. Buat instance bernama www-3, kali ini di europe-west1-b:

    gcloud compute instances create www-3 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-3</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    
  5. Buat instance bernama www-4, yang ini juga ada di europe-west1-b:

    gcloud compute instances create www-4 \
        --image-family debian-9 \
        --image-project debian-cloud \
        --zone europe-west1-b \
        --tags http-tag \
        --network-interface=no-address \
        --metadata startup-script="#! /bin/bash
    sudo apt-get update
    sudo apt-get install apache2 -y
    sudo service apache2 restart
    echo '<!doctype html><html><body><h1>www-4</h1></body></html>' | tee /var/www/html/index.html
    EOF"
    

Terraform

  1. Buka Cloud Shell:

    BUKA Cloud Shell

  2. clone repositori dari GitHub,

    git clone https://github.com/GoogleCloudPlatform/gce-public-connectivity-terraform

  3. Ubah direktori kerja ke direktori repositori:

    cd iap

  4. Instal Terraform

  5. Ganti [YOUR-ORGANIZATION-NAME] di file scripts/set_env_vars.sh dengan nama organisasi Google Cloud Anda.

  6. Menetapkan variabel lingkungan

    source scripts/set_env_vars.sh

  7. Terapkan konfigurasi Terraform:

    terraform apply

Mengonfigurasi tunnel IAP untuk berinteraksi dengan instance

Untuk login ke instance VM, Anda harus terhubung ke instance menggunakan alat seperti SSH atau RDP. Dalam konfigurasi yang Anda buat dalam tutorial ini, Anda tidak dapat terhubung langsung ke instance. Namun, Anda dapat menggunakan penerusan TCP di IAP, yang memungkinkan akses jarak jauh untuk pola interaktif ini.

Untuk tutorial ini, Anda menggunakan SSH.

Di bagian ini, Anda akan melakukan hal berikut:

  1. Hubungkan ke instance Compute Engine menggunakan tunnel IAP.
  2. Menambahkan pengguna kedua dengan izin tunneling IAP di IAM.

Diagram berikut mengilustrasikan arsitektur yang Anda buat di bagian ini. Area abu-abu akan dibahas di bagian lain tutorial ini.

Arsitektur solusi menunjukkan IAP yang menyediakan akses untuk akses SSH antara klien dan instance.

Batasan IAP

  • Bandwidth: Fitur penerusan TCP IAP tidak ditujukan untuk transfer data secara massal. IAP berhak membatasi kapasitas pengguna yang dianggap menyalahgunakan layanan ini.
  • Durasi koneksi: IAP tidak akan memutuskan koneksi sesi aktif kecuali jika diperlukan untuk pemeliharaan.
  • Protokol: IAP untuk TCP tidak mendukung UDP.

Buat aturan firewall untuk mengizinkan tunneling

Agar dapat terhubung ke instance menggunakan SSH, Anda perlu membuka port yang sesuai pada firewall. Koneksi IAP berasal dari kumpulan alamat IP tertentu (35.235.240.0/20). Oleh sebab itu, Anda dapat membatasi aturan hanya pada rentang CIDR ini.

Konsol

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

    BUKA HALAMAN KEBIJAKAN FIREWALL

  2. Klik Create firewall rule.

  3. Setel Nama ke allow-ssh-from-iap.

  4. Biarkan VPC network sebagai default.

  5. Di bagian Target, pilih Tag target yang ditentukan.

  6. Setel Target tags ke http-tag.

  7. Biarkan Source filter ditetapkan ke IP ranges.

  8. Tetapkan Rentang IP Sumber ke 35.235.240.0/20.

  9. Tetapkan Protokol dan port yang diizinkan ke tcp:22.

  10. Klik Buat.

    Mungkin perlu waktu beberapa saat agar aturan firewall baru dapat ditampilkan di konsol.

gcloud

  • Buat aturan firewall bernama allow-ssh-from-iap:

    gcloud compute firewall-rules create allow-ssh-from-iap \
        --source-ranges 35.235.240.0/20 \
        --target-tags http-tag \
        --allow tcp:22
    

Terraform

  1. Salin file Terraform aturan firewall ke direktori saat ini:

    cp iap/vpc_firewall_rules.tf .

  2. Terapkan konfigurasi Terraform:

    terraform apply

Tunneling pengujian

  • Di Cloud Shell, hubungkan ke instance www-1 menggunakan IAP:

    gcloud compute ssh www-1 \
        --zone us-central1-b \
        --tunnel-through-iap
    

Jika koneksi berhasil, Anda memiliki sesi SSH yang disalurkan melalui IAP langsung ke VM pribadi Anda.

Memberikan akses ke pengguna tambahan

IAP menggunakan peran dan izin project yang sudah ada saat Anda terhubung ke instance VM. Secara default, pemilik instance adalah satu-satunya pengguna yang memiliki peran IAP Secured Tunnel User Jika ingin mengizinkan pengguna lain mengakses VM milik Anda menggunakan tunneling IAP, Anda perlu memberikan peran ini kepada pengguna tersebut.

  1. Di konsol Google Cloud, buka Security > Identity-Aware Proxy:

    Opsi IAP di halaman Keamanan Konsol Google Cloud.

    Jika Anda melihat pesan yang memberi tahu bahwa Anda perlu mengonfigurasi layar izin OAuth, abaikan pesan tersebut; tidak relevan dengan IAP untuk TCP.

  2. Pilih tab SSH and TCP Resources.

  3. Pilih VM yang telah Anda buat:

    Konsol yang menampilkan 4 instance yang dipilih.

  4. Di sisi kanan, klik Tambahkan Utama.

  5. Tambahkan pengguna yang ingin Anda beri izin, pilih peran IAP-secured Tunnel User role, lalu klik Save.

Ringkasan

Kini Anda dapat terhubung ke instance menggunakan SSH untuk mengelola instance atau memecahkan masalahnya.

Banyak aplikasi yang harus membuat koneksi keluar untuk mendownload patch, terhubung dengan partner, atau mendownload resource. Di bagian berikutnya, Anda akan mengonfigurasi Cloud NAT agar VM Anda dapat mencapai resource ini.

Men-deploy Cloud NAT untuk pengambilan

Layanan Cloud NAT memungkinkan instance VM Google Cloud yang tidak memiliki alamat IP eksternal untuk terhubung ke internet. Cloud NAT menerapkan NAT keluar bersamaan dengan rute default agar instance Anda dapat menjangkau internet. Layanan ini tidak menerapkan NAT internal. Host di luar jaringan VPC Anda hanya dapat merespons koneksi yang sudah ada yang dimulai oleh instance Anda; mereka tidak dapat memulai koneksi mereka sendiri ke instance Anda menggunakan Cloud NAT. NAT tidak digunakan untuk traffic dalam Google Cloud.

Cloud NAT adalah resource regional. Anda dapat mengonfigurasinya untuk mengizinkan traffic dari semua rentang alamat IP primer dan sekunder subnet di region, atau Anda dapat mengonfigurasinya hanya untuk beberapa dari rentang tersebut.

Di bagian ini, Anda akan mengonfigurasi gateway Cloud NAT di setiap region yang Anda gunakan sebelumnya. Diagram berikut mengilustrasikan arsitektur yang Anda build di bagian ini. Area abu-abu akan dibahas di bagian lain tutorial ini.

Arsitektur solusi menunjukkan instance Cloud NAT di antara instance dan internet.

Membuat konfigurasi NAT menggunakan Cloud Router

Anda harus membuat instance Cloud Router di region yang sama dengan instance yang perlu menggunakan Cloud NAT. Cloud NAT hanya digunakan untuk menempatkan informasi NAT ke VM; tidak digunakan sebagai bagian dari Cloud NAT yang sebenarnya.

Dengan konfigurasi ini, semua instance di region tersebut dapat menggunakan Cloud NAT untuk semua rentang utama dan alias IP. konfigurasi ini juga otomatis mengalokasikan alamat IP eksternal untuk gateway NAT. Untuk mengetahui opsi lainnya, lihat dokumentasi gcloud compute routers.

Konsol

  1. Buka halaman Cloud NAT:

    BUKA HALAMAN CLOUD NAT

  2. Klik Mulai atau Create Cloud NAT gateway.

  3. Setel Nama gateway ke nat-config.

  4. Tetapkan VPC network ke default.

  5. Setel Wilayah ke us-central1.

  6. Di bagian Cloud Router, pilih Buat new router, lalu lakukan langkah berikut:

    • Setel Nama ke nat-router-us-central1.
    • Klik Buat.
  7. Klik Buat.

  8. Ulangi prosedur, tetapi ganti nilai berikut:

    • Nama: nat-router-europe-west1
    • Region: europe-west1

gcloud

  1. Buat instance Cloud Router di setiap region:

    gcloud compute routers create nat-router-us-central1 \
        --network default \
        --region us-central1
    
    gcloud compute routers create nat-router-europe-west1 \
        --network default \
        --region europe-west1
    
  2. Konfigurasikan router untuk Cloud NAT:

    gcloud compute routers nats create nat-config \
        --router-region us-central1 \
        --router nat-router-us-central1 \
        --nat-all-subnet-ip-ranges \
         --auto-allocate-nat-external-ips
    
    gcloud compute routers nats create nat-config \
        --router-region europe-west1 \
        --router nat-router-europe-west1 \
        --nat-all-subnet-ip-ranges \
        --auto-allocate-nat-external-ips
    

Terraform

  1. Salin file konfigurasi NAT Terraform ke direktori saat ini:

    cp nat/vpc_nat_gateways.tf .

  2. Terapkan konfigurasi Terraform:

    terraform apply

Menguji konfigurasi Cloud NAT

Sekarang Anda dapat menguji apakah Anda dapat membuat permintaan keluar dari instance VM ke internet.

  1. Tunggu hingga 3 menit sampai konfigurasi NAT diterapkan ke VM.
  2. Di Cloud Shell, hubungkan ke instance Anda menggunakan tunnel yang Anda buat:

    gcloud compute ssh www-1 --tunnel-through-iap
    
  3. Saat Anda login ke instance, gunakan perintah curl untuk membuat permintaan keluar:

    curl example.com
    

    Anda akan melihat output berikut:

    <html>
    <head>
    <title>Example Domain</title>
    ...
    ...
    ...
    </head>
    
    <body>
    <div>
        <h1>Example Domain</h1>
        <p>This domain is established to be used for illustrative examples in documents.
            You may use this domain in examples without prior coordination or asking for
            permission.
        </p>
        <p><a href="http://www.iana.org/domains/example">More information...</a></p>
    </div>
    </body>
    </html>
    
    

Jika perintah berhasil, berarti Anda telah memvalidasi bahwa VM Anda dapat terhubung ke internet menggunakan Cloud NAT.

Ringkasan

Kini instance Anda dapat membuat koneksi keluar untuk mendownload patch, terhubung dengan partner, atau mendownload resource.

Di bagian berikutnya, Anda akan menambahkan load balancing ke deployment dan mengonfigurasinya agar klien jarak jauh dapat memulai permintaan ke server Anda.

Membuat layanan HTTP yang di-load balanced untuk penayangan

Menggunakan Cloud Load Balancing untuk aplikasi Anda memiliki banyak keuntungan. Platform ini dapat menyediakan load balancing yang lancar dan skalabel untuk lebih dari satu juta kueri per detik. Layanan ini juga dapat memindahkan overhead SSL dari VM Anda, merutekan kueri ke region terbaik untuk pengguna berdasarkan lokasi dan ketersediaan, serta mendukung protokol modern seperti HTTP/2 dan QUIC.

Untuk tutorial ini, Anda akan memanfaatkan fitur utama lainnya: proxy koneksi IP anycast global. Fitur ini menyediakan satu alamat IP publik yang dihentikan pada edge Google yang didistribusikan secara global. Klien kemudian dapat terhubung ke resource yang dihosting pada alamat IP pribadi di mana saja di Google Cloud. Konfigurasi ini membantu melindungi instance dari serangan DDoS dan serangan langsung. Cloud Armor juga mengaktifkan fitur seperti Google Cloud Armor untuk mendapatkan keamanan yang lebih baik.

Di bagian tutorial ini, Anda akan melakukan hal-hal berikut:

  1. Reset instance VM untuk menginstal server web Apache.
  2. Buat aturan firewall untuk mengizinkan akses dari load balancer.
  3. Alokasikan alamat IPv4 dan IPv6 global untuk load balancer.
  4. Buat grup instance untuk instance Anda.
  5. Mulai kirim traffic ke instance Anda.

Diagram berikut mengilustrasikan arsitektur yang Anda buat di bagian ini. Area abu-abu akan dibahas di bagian lain tutorial ini.

Arsitektur yang menandai 4 instance dalam 2 grup instance.

Reset instance VM

Saat Anda membuat instance VM di awal tutorial ini, instance tersebut tidak memiliki akses ke internet, karena tidak ada alamat IP eksternal yang ditetapkan dan Cloud NAT tidak dikonfigurasi. Oleh karena itu, skrip startup yang menginstal Apache tidak dapat diselesaikan dengan sukses.

Cara termudah untuk menjalankan ulang skrip startup adalah dengan mereset instance tersebut sehingga server web Apache dapat diinstal dan digunakan di bagian berikutnya.

Konsol

  1. Di Konsol Google Cloud, buka halaman Instance VM:

    Buka instance VM

  2. Pilih www-1, www-2, www-3, dan www-4.

  3. Klik tombol Edit di bagian atas halaman.

    Jika Anda tidak melihat tombol Reset, klik More actions, lalu pilih Reset.

  4. Konfirmasi reset empat instance dengan mengklik Reset dalam dialog.

gcloud

  1. Reset keempat instance:

    gcloud compute instances reset www-1 \
        --zone us-central1-b
    
    gcloud compute instances reset www-2 \
        --zone us-central1-b
    
    gcloud compute instances reset www-3 \
        --zone europe-west1-b
    
    gcloud compute instances reset www-4 \
        --zone europe-west1-b
    

Buka firewall

Tugas berikutnya adalah membuat aturan firewall untuk mengizinkan traffic dari load balancing ke instance VM Anda. Aturan ini mengizinkan traffic dari rentang alamat IP Google Cloud yang digunakan oleh load balancer dan health check. Aturan firewall menggunakan tag http-tag yang Anda buat sebelumnya; aturan firewall mengizinkan traffic ke port yang ditetapkan untuk menjangkau instance yang memiliki tag.

Konsol

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

    BUKA HALAMAN KEBIJAKAN FIREWALL

  2. Klik Create firewall rule.

  3. Setel Nama ke allow-lb-and-healthcheck.

  4. Biarkan VPC network sebagai default.

  5. Di bagian Target, pilih Tag target yang ditentukan.

  6. Setel Target tags ke http-tag.

  7. Biarkan Source filter ditetapkan ke IP ranges.

  8. Tetapkan Rentang IP Sumber ke 130.211.0.0/22 dan 35.191.0.0/16.

  9. Tetapkan Protokol dan port yang diizinkan ke tcp:80.

  10. Klik Buat.

    Mungkin perlu waktu beberapa saat agar aturan firewall baru dapat ditampilkan di konsol.

gcloud

  • Buat aturan firewall bernama allow-lb-and-healthcheck:

    gcloud compute firewall-rules create allow-lb-and-healthcheck \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --target-tags http-tag \
         --allow tcp:80
    

Terraform

  1. Salin file konfigurasi load-balancing Terraform ke direktori saat ini:

    cp lb/* .

  2. Terapkan konfigurasi Terraform:

    terraform apply

Mengalokasikan alamat IP eksternal untuk load balancer

Jika menyalurkan traffic ke internet, Anda perlu mengalokasikan alamat eksternal untuk load balancer. Anda dapat mengalokasikan alamat IPv4, alamat IPv6, atau keduanya. Di bagian ini, Anda mencadangkan alamat IPv4 dan IPv6 statis yang sesuai untuk ditambahkan ke DNS.

Alamat IP publik tidak dikenai biaya tambahan karena digunakan dengan load balancer.

Konsol

  1. Di konsol Google Cloud, buka halaman External IP addresses:

    BUKA HALAMAN ALAMAT IP EKSTERNAL

  2. Klik Reserve static address untuk memesan alamat IPv4.

  3. Setel Nama ke lb-ip-cr.

  4. Biarkan Type ditetapkan ke Global.

  5. Klik Reserve.

  6. Klik Reserve static address lagi untuk memesan alamat IPv6.

  7. Setel Nama ke lb-ipv6-cr.

  8. Tetapkan IP version ke IPv6.

  9. Biarkan Type ditetapkan ke Global.

  10. Klik Reserve.

gcloud

  1. Buat alamat IP statis bernama lb-ip-cr untuk IPv4:

    gcloud compute addresses create lb-ip-cr \
        --ip-version=IPV4 \
        --global
    
  2. Buat alamat IP statis bernama lb-ipv6-cr untuk IPv6:

    gcloud compute addresses create lb-ipv6-cr \
        --ip-version=IPV6 \
        --global
    

Membuat grup instance dan menambahkan instance

Load balancer Google Cloud memerlukan grup instance untuk bertindak sebagai backend untuk traffic. Dalam tutorial ini, Anda akan menggunakan grup instance yang tidak dikelola agar lebih praktis. Namun, Anda juga dapat menggunakan grup instance terkelola untuk memanfaatkan fitur seperti penskalaan otomatis, autohealing, deployment regional (multi-zona), dan update otomatis.

Di bagian ini, Anda akan membuat grup instance untuk setiap zona yang Anda gunakan.

Konsol

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

    BUKA HALAMAN GRUP INSTANCE

  2. Klik Buat grup instance.

  3. Di sebelah kiri, klik Grup instance tidak terkelola baru.

  4. Setel Nama ke us-resources-w.

  5. Setel Wilayah ke us-central1

  6. Setel Zona ke us-central1-b.

  7. Pilih Network (default) dan Subnetwork (default).

  8. Di bagian VM instances, lakukan hal berikut:

    • Klik Tambahkan instance, lalu pilih www-1.
    • Klik Tambahkan instance lagi, lalu pilih www-2.
    • Klik Buat.
  9. Ulangi prosedur ini untuk membuat grup instance kedua, tetapi gunakan nilai berikut:

    • Nama: europe-resources-w
    • Zone: europe-west1-b
    • Instance: www-3 dan www-4
  10. Di halaman Instance groups, pastikan Anda memiliki dua grup instance, masing-masing dengan dua instance.

gcloud

  1. Buat grup instance us-resources-w:

    gcloud compute instance-groups unmanaged create us-resources-w \
        --zone us-central1-b
    
  2. Tambahkan instance www-1 dan www-2:

    gcloud compute instance-groups unmanaged add-instances us-resources-w \
        --instances www-1,www-2 \
        --zone us-central1-b
    
  3. Buat grup instance europe-resources-w:

    gcloud compute instance-groups unmanaged create europe-resources-w \
        --zone europe-west1-b
    
  4. Tambahkan instance www-3 dan www-4:

    gcloud compute instance-groups unmanaged add-instances europe-resources-w \
        --instances www-3,www-4 \
        --zone europe-west1-b
    

Mengonfigurasi layanan load balancing

Fungsi load balancer melibatkan beberapa layanan yang terhubung. Di bagian ini, Anda akan menyiapkan dan menghubungkan layanan. Layanan yang akan Anda buat adalah sebagai berikut:

  • Port bernama, yang digunakan load balancer untuk mengarahkan traffic ke grup instance Anda.
  • A health check, yang melakukan polling pada instance Anda untuk melihat apakah instance tersebut responsif atau tidak. Load balancer hanya mengirim traffic ke instance yang responsif.
  • Layanan backend, yang memantau penggunaan dan kondisi instance. Layanan backend mengetahui apakah instance dalam grup instance dapat menerima traffic. Jika instance tidak dapat menerima traffic, load balancer akan mengalihkan traffic, asalkan instance di tempat lain memiliki kapasitas yang cukup. Backend menentukan kapasitas grup instance yang ada di dalamnya (penggunaan CPU maksimum atau kueri maksimum per detik).
  • A Peta URL, yang mengurai URL permintaan dan dapat meneruskan permintaan ke layanan backend tertentu berdasarkan host dan jalur URL permintaan. Dalam tutorial ini, karena Anda tidak menggunakan penerusan berbasis konten, peta URL hanya berisi pemetaan default.
  • A Proxy target, yang menerima permintaan dari pengguna dan meneruskannya ke peta URL.
  • Dua aturan penerusan global, masing-masing untuk IPv4 dan IPv6, yang menyimpan resource alamat IP eksternal global. Aturan penerusan global meneruskan permintaan masuk ke proxy target.

Membuat load balancer

Di bagian ini, Anda akan membuat load balancer dan mengonfigurasi layanan backend default untuk menangani traffic Anda. Anda juga akan membuat health check.

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 Application Load Balancer (HTTP/HTTPS), lalu klik Next.
  4. Untuk Public facing or internal, pilih Public facing (external), lalu klik Next.
  5. Untuk Global or single region deployment, pilih Best for global workloads, lalu klik Next.
  6. Untuk Load balancer generation, pilih Global external Application Load Balancer, lalu klik Next.
  7. Klik Konfigurasikan.

Konfigurasi dasar

  1. Tetapkan Load balancer name ke web-map.

Mengonfigurasi load balancer

  1. Di panel kiri halaman Create global external Application Load Balancer, klik Backend configuration.
  2. Dalam daftar Buat atau pilih backend services & backend buckets pilih, Backend services, lalu Create backend service. Anda akan melihat kotak dialog Create Backend Service.
  3. Setel Nama ke web-map-backend-service.
  4. Tetapkan Protokol. Untuk protokol HTTP, biarkan nilai ditetapkan ke default.
  5. Untuk Backend type, pilih Instance Groups.
  6. Di bagian Backends, tetapkan Instance group ke us-resources-w.
  7. Klik Add backend.
  8. Pilih grup instance europe-resources-w, lalu lakukan hal berikut:
    • Untuk traffic HTTP antara load balancer dan instance, pastikan Port numbers disetel ke 80.
    • Biarkan nilai default untuk kolom lainnya.
  9. Klik Done.
  10. Di bagian Health check, pilih Create a health check atau Create another health check.
  11. Tetapkan parameter health check berikut:
    • Nama: http-basic-check
    • Protokol: HTTP
    • Port: 80
  12. Klik Buat.

gcloud

  1. Untuk setiap grup instance, tentukan layanan HTTP dan petakan nama port ke port yang relevan:

    gcloud compute instance-groups unmanaged set-named-ports us-resources-w \
        --named-ports http:80 \
        --zone us-central1-b
    
    gcloud compute instance-groups unmanaged set-named-ports europe-resources-w \
        --named-ports http:80 \
        --zone europe-west1-b
    
  2. Membuat health check:

    gcloud compute health-checks create http http-basic-check \
        --port 80
    
  3. Buat layanan backend:

    gcloud compute backend-services create web-map-backend-service \
        --protocol HTTP \
        --health-checks http-basic-check \
        --global
    

    Anda menetapkan --protocol tanda HTTP karena menggunakan HTTP untuk membuka instance. Untuk health check, Anda menggunakan http-basic-check health check yang Anda buat sebelumnya.

  4. Tambahkan grup instance sebagai backend ke layanan backend:

    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group us-resources-w \
        --instance-group-zone us-central1-b \
        --global
    
    gcloud compute backend-services add-backend web-map-backend-service \
        --balancing-mode UTILIZATION \
        --max-utilization 0.8 \
        --capacity-scaler 1 \
        --instance-group europe-resources-w \
        --instance-group-zone europe-west1-b \
        --global
    

Tetapkan aturan host dan jalur

Konsol

  • Di panel kiri halaman Create global external Application Load Balancer klik Host and path rules.

    Untuk tutorial ini, Anda tidak perlu mengonfigurasi aturan host atau jalur apa pun, karena semua traffic akan mengarah ke aturan default. Oleh karena itu, Anda dapat menerima nilai default yang telah diisi sebelumnya.

gcloud

  1. Buat peta URL default yang mengarahkan semua permintaan masuk ke semua instance Anda:

    gcloud compute url-maps create web-map \
        --default-service web-map-backend-service
    
  2. Buat proxy HTTP target untuk mengarahkan permintaan ke peta URL:

    gcloud compute target-http-proxies create http-lb-proxy \
        --url-map web-map
    

Mengonfigurasi frontend dan menyelesaikan penyiapan

Konsol

  1. Di panel kiri halaman Create global external Application Load Balancer, klik Frontend configuration.
  2. Tetapkan Nama ke http-cr-rule.
  3. Tetapkan Protokol ke HTTP.
  4. Tetapkan Versi IP ke IPv4.
  5. Dalam daftar IP address, pilih lb-ip-cr, alamat yang telah Anda buat sebelumnya.
  6. Pastikan Port telah disetel ke 80.
  7. Klik Done.
  8. Klik Add Frontend IP and Port.
  9. Tetapkan Nama ke http-cr-ipv6-rule.
  10. Untuk Protocol, pilih HTTP.
  11. Tetapkam Versi IP ke IPv6.
  12. Dalam daftar IP address, pilih lb-ipv6-cr, alamat lain yang Anda buat sebelumnya.
  13. Pastikan Port telah disetel ke 80.
  14. Klik Buat.
  15. Klik Done.
  16. Di panel kiri halaman Create global external Application Load Balancer klik Review and finalize.
  17. Bandingkan setelan Anda dengan yang ingin Anda buat.
  18. Jika setelan sudah benar, klik Create.

    Anda akan kembali ke halaman Load Balancing. Setelah load balancing dibuat, tanda centang hijau di sampingnya menunjukkan bahwa load balancer sedang berjalan.

gcloud

  1. Dapatkan alamat IP statis yang Anda buat untuk load balancer. Catat email tersebut, karena Anda akan menggunakan pada langkah berikutnya.

    gcloud compute addresses list
    
  2. Buat dua aturan penerusan global untuk mengarahkan permintaan masuk ke proxy, satu untuk IPv4 dan satu untuk IPv6. Ganti lb_ip_address dalam perintah dengan alamat IPv4 statis yang Anda buat, dan ganti lb_ipv6_address dengan alamat IPv6 yang Anda buat.

    gcloud compute forwarding-rules create http-cr-rule \
        --address lb_ip_address \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80
    
    gcloud compute forwarding-rules create http-cr-ipv6-rule \
        --address lb_ipv6_address \
        --global \
        --target-http-proxy http-lb-proxy \
       --ports 80
    

    Setelah membuat aturan penerusan global, diperlukan waktu beberapa menit untuk menerapkan konfigurasi Anda.

Menguji konfigurasi

Di bagian ini, Anda akan mengirim permintaan HTTP ke instance untuk memverifikasi bahwa konfigurasi load-balancing berfungsi.

Konsol

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

    BUKA HALAMAN LOAD BALANCING

  2. Pilih load balancer bernama web-map untuk melihat detail tentang load balancer yang baru saja Anda buat.

  3. Di bagian Backend pada halaman, konfirmasi bahwa instance bersifat responsif dengan melihat kolom Healthy.

    Diperlukan waktu beberapa saat hingga tampilan menunjukkan bahwa instance tersebut responsif.

  4. Setelah layar menunjukkan bahwa instance responsif, salin nilai IP:Port dari bagian Frontend, lalu tempelkan ke browser Anda.

    Di browser, Anda akan melihat halaman konten default.

gcloud

  1. Dapatkan alamat IP dari aturan penerusan global Anda, dan catatlah untuk langkah selanjutnya:

    gcloud compute forwarding-rules list
    
  2. Gunakan perintah curl guna menguji respons berbagai URL untuk layanan Anda. Coba IPv4 dan IPv6. Untuk IPv6, Anda harus menempatkan [] di sekitar alamat, seperti http://[2001:DB8::]/.

    curl http://ipv4-address
    
    curl -g -6 "http://[ipv6-address]/"
    

Ringkasan

VM Anda kini dapat menyalurkan traffic ke internet dan dapat mengambil data dari internet. Anda juga dapat mengaksesnya menggunakan SSH untuk melakukan tugas administrasi. Semua fungsi ini dicapai hanya dengan menggunakan alamat IP pribadi, yang membantu melindunginya dari serangan langsung dengan tidak mengekspos alamat IP yang dapat dijangkau dari internet.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Langkah selanjutnya