Panduan ini menggunakan contoh untuk mengajarkan dasar-dasar penggunaan backend eksternal (terkadang disebut asal kustom) dengan Load Balancer Aplikasi eksternal global. Backend eksternal adalah endpoint yang berada di luar Google Cloud. Saat Anda menggunakan backend eksternal dengan Load Balancer Aplikasi eksternal global, Anda dapat meningkatkan performa dengan menggunakan caching Cloud CDN.
Panduan ini menunjukkan cara mengonfigurasi Load Balancer Aplikasi eksternal global dengan layanan backend berkemampuan Cloud CDN yang menjadi proxy permintaan ke server backend eksternal.
Sebelum mengikuti panduan ini, pahami dokumentasi ringkasan NEG Internet, termasuk batasannya.Diagram arsitektur berikut menunjukkan frontend Load Balancer Aplikasi eksternal global dengan backend eksternal.
Izin
Untuk mengikuti panduan ini, Anda perlu membuat NEG internet dan membuat atau mengubah
Load Balancer Aplikasi eksternal dalam sebuah project. Anda harus memiliki peran Pemilik atau Editor project (roles/owner
atau roles/editor
), atau harus memiliki kedua peran IAM Compute Engine berikut.
Tugas | Peran yang diperlukan |
---|---|
Membuat dan mengubah komponen load balancer | Admin Jaringan Compute ( roles/compute.networkAdmin )
|
Membuat dan mengubah NEG | Admin Instance Compute ( roles/compute.instanceAdmin )
|
Menyiapkan lingkungan backend eksternal di luar Google Cloud
Untuk menyiapkan lingkungan Anda, lihat bagian berikut.
Mengonfigurasi endpoint jaringan
Konfigurasikan endpoint jaringan untuk mengekspos backend eksternal Anda ke Google Cloud. Pastikan endpoint—baik kombinasi IP:Port maupun port dan nama domain yang sepenuhnya memenuhi syarat (FQDN)—dapat dijangkau melalui internet. Endpoint ini kemudian dirujuk dari NEG internet.
Guna mengetahui persyaratan konfigurasi mendetail untuk endpoint NEG internet, lihat Ringkasan NEG Internet.
Izinkan backend eksternal menerima traffic dari Google Cloud
Agar permintaan dari Google Cloud dapat menjangkau backend eksternal, Anda harus mengizinkan rentang alamat IP yang digunakan Google untuk mengirim permintaan ke backend eksternal. Untuk mencari alamat IP yang perlu diizinkan untuk mengirim traffic ke backend eksternal, buat kueri data TXT DNS _cloud-eoips.googleusercontent.com
menggunakan alat seperti dig
atau nslookup
.
Contoh:
Jalankan perintah
nslookup
berikut:nslookup -q=TXT _cloud-eoips.googleusercontent.com 8.8.8.8
Outputnya akan terlihat seperti berikut:
Non-authoritative answer: _cloud-eoips.googleusercontent.com text = "v=spf1 ip4:34.96.0.0/20 ip4:34.127.192.0/18 ~all"
Perhatikan rentang CIDR setelah
ip4:
dan pastikan rentang tersebut diizinkan oleh aturan firewall atau daftar kontrol akses cloud (ACL) yang dikonfigurasi di backend eksternal Anda.Jalankan perintah
dig
berikut:dig TXT _cloud-eoips.googleusercontent.com | grep -Eo 'ip4:[^ ]+' | cut -d':' -f2
Outputnya berisi dua rentang alamat IP, sebagai berikut:
34.96.0.0/20 34.127.192.0/18
Menyiapkan lingkungan Google Cloud
Buat Load Balancer Aplikasi eksternal global dengan backend NEG internet.
Mencadangkan alamat IP eksternal
Cadangkan alamat IP eksternal statis global yang digunakan klien untuk menjangkau aplikasi Anda.
Konsol
Di konsol Google Cloud, buka halaman External IP addresses.
Klik Reserve external static address untuk mencadangkan alamat IPv4.
Masukkan nama.
Untuk Network Service Tier, pilih Premium.
Untuk IP version, pilih IPv4.
Untuk Jenis, pilih Global.
Klik Reserve.
gcloud
gcloud compute addresses create LB_IP_ADDRESS_NAME \ --network-tier=PREMIUM \ --ip-version=IPV4 \ --global
Perhatikan alamat IPv4 yang dicadangkan:
gcloud compute addresses describe LB_IP_ADDRESS_NAME \ --format="get(address)" \ --global
Menyiapkan NEG internet
Konsol
Di Konsol Google Cloud, buka halaman Network endpoint groups.
Klik Create network endpoint group.
Masukkan nama.
Untuk Network endpoint group type, pilih Network endpoint group (Internet).
Untuk Default port, masukkan
443
.Untuk New network endpoint, pilih Fully qualified domain name and port.
Masukkan Nama domain yang sepenuhnya memenuhi syarat (FQDN).
Untuk Port type, pilih Default, dan pastikan Port number adalah
443
.Klik Create.
gcloud
Buat NEG internet, dan tetapkan
--network-endpoint-type
keinternet-fqdn-port
(nama host dan port tempat backend eksternal Anda dapat dijangkau):gcloud compute network-endpoint-groups create INTERNET_NEG_NAME \ --network-endpoint-type="internet-fqdn-port" \ --global
Tambahkan endpoint Anda ke NEG. Jika port tidak ditentukan, pemilihan port secara default akan ditetapkan ke port
80
(HTTP) atau443
(HTTPS; HTTP/2) bergantung pada protokol yang dikonfigurasi di layanan backend. Pastikan untuk menyertakan flag--global
:gcloud compute network-endpoint-groups update INTERNET_NEG_NAME \ --add-endpoint="fqdn=FULLY_QUALIFIED_DOMAIN_NAME,port=443" \ --global
Membuat load balancer
Konsol
Memulai konfigurasi Anda
Di Konsol Google Cloud, buka halaman Load balancing.
- Klik Create load balancer.
- Untuk Type of load balancer, pilih Application Load Balancer (HTTP/HTTPS) lalu klik Next.
- Untuk Public facing or internal, pilih Public facing (eksternal), lalu klik Next.
- Untuk Global or single region deployment, pilih Best for global Workload, lalu klik Next.
- Untuk Load balancer Generation, pilih Global external Application Load Balancer, lalu klik Next.
- Klik Konfigurasikan.
Konfigurasi frontend
- Klik Frontend configuration.
- Masukkan nama.
Untuk membuat load balancer HTTPS, Anda harus memiliki sertifikat SSL. Sebaiknya gunakan sertifikat yang dikelola Google.
Pastikan opsi berikut dikonfigurasi dengan nilai tersebut.
Properti Nilai (ketik nilai atau pilih opsi yang ditentukan) Protokol HTTPS Network Service Tier Premium IP version IPv4 Alamat IP Pilih alamat IP yang dibuat pada langkah Reserve an external IP address. Port 443 Opsional: Waktu tunggu keepalive HTTP Masukkan nilai waktu tunggu dari 5 hingga 1200 detik. Nilai defaultnya adalah 610 detik. Certificate Pilih sertifikat SSL yang ada atau buat sertifikat baru.
Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSL untuk digunakan di proxy HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri.
Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Data A domain harus di-resolve ke alamat IP load balancer (dalam contoh ini,
example-ip
). Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud mendapatkan, mengelola, dan memperpanjang sertifikat ini secara otomatis. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang ditandatangani sendiri untuk pengujian.Opsional: Mengaktifkan Pengalihan HTTP ke HTTPS Gunakan kotak centang ini untuk mengaktifkan pengalihan HTTP ke HTTPS.
Jika kotak ini dicentang, load balancer HTTP sebagian tambahan akan menggunakan alamat IP yang sama dengan load balancer HTTPS dan akan mengalihkan permintaan HTTP ke frontend HTTPS load balancer.
Kotak centang ini hanya dapat dipilih jika protokol HTTPS dipilih dan alamat IP yang dicadangkan digunakan.
Jika ingin menguji proses ini tanpa menyiapkan resource sertifikat SSL (atau domain seperti yang diwajibkan oleh sertifikat yang dikelola Google), Anda dapat menyiapkan load balancer HTTP.
Untuk membuat load balancer HTTP, pastikan opsi berikut telah dikonfigurasi dengan nilai ini:
Properti Nilai (ketik nilai atau pilih opsi yang ditentukan) Protokol HTTP Network Service Tier Premium IP version IPv4 Alamat IP Pilih alamat IP yang dibuat pada langkah Reserve an external IP address. Port 80 Opsional: Waktu tunggu keepalive HTTP Masukkan nilai waktu tunggu dari 5 hingga 1200 detik. Nilai defaultnya adalah 610 detik. Klik Done.
Konfigurasi backend
- Klik Backend configuration.
- Klik Backend services and backend buckets.
- Klik Create a backend service.
- Masukkan nama.
- Untuk Backend type, pilih Internet network endpoint group.
- Untuk Protocol, pilih protokol yang ingin Anda gunakan dari load balancer ke NEG internet. Untuk contoh ini, pilih HTTP/2.
- Untuk Backend, di jendela New backend, pilih NEG internet yang dibuat pada langkah sebelumnya.
- Klik Create.
Melakukan peninjauan dan penyelesaian
- Klik Review and finalize.
- Jika semuanya sudah benar, klik Buat.
gcloud
- Buat layanan backend:
gcloud compute backend-services create BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
- Tambahkan NEG internet ke layanan backend:
gcloud compute backend-services add-backend BACKEND_SERVICE \ --network-endpoint-group=INTERNET_NEG_NAME \ --global-network-endpoint-group \ --global
- Buat peta URL untuk mengarahkan permintaan masuk ke layanan backend:
gcloud compute url-maps create URL_MAP_NAME \ --default-service=BACKEND_SERVICE \ --global
Lakukan langkah ini hanya jika Anda ingin membuat load balancer HTTPS. Langkah ini tidak diperlukan untuk load balancer HTTP.
Untuk membuat load balancer HTTPS, Anda harus memiliki resource sertifikat SSL untuk digunakan di proxy target HTTPS. Anda dapat membuat resource sertifikat SSL menggunakan sertifikat SSL yang dikelola Google atau sertifikat SSL yang dikelola sendiri. Sebaiknya gunakan sertifikat yang dikelola Google karena Google Cloud mendapatkan, mengelola, dan memperpanjang sertifikat ini secara otomatis.
Untuk membuat sertifikat yang dikelola Google, Anda harus memiliki domain. Jika tidak memiliki domain, Anda dapat menggunakan sertifikat SSL yang dikelola sendiri untuk pengujian.
Untuk membuat resource sertifikat SSL yang dikelola Google:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --domains DOMAIN
Untuk membuat resource sertifikat SSL yang dikelola sendiri:gcloud compute ssl-certificates create SSL_CERTIFICATE_NAME \ --certificate CRT_FILE_PATH \ --private-key KEY_FILE_PATH
Buat proxy HTTP(S) target untuk merutekan permintaan ke peta URL Anda.
Untuk load balancer HTTP, buat proxy target HTTP:
gcloud compute target-http-proxies create TARGET_HTTP_PROXY_NAME \ --url-map=URL_MAP_NAME \ --global
Untuk load balancer HTTPS, buat proxy target HTTPS. Proxy adalah bagian dari load balancer yang menyimpan sertifikat SSL untuk Load Balancing HTTPS, sehingga Anda juga memuat sertifikat pada langkah ini.
gcloud compute target-https-proxies create TARGET_HTTPS_PROXY_NAME \ --ssl-certificates=SSL_CERTIFICATE_NAME \ --url-map=URL_MAP_NAME \ --global
Ganti kode berikut:
TARGET_HTTP_PROXY_NAME
: nama proxy HTTP target.TARGET_HTTPS_PROXY_NAME
: nama proxy HTTPS target.SSL_CERTIFICATE_NAME
: nama sertifikat SSL.URL_MAP_NAME
: nama peta URL.
--http-keep-alive-timeout-sec
. Nilai waktu tunggu harus antara 5 hingga 1.200 detik. Nilai defaultnya adalah 610 detik.Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy.
Untuk load balancer HTTP:
gcloud compute forwarding-rules create HTTP_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-http-proxy=TARGET_HTTP_PROXY_NAME \ --global \ --ports=80
Untuk load balancer HTTPS:
gcloud compute forwarding-rules create HTTPS_FORWARDING_RULE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --network-tier=PREMIUM \ --address=LB_IP_ADDRESS_NAME \ --target-https-proxy=TARGET_HTTPS_PROXY_NAME \ --global \ --ports=443
Menghubungkan domain ke load balancer
Setelah load balancer dibuat, catat alamat IP yang terkait dengan load balancer, misalnya, 30.90.80.100
. Untuk mengarahkan domain ke load balancer, buat data A
menggunakan layanan pendaftaran domain. Jika
Anda menambahkan beberapa domain ke sertifikat SSL, Anda harus menambahkan data A
untuk setiap domain, yang semuanya mengarah ke alamat IP load balancer. Misalnya, untuk
membuat data A
bagi www.example.com
dan example.com
, gunakan string berikut:
NAME TYPE DATA www A 30.90.80.100 @ A 30.90.80.100
Jika Anda menggunakan Cloud DNS sebagai penyedia DNS, lihat Menambahkan, mengubah, dan menghapus data.
Menguji load balancer
Setelah mengonfigurasi load balancer, Anda dapat mulai mengirim traffic ke alamat IP load balancer. Jika mengonfigurasi domain, Anda juga dapat mengirim traffic ke nama domain. Namun, penerapan DNS dapat memerlukan waktu untuk diselesaikan sehingga Anda dapat memulai dengan menggunakan alamat IP untuk pengujian.
Konsol
Di konsol Google Cloud, buka halaman Load balancing.
Klik load balancer yang baru saja dibuat.
Catat alamat IP load balancer.
Mengirim traffic ke load balancer.
Jika membuat load balancer HTTP, Anda dapat menguji load balancer dengan membuka
http://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke aplikasi yang Anda jalankan di backend eksternal.Jika membuat load balancer HTTPS, Anda dapat menguji load balancer dengan membuka
https://IP_ADDRESS
. GantiIP_ADDRESS
dengan alamat IP load balancer. Anda akan diarahkan ke tempat aplikasi Anda berjalan di backend eksternal.
Jika tidak berhasil dan Anda menggunakan sertifikat yang dikelola Google, konfirmasikan bahwa status resource sertifikat Anda AKTIF. Untuk mengetahui informasi selengkapnya, lihat Status resource sertifikat SSL yang dikelola Google.
Atau, Anda dapat menggunakan
curl
dari command line komputer lokal Anda. GantiIP_ADDRESS
dengan alamat IPv4 load balancer. Jika Anda menggunakan sertifikat yang dikelola Google, uji domain yang mengarah ke alamat IP load balancer. Contoh:curl -s 'https://www.example.com:443' --resolve www.example.com:443:IP_ADDRESS
Opsional: Jika menggunakan domain kustom, Anda mungkin perlu menunggu hingga setelan DNS yang telah diperbarui diterapkan. Kemudian, uji domain Anda di browser web.
Untuk mendapatkan bantuan terkait pemecahan masalah, lihat Memecahkan masalah backend eksternal dan NEG internet.
Konfigurasi tambahan
Bagian ini memperluas contoh konfigurasi untuk memberikan opsi konfigurasi alternatif dan tambahan. Semua tugas bersifat opsional. Anda dapat melakukannya dalam urutan apa pun.
Enable Cloud CDN
Saat Cloud CDN diaktifkan, Load Balancer Aplikasi eksternal akan mengirim permintaan ke backend NEG internet hanya jika ada cache Cloud CDN yang tidak ditemukan.
Konsol
Di Konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer yang ingin diubah.
Klik
Edit.Klik Backend configuration.
Untuk layanan backend dengan backend NEG internet, klik
Edit.Pilih Aktifkan Cloud CDN.
Opsional: Ubah setelan mode cache dan TTL.
Klik Perbarui.
Untuk meninjau perubahan, klik Review and finalize, lalu klik Update.
gcloud
- Untuk mengaktifkan Cloud CDN di layanan backend, gunakan perintah berikut:
gcloud compute backend-services update BACKEND_SERVICE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global \ --enable-cdn \ --cache-mode=CACHE_MODE
Tetapkan mode cache dengan mengganti
CACHE_MODE
dengan salah satu opsi berikut:CACHE_All_STATIC
: menyimpan konten statis secara otomatis.USE_ORIGIN_HEADERS
(default): mengharuskan origin menetapkan header cache yang valid untuk menyimpan konten dalam cache.FORCE_CACHE_ALL
: menyimpan semua konten ke dalam cache, dengan mengabaikan perintahprivate
,no-store
, atauno-cache
di header responsCache-Control
.
Menggunakan header kustom untuk mengautentikasi permintaan
Untuk mengautentikasi permintaan yang dikirim ke backend eksternal, Anda dapat menetapkan header kustom untuk menunjukkan bahwa permintaan tersebut berasal dari load balancer Google Cloud. Misalnya, Anda dapat mengonfigurasi backend eksternal untuk mengharapkan
nilai tertentu untuk header Host
permintaan HTTP, dan mengonfigurasi
layanan backend untuk menetapkan header Host
ke nilai yang diharapkan.
Gunakan langkah-langkah berikut untuk mengonfigurasi layanan backend guna menambahkan header Host
kustom ke setiap permintaan.
Konsol
Di Konsol Google Cloud, buka halaman Load balancing.
Klik nama load balancer yang ingin diubah.
Klik
Edit.Klik Backend configuration.
Untuk layanan backend dengan backend NEG internet, klik
Edit.Klik Advanced configurations.
Untuk Header permintaan kustom, klik Tambahkan header:
- Untuk Header name, masukkan
Host
. - Untuk Header value, masukkan
FQDN_NEG_ENDPOINT
.
- Untuk Header name, masukkan
Klik Perbarui.
Untuk meninjau perubahan, klik Review and finalize, lalu klik Update.
gcloud
- Gunakan perintah berikut untuk mengonfigurasi layanan backend guna menambahkan header
`Host` kustom ke setiap permintaan.
gcloud compute backend-services update BACKEND_SERVICE \ --custom-request-header "Host: HEADER_VALUE" \ --load-balancing-scheme=EXTERNAL_MANAGED \ --global
Pastikan Anda juga mengonfigurasi backend eksternal untuk mengharapkan header Host
sehingga dapat mengautentikasi permintaan masuk.
Untuk mengetahui informasi umum tentang header permintaan kustom, lihat Mengonfigurasi header permintaan kustom. Untuk metode autentikasi lainnya, lihat Mengautentikasi permintaan ke backend eksternal.
Mengaktifkan IAP di Load Balancer Aplikasi eksternal
Catatan: IAP tidak kompatibel dengan Cloud CDN.Anda dapat mengonfigurasi IAP untuk
diaktifkan atau dinonaktifkan (default). Jika diaktifkan, Anda harus memberikan nilai untuk
oauth2-client-id
dan oauth2-client-secret
.
Untuk mengaktifkan IAP, update layanan backend
agar menyertakan flag --iap=enabled
dengan oauth2-client-id
dan
oauth2-client-secret
.
gcloud compute backend-services update BACKEND_SERVICE_NAME \ --iap=enabled,oauth2-client-id=ID,oauth2-client-secret=SECRET \ --global
Memperbarui waktu tunggu keepalive HTTP klien
Load balancer yang dibuat pada langkah sebelumnya telah dikonfigurasi dengan nilai default untuk waktu tunggu keepalive HTTP klien. Untuk mengupdate waktu tunggu keepalive HTTP klien, gunakan petunjuk berikut.
Konsol
Di Konsol Google Cloud, buka halaman Load balancing.
- Klik nama load balancer yang ingin diubah.
- Klik Edit.
- Klik Frontend configuration.
- Luaskan Advanced features. Untuk HTTP keepalive timeout, masukkan nilai waktu tunggu dari 5 hingga 1.200 detik.
- Klik Perbarui.
- Untuk meninjau perubahan, klik Review and finalize, lalu klik Update.
gcloud
Untuk load balancer HTTP, perbarui proxy HTTP target menggunakan perintah gcloud compute target-http-proxies update
:
gcloud compute target-http-proxies update TARGET_HTTP_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
Untuk load balancer HTTPS, perbarui proxy HTTPS target menggunakan perintah gcloud compute target-https-proxies update
:
gcloud compute target-https-proxies update TARGET_HTTPS_PROXY_NAME \ --http-keep-alive-timeout-sec=HTTP_KEEP_ALIVE_TIMEOUT_SEC \ --global
Ganti kode berikut:
TARGET_HTTP_PROXY_NAME
: nama proxy HTTP target.TARGET_HTTPS_PROXY_NAME
: nama proxy HTTPS target.HTTP_KEEP_ALIVE_TIMEOUT_SEC
: nilai waktu tunggu keepalive HTTP dari 5 hingga 1.200 detik.
Langkah selanjutnya
- Untuk memeriksa apakah Cloud CDN menayangkan respons dari cache, lihat Melihat log.
- Untuk mempelajari konten mana yang dapat di-cache atau tidak dapat di-cache, lihat Ringkasan cache.
- Untuk menemukan titik kehadiran Cloud CDN, lihat Lokasi cache.
- Bersihkan penyiapan load balancer.
- Untuk mempelajari cara menonaktifkan Cloud CDN, lihat Menonaktifkan Cloud CDN.