1. Pengantar
Cloud Load Balancing mendukung traffic load balancing ke endpoint yang berada di luar Google Cloud, seperti pusat data lokal dan cloud publik lainnya yang dapat dijangkau dengan konektivitas hybrid.
Strategi hybrid merupakan solusi pragmatis bagi Anda untuk beradaptasi dengan permintaan pasar yang terus berubah dan memodernisasi aplikasi Anda secara bertahap. Hal ini dapat berupa deployment hybrid sementara untuk memungkinkan migrasi ke solusi modern berbasis cloud atau perlengkapan permanen infrastruktur IT organisasi Anda.
Dengan menyiapkan load balancing hybrid, Anda juga dapat menghadirkan manfaat kemampuan jaringan Cloud Load Balancing ke layanan yang berjalan pada infrastruktur Anda yang ada di luar Google Cloud.
Jika ingin menyediakan layanan hybrid di jaringan VPC lain, Anda dapat menggunakan Private Service Connect untuk memublikasikan layanan. Dengan menempatkan lampiran layanan di depan Load Balancer HTTP regional internal, Anda dapat mengizinkan klien di jaringan VPC lain menjangkau layanan hybrid yang berjalan di lingkungan cloud lokal atau lainnya.
Yang akan Anda bangun
Dalam codelab ini, Anda akan mem-build load balancer HTTP(S) internal dengan Konektivitas Hybrid ke layanan lokal menggunakan Grup Endpoint Jaringan. VPC Konsumen akan dapat berkomunikasi dengan layanan lokal menggunakan port 80, port 443 tidak berada dalam cakupan codelab.
Yang akan Anda pelajari
- Cara membuat load balancer HTTP(S) internal dengan backend NEG Hybrid
- Cara membuat Produsen (Lampiran Layanan) dan Konsumen (Aturan Penerusan) Private Service Connect
Yang Anda butuhkan
- Jaringan Hybrid yang sudah mapan, misalnya VPN HA, Interconnect, SW-WAN
- Project Google Cloud
Membangun konektivitas hybrid
Google Cloud dan lingkungan cloud lokal atau lainnya harus terhubung melalui konektivitas hybrid, menggunakan lampiran VLAN Cloud Interconnect atau tunnel Cloud VPN dengan Cloud Router. Sebaiknya gunakan koneksi ketersediaan tinggi.
Cloud Router yang diaktifkan dengan Perutean dinamis global mempelajari endpoint tertentu melalui BGP dan memprogramnya ke dalam jaringan VPC Google Cloud Anda. Pemilihan rute dinamis regional tidak didukung. Rute statis juga tidak didukung.
Jaringan VPC Google Cloud yang Anda gunakan untuk mengonfigurasi Cloud Interconnect atau Cloud VPN adalah jaringan yang sama dengan yang Anda gunakan untuk mengonfigurasi deployment load balancing hybrid. Pastikan rentang CIDR subnet jaringan VPC Anda tidak bertentangan dengan rentang CIDR jarak jauh. Ketika alamat IP tumpang tindih, rute subnet akan diprioritaskan daripada konektivitas jarak jauh.
Untuk mengetahui petunjuknya, lihat:
Iklan Rute Kustom
Subnet di bawah memerlukan iklan kustom dari Cloud Router ke jaringan lokal yang memastikan aturan firewall lokal diperbarui.
Subnet | Deskripsi |
172.16.0.0/23 | Subnet Proxy yang digunakan untuk berkomunikasi langsung dengan layanan di lokasi |
130.211.0.0/22, 35.191.0.0/16 |
2. Sebelum memulai
Mengupdate project agar mendukung codelab
Codelab ini menggunakan $variables untuk membantu implementasi konfigurasi gcloud di Cloud Shell.
Di dalam Cloud Shell, lakukan hal berikut
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
psclab=YOUR-PROJECT-NAME
echo $psclab
3. Penyiapan Producer
Membuat VPC Produsen
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute networks create producer-vpc --project=$psclab --subnet-mode=custom
Membuat subnet Producer
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute networks subnets create subnet-201 --project=$psclab --range=10.10.1.0/24 --network=producer-vpc --region=us-central1
gcloud compute networks subnets create subnet-202 --project=$psclab --range=10.20.1.0/24 --network=producer-vpc --region=us-central1
Mencadangkan Alamat IP untuk Load Balancer Internal
Di dalam Cloud Shell, lakukan hal berikut, yaitu menggunakan SHARED_VIP yang tidak didukung dengan Private Service Connect. Sebagai gantinya, gunakan GCE_ENDPOINT
gcloud compute addresses create lb-ip \
--region=us-central1 \
--subnet=subnet-202 \
--purpose=GCE_ENDPOINT
Gunakan perintah compute addresses describe untuk melihat alamat IP yang dialokasikan
gcloud compute addresses describe lb-ip --region=us-central1 | grep address:
Membuat subnet Proxy Regional
Alokasi proxy berada di tingkat VPC, bukan tingkat load balancer. Anda harus membuat satu subnet khusus proxy di setiap region jaringan virtual (VPC) tempat Anda menggunakan load balancer berbasis Envoy. Jika Anda men-deploy beberapa load balancer di region dan jaringan VPC yang sama, load balancer tersebut akan berbagi subnet khusus proxy yang sama untuk load balancing.
- Klien membuat koneksi ke alamat IP dan port aturan penerusan load balancer.
- Setiap proxy memproses alamat IP dan port yang ditentukan oleh aturan penerusan load balancer yang sesuai. Salah satu proxy menerima dan menghentikan koneksi jaringan klien.
- Proxy tersebut membuat koneksi ke VM backend atau endpoint yang sesuai dalam NEG, seperti yang ditentukan oleh layanan backend dan peta URL load balancer.
Anda harus membuat subnet khusus proxy, terlepas dari apakah jaringan Anda menggunakan mode otomatis atau kustom. Subnet khusus proxy harus menyediakan 64 alamat IP atau lebih. Ini sesuai dengan panjang awalan /26 atau lebih pendek. Ukuran subnet yang direkomendasikan adalah /23 (512 alamat khusus proxy).
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute networks subnets create proxy-subnet-us-central \
--purpose=REGIONAL_MANAGED_PROXY \
--role=ACTIVE \
--region=us-central1 \
--network=producer-vpc \
--range=172.16.0.0/23
Membuat subnet NAT Private Service Connect
Buat satu atau beberapa subnet khusus untuk digunakan dengan Private Service Connect. Jika menggunakan konsol Google Cloud untuk memublikasikan layanan, Anda dapat membuat subnet selama prosedur tersebut. Buat subnet di region yang sama dengan load balancer layanan. Anda tidak dapat mengonversi subnet reguler menjadi subnet Private Service Connect.
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute networks subnets create psc-nat-subnet --network=producer-vpc --region=us-central1 --range=100.100.10.0/24 --purpose=private-service-connect
Membuat Aturan Firewall Produsen
Konfigurasikan aturan firewall untuk mengizinkan traffic antara endpoint Private Service Connect dan lampiran layanan. Dalam codelab ini, telah dibuat Aturan Firewall Ingress yang memungkinkan subnet NAT 100.100.10.0/24 mengakses Private Service Connect Service Lampiran (load balancer internal).
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute --project=$psclab firewall-rules create allow-to-ingress-nat-subnet --direction=INGRESS --priority=1000 --network=producer-vpc --action=ALLOW --rules=all --source-ranges=100.100.10.0/24
Di dalam Cloud Shell, buat aturan fw-allow-health-check untuk mengizinkan health check Google Cloud menjangkau layanan on-premise (layanan backend) di port TCP 80
gcloud compute firewall-rules create fw-allow-health-check \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:80
Buat aturan firewall izinkan masuk untuk subnet khusus proxy agar load balancer dapat berkomunikasi dengan instance backend di port TCP 80
gcloud compute firewall-rules create fw-allow-proxy-only-subnet \
--network=producer-vpc \
--action=allow \
--direction=ingress \
--source-ranges=172.16.0.0/23 \
--rules=tcp:80
Menyiapkan NEG konektivitas hybrid
Saat membuat NEG, gunakan ZONE yang meminimalkan jarak geografis antara Google Cloud dan lingkungan cloud lokal atau lingkungan cloud lainnya. Misalnya, jika Anda menghosting layanan di lingkungan lokal di Frankfurt, Jerman, Anda dapat menentukan zona europe-west3-a Google Cloud saat membuat NEG.
Selain itu, jika Anda menggunakan Cloud Interconnect, ZONE yang digunakan untuk membuat NEG harus berada di region yang sama dengan tempat lampiran Cloud Interconnect dikonfigurasi.
Untuk region dan zona yang tersedia, lihat dokumentasi Compute Engine: Region dan zona yang tersedia.
Di Cloud Shell, buat NEG konektivitas hybrid menggunakan perintah gcloud compute network-endpoint-groups create
gcloud compute network-endpoint-groups create on-prem-service-neg \
--network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \
--zone=us-central1-a \
--network=producer-vpc
Di dalam Cloud Shell, tambahkan endpoint IP:Port lokal ke NEG hybrid.
gcloud compute network-endpoint-groups update on-prem-service-neg \
--zone=us-central1-a \
--add-endpoint="ip=192.168.1.5,port=80"
Mengonfigurasi load balancer
Pada langkah-langkah berikut, Anda akan mengonfigurasi load balancer (aturan penerusan) & mengaitkannya dengan grup endpoint jaringan
Di dalam Cloud Shell, buat health check regional yang diteruskan ke layanan lokal
gcloud compute health-checks create http http-health-check \
--region=us-central1 \
--use-serving-port
Di Cloud Shell, buat layanan backend untuk backend on-premise yang memanfaatkan NEG hybrid
gcloud compute backend-services create on-premise-service-backend \
--load-balancing-scheme=INTERNAL_MANAGED \
--protocol=HTTP \
--health-checks=http-health-check \
--health-checks-region=us-central1 \
--region=us-central1
Di dalam Cloud Shell, tambahkan backend NEG campuran ke layanan backend. Untuk RATE, masukkan RATE maksimum yang harus ditangani backend.
gcloud compute backend-services add-backend on-premise-service-backend \
--region=us-central1 \
--balancing-mode=RATE \
--max-rate-per-endpoint=100 \
--network-endpoint-group=on-prem-service-neg \
--network-endpoint-group-zone=us-central1-a
Di dalam Cloud Shell, buat peta URL untuk mengarahkan permintaan masuk ke layanan backend
gcloud compute url-maps create on-prem-svc-url-map \
--default-service on-premise-service-backend \
--region=us-central1
Membuat proxy target HTTP
gcloud compute target-http-proxies create proxy-subnet-us-central\
--url-map=on-prem-svc-url-map \
--url-map-region=us-central1 \
--region=us-central1
Buat aturan penerusan untuk mengarahkan permintaan masuk ke proxy. Jangan gunakan subnet khusus proxy untuk membuat aturan penerusan.
gcloud compute forwarding-rules create http-hybrid-neg-fwd-rule \
--load-balancing-scheme=INTERNAL_MANAGED \
--network=producer-vpc \
--subnet=subnet-202 \
--address=lb-ip \
--ports=80 \
--region=us-central1 \
--target-http-proxy=proxy-subnet-us-central \
--target-http-proxy-region=us-central1
4. Memvalidasi load balancer
Dari Cloud Console, buka Network Services → Load Balancing → Load Balancer. Perhatikan bahwa 1 NEG adalah 'Hijau' menunjukkan bahwa health check berhasil ke layanan lokal
Memilih 'on-premise-svc-url-map' akan menghasilkan Alamat IP Front End dan mengidentifikasi Layanan Backend
5. Melihat rute yang dipelajari dari lokal
Buka Jaringan VPC → Rute. Perhatikan, subnet layanan on-premise yang dipelajari 192.168.1.0/27
6. Memvalidasi konektivitas ke layanan lokal
Dari VPC Produser, kita akan membuat VM untuk menguji konektivitas ke layanan lokal. Setelah itu, Lampiran Layanan adalah konfigurasi berikutnya.
Di dalam Cloud Shell, buat instance pengujian di vpc produser
gcloud compute instances create test-box-us-central1 \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=subnet-201 \
--no-address
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Di dalam Cloud Shell, buat instance pengujian di vpc produsen
gcloud compute firewall-rules create ssh-iap \
--network producer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Login ke test-box-us-central1 menggunakan IAP di Cloud Shell untuk memvalidasi konektivitas ke layanan on-premise dengan melakukan curl terhadap Alamat IP load balance. Coba lagi jika waktu tunggu habis.
gcloud compute ssh test-box-us-central1 --project=$psclab --zone=us-central1-a --tunnel-through-iap
Lakukan curl yang memvalidasi konektivitas ke layanan lokal. Setelah proses validasi, keluar dari VM, kembali ke perintah Cloud Shell. Ganti IP Load Balancer Internal berdasarkan output yang Anda identifikasi pada langkah 4.
user@test-box-us-central1:~$ curl -v 10.20.1.2
* Expire in 0 ms for 6 (transfer 0x55b7725c10f0)
* Trying 10.20.1.2...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x55b7725c10f0)
* Connected to 10.20.1.2 (10.20.1.2) port 80 (#0)
> GET / HTTP/1.1
> Host: 10.20.1.2
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< content-type: text/html; charset=utf-8
< accept-ranges: bytes
< etag: "3380914763"
< last-modified: Mon, 05 Dec 2022 15:10:56 GMT
< expires: Mon, 12 Dec 2022 03:17:20 GMT
< cache-control: max-age=0
< content-length: 37
< date: Mon, 12 Dec 2022 03:17:20 GMT
< server: lighttpd/1.4.53
< via: 1.1 google
<
Welcome to my on-premise service!!
7. Membuat Lampiran Layanan Private Service Connect
Pada langkah-langkah berikut, kita akan membuat Lampiran Layanan. Setelah disambungkan dengan Endpoint Konsumen, akses ke layanan on-premise akan diperoleh tanpa perlu melakukan peering VPC.
Membuat Lampiran Layanan
Di dalam Cloud Shell, buat Lampiran Layanan
gcloud compute service-attachments create service-1 --region=us-central1 --producer-forwarding-rule=http-hybrid-neg-fwd-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=psc-nat-subnet
Opsional: Jika menggunakan VPC bersama, buat Lampiran Layanan di Project Layanan
gcloud compute service-attachments create service-1 --region=us-central1 --producer-forwarding-rule=http-hybrid-neg-fwd-rule --connection-preference=ACCEPT_AUTOMATIC --nat-subnets=projects/<hostproject>/regions/<region>/subnetworks/<natsubnet>
Validasi lampiran layanan TCP
gcloud compute service-attachments describe service-1 --region us-central1
Opsional: Buka Network Services → Private Service Connect untuk melihat Lampiran Layanan yang baru dibuat
Memilih Service-1 akan memberikan detail yang lebih lengkap, termasuk URI Lampiran Layanan yang digunakan oleh konsumen untuk membuat Koneksi Layanan Pribadi. Catat URI karena akan digunakan pada langkah berikutnya.
Detail Lampiran Layanan: projects/<projectname>/ regions/us-central1/serviceLampirans/service-1
8. Penyiapan Konsumen
Membuat VPC Konsumen
Di dalam Cloud Shell, lakukan hal berikut
gcloud compute networks create consumer-vpc --project=$psclab --subnet-mode=custom
Membuat subnet Konsumen
Di Cloud Shell, buat subnet GCE
gcloud compute networks subnets create subnet-101 --project=$psclab --range=10.100.1.0/24 --network=consumer-vpc --region=us-central1
Di dalam Cloud Shell, buat Subnet Endpoint Konsumen
gcloud compute networks subnets create subnet-102 --project=$psclab --range=10.100.2.0/24 --network=consumer-vpc --region=us-central1
Membuat Endpoint Konsumen (aturan penerusan)
Di dalam Cloud Shell, buat Alamat IP statis yang akan digunakan sebagai Endpoint Konsumen
gcloud compute addresses create psc-consumer-ip-1 --region=us-central1 --subnet=subnet-102 --addresses 10.100.2.10
Mari kita gunakan URI Lampiran Layanan yang dibuat sebelumnya untuk membuat Endpoint Konsumen
Di dalam Cloud Shell, buat Endpoint Konsumen
gcloud compute forwarding-rules create psc-consumer-1 --region=us-central1 --network=consumer-vpc --address=psc-consumer-ip-1 --target-service-attachment=projects/$psclab/regions/us-central1/serviceAttachments/service-1
9. Validasi Consumer Private Service Connect - VPC Konsumen
Dari VPC Konsumen, verifikasi Koneksi Layanan Pribadi yang berhasil dengan membuka Layanan Jaringan → Private Service Connect → Endpoint Terhubung. Perhatikan koneksi psc-consumer-1 yang dibuat dan Alamat IP yang sesuai yang telah kita buat sebelumnya.
Saat memilih psc-consumer-1, detail akan diberikan termasuk URI Lampiran Layanan
10. Memvalidasi Private Service Connect Konsumen - VPC Produsen
Dari VPC Produsen, verifikasi Private Service Connection yang berhasil dengan membuka Layanan Jaringan → Private Service Connect → Layanan yang Dipublikasikan. Perhatikan bahwa koneksi layanan-1 yang dipublikasikan kini menunjukkan 1 aturan penerusan (endpoint koneksi).
11. Buat Zona DNS Pribadi & Catatan A
Buat Zona DNS Pribadi yang dipetakan ke Endpoint Koneksi PSC yang memungkinkan akses lancar ke Produsen dari host mana pun dalam VPC.
Dari Cloud Shell
gcloud dns --project=$psclab managed-zones create codelab-zone --description="" --dns-name="codelab.net." --visibility="private" --networks="consumer-vpc"
gcloud dns --project=$psclab record-sets create service1.codelab.net. --zone="codelab-zone" --type="A" --ttl="300" --rrdatas="10.100.2.10"
12. Memvalidasi akses Konsumen ke layanan Producer menggunakan VM
Dari VPC Konsumen, kita akan membuat VM untuk menguji konektivitas ke layanan lokal dengan mengakses layanan endpoint konsumen1.codelabs.net
Di dalam Cloud Shell, buat instance pengujian di VPC konsumen
gcloud compute instances create consumer-vm \
--zone=us-central1-a \
--image-family=debian-10 \
--image-project=debian-cloud \
--subnet=subnet-101 \
--no-address
Untuk mengizinkan IAP terhubung ke instance VM Anda, buat aturan firewall yang:
- Berlaku untuk semua instance VM yang Anda inginkan agar dapat diakses dengan menggunakan IAP.
- Mengizinkan traffic masuk dari rentang IP 35.235.240.0/20. Rentang ini berisi semua alamat IP yang digunakan IAP untuk penerusan TCP.
Di dalam Cloud Shell, buat instance pengujian di VPC konsumen
gcloud compute firewall-rules create ssh-iap-consumer \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
Login ke vm konsumen menggunakan IAP di Cloud Shell untuk memvalidasi konektivitas ke layanan lokal dengan melakukan curl terhadap dns FQDN service1.codelab.net. Coba lagi jika waktu tunggu habis.
gcloud compute ssh consumer-vm --project=$psclab --zone=us-central1-a --tunnel-through-iap
Lakukan curl yang memvalidasi konektivitas ke layanan lokal. Setelah divalidasi, keluar dari VM dan kembali ke perintah Cloud Shell
Di dalam Cloud Shell, lakukan curl
$ curl -v service1.codelab.net
* Trying 10.100.2.10...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x5650fc3390f0)
* Connected to service1.codelab.net (10.100.2.10) port 80 (#0)
> GET / HTTP/1.1
> Host: service1.codelab.net
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html; charset=utf-8
< Accept-Ranges: bytes
< ETag: "3380914763"
< Last-Modified: Mon, 05 Dec 2022 15:10:56 GMT
< Expires: Mon, 05 Dec 2022 15:15:41 GMT
< Cache-Control: max-age=0
< Content-Length: 37
< Date: Mon, 05 Dec 2022 15:15:41 GMT
< Server: lighttpd/1.4.53
<
Welcome to my on-premise service!!
Berikut adalah contoh rekaman dari layanan di lokasi, perhatikan Alamat IP Sumber 172.16.0.13 berasal dari rentang Subnet Proxy 172.16.0.0/23
13. Pembersihan Produsen
Menghapus komponen Producer
Di dalam Cloud Shell, hapus instance pengujian di VPC Produsen
gcloud compute instances delete test-box-us-central1 --zone=us-central1-a --quiet
gcloud compute service-attachments delete service-1 --region=us-central1 --quiet
gcloud compute forwarding-rules delete http-hybrid-neg-fwd-rule --region=us-central1 --quiet
gcloud compute target-http-proxies delete proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute url-maps delete on-prem-svc-url-map --region=us-central1 --quiet
gcloud compute backend-services delete on-premise-service-backend --region=us-central1 --quiet
gcloud compute network-endpoint-groups delete on-prem-service-neg --zone=us-central1-a --quiet
gcloud compute addresses delete lb-ip --region=us-central1 --quiet
gcloud compute networks subnets delete psc-nat-subnet subnet-201 subnet-202 proxy-subnet-us-central --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap fw-allow-proxy-only-subnet allow-to-ingress-nat-subnet fw-allow-health-check --quiet
gcloud compute health-checks delete http-health-check --region=us-central1 --quiet
gcloud compute networks delete producer-vpc --quiet
14. Pembersihan Konsumen
Menghapus komponen Konsumen
Di dalam Cloud Shell, hapus instance pengujian di VPC Konsumen
gcloud compute instances delete consumer-vm --zone=us-central1-a --quiet
gcloud compute forwarding-rules delete psc-consumer-1 --region=us-central1 --quiet
gcloud compute addresses delete psc-consumer-ip-1 --region=us-central1 --quiet
gcloud compute networks subnets delete subnet-101 subnet-102 --region=us-central1 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud dns record-sets delete service1.codelab.net --type=A --zone=codelab-zone --quiet
gcloud dns managed-zones delete codelab-zone --quiet
gcloud compute networks delete consumer-vpc --quiet
15. Selamat
Selamat, Anda telah berhasil mengonfigurasi dan memvalidasi Private Service Connect dengan load balancer HTTP(S) Internal.
Anda telah membuat infrastruktur produsen, dan menambahkan lampiran layanan di VPC produsen yang mengarah ke layanan lokal. Anda telah mempelajari cara membuat endpoint konsumen di VPC Konsumen yang memungkinkan konektivitas ke layanan lokal.
Apa selanjutnya?
Lihat beberapa codelab ini...
- Menggunakan Private Service untuk memublikasikan dan menggunakan layanan dengan GKE
- Menggunakan Private Service Connect untuk memublikasikan dan menggunakan layanan
- Menghubungkan ke layanan lokal melalui Jaringan Hybrid menggunakan Private Service Connect dan load balancer Proxy TCP internal
Bacaan lebih lanjut & Video
- Ringkasan Private Service Connect
- Apa itu Private Service Connect?
- Jenis Load Balancer yang Didukung