1. Pengantar
Strategi hybrid adalah solusi pragmatis bagi Anda untuk beradaptasi dengan permintaan pasar yang berubah-ubah dan memodernisasi aplikasi secara bertahap. Dukungan hybrid untuk load balancer HTTP(S) internal dan eksternal Google Cloud memperluas load balancing cloud ke backend yang berada di lokal dan di cloud lain, serta merupakan pendukung utama untuk strategi hybrid Anda. Hal ini mungkin bersifat sementara untuk memungkinkan migrasi ke solusi berbasis cloud modern atau menjadi bagian permanen dari infrastruktur IT organisasi Anda.

Dalam lab ini, Anda akan mempelajari cara membuat Grup Endpoint Jaringan (NEG) menggunakan dua virtual machine yang dapat diakses dari Load Balancer Global HTTP(s) eksternal. Meskipun NEG di lab berada dalam GCP, prosedur yang sama digunakan untuk berkomunikasi dengan resource publik atau lokal dengan kemampuan jangkauan IP.
Yang akan Anda pelajari
- Membuat VPC kustom
- Buat dua virtual machine (VM) yang digunakan sebagai Grup Endpoint Jaringan (NEG)
- Buat Load Balancer Hybrid, layanan backend, dan health check terkait
- Buat aturan firewall yang mengizinkan akses ke Load Balancer
- Cloud Router dan NAT akan dibuat untuk mengizinkan update paket dari internet
- Memvalidasi aksesibilitas Grup Endpoint Jaringan
Yang Anda butuhkan
- Pengetahuan tentang load balancer
Penyiapan lingkungan mandiri
- Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.



- Nama Project adalah ID pribadi Anda untuk project ini. Selama Anda mengikuti konvensi penamaannya, Anda dapat menggunakan apa pun yang Anda inginkan dan dapat memperbaruinya kapan saja.
- Project ID harus unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Konsol Cloud otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID), jadi jika tidak suka, buat ID acak lainnya, atau Anda dapat mencoba ID Anda sendiri dan melihat apakah ID tersebut tersedia. Kemudian file akan "dibekukan" setelah project dibuat.
- Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.
Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.
Mulai Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.
Dari Konsol GCP, klik ikon Cloud Shell di toolbar kanan atas:

Hanya perlu waktu beberapa saat untuk penyediaan dan terhubung ke lingkungan. Jika sudah selesai, Anda akan melihat tampilan seperti ini:

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Semua pekerjaan Anda di lab ini dapat dilakukan hanya dengan browser.
2. Sebelum memulai
Di dalam Cloud Shell, pastikan project ID Anda sudah disiapkan
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
3. Buat jaringan VPC mode kustom baru
Dalam tugas ini, Anda akan membuat Virtual Private Cloud (VPC), dasar dari jaringan.
Jaringan VPC
Dari Cloud Shell
gcloud compute networks create hybrid-network-lb --subnet-mode custom
Buat Subnet
Dari Cloud Shell
gcloud compute networks subnets create network-endpoint-group-subnet --network hybrid-network-lb --range 192.168.10.0/24 --region us-west1
Buat instance Cloud NAT
Meskipun tidak diperlukan untuk jaringan hybrid, instance komputasi memerlukan konektivitas internet untuk mendownload aplikasi dan update.
Dalam tugas ini, Anda akan membuat instance Cloud Router dan NAT yang memungkinkan konektivitas internet ke instance VM.
Buat Cloud Router
Dari Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
Buat Cloud NAT
Dari Cloud Shell
gcloud compute routers nats create cloudnat --router=crnat --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --enable-logging --region us-west1
4. Buat dua instance VM
Dalam tugas ini, Anda akan membuat dua instance VM yang menjalankan Apache. Nantinya di lab ini, instance VM tersebut akan menjadi Grup Endpoint Jaringan (NEG).
Dari Cloud Shell, buat instance lokal pertama, on-prem-neg-1
gcloud compute instances create on-prem-neg-1 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
Dari Cloud Shell, buat instance lokal pertama, on-prem-neg-2
gcloud compute instances create on-prem-neg-2 \
--zone=us-west1-a \
--tags=allow-health-check \
--image-family=debian-9 \
--image-project=debian-cloud \
--subnet=network-endpoint-group-subnet --no-address \
--metadata=startup-script='#! /bin/bash
apt-get update
apt-get install apache2 -y
a2ensite default-ssl
a2enmod ssl
vm_hostname="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/name)"
filter="{print \$NF}"
vm_zone="$(curl -H "Metadata-Flavor:Google" \
http://169.254.169.254/computeMetadata/v1/instance/zone \
| awk -F/ "${filter}")"
echo "Page on $vm_hostname in $vm_zone" | \
tee /var/www/html/index.html
systemctl restart apache2'
5. Buat NEG yang berisi endpoint lokal Anda
Pertama, buat NEG bernama on-prem-neg-1 dan on-prem-neg-2. Anda juga akan menentukan bahwa LB harus mempertimbangkan bahwa, untuk tujuan perutean dan load balancing, endpoint ini berada di zona GCP us-west1-a. Sebaiknya zona yang dikonfigurasi sesuai dengan zona yang terkait dengan region Lampiran Interconnect/Gateway VPN untuk pengukuran load balancing berbasis kedekatan yang digunakan untuk load balancing.
Dari Cloud Shell, buat on-prem-neg-1
gcloud compute network-endpoint-groups create on-prem-neg-1 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Dari Cloud Shell, buat on-prem-neg-2
gcloud compute network-endpoint-groups create on-prem-neg-2 \
--network-endpoint-type NON_GCP_PRIVATE_IP_PORT \
--zone "us-west1-a" \
--network hybrid-network-lb
Dalam codelab ini, grup endpoint jaringan adalah instance GCE yang menjalankan Apache di GCP. Atau, Anda dapat menentukan endpoint lokal atau internet sebagai endpoint jaringan
Identifikasi alamat IP GCE dari Cloud Shell
gcloud compute instances list | grep -i on-prem
Kaitkan grup endpoint jaringan dengan alamat IP instance GCE yang sebelumnya diidentifikasi pada langkah sebelumnya; untuk setiap NEG, on-prem-neg-1 & on-prem-neg-2.
Dari Cloud Shell, kaitkan on-prem-neg-1, perbarui x.x.x.x dengan IP yang Anda identifikasi
gcloud compute network-endpoint-groups update on-prem-neg-1 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
Dari Cloud Shell, kaitkan on-prem-neg-2, perbarui x.x.x.x dengan IP yang Anda identifikasi
gcloud compute network-endpoint-groups update on-prem-neg-2 \
--zone="us-west1-a" \
--add-endpoint="ip=x.x.x.x,port=80"
6. Buat health check http, layanan backend & firewall
Pada langkah ini, Anda akan membuat layanan backend global bernama on-prem-backend-service. Layanan backend ini menentukan cara bidang data Anda akan mengirim traffic ke NEG Anda.
Pertama, buat health check bernama on-prem-health-check untuk memantau responsivitas endpoint yang termasuk dalam NEG ini (yaitu, endpoint lokal Anda).
Dari Cloud Shell
gcloud compute health-checks create http on-prem-health-check
Buat layanan backend bernama on-prem-backend-service dan kaitkan dengan health check.
Dari Cloud Shell
gcloud compute backend-services create on-prem-backend-service \
--global \
--load-balancing-scheme=EXTERNAL \
--health-checks on-prem-health-check
Load balancer eksternal HTTP(S) dan backend melakukan health check yang berasal dari subnet 35.191.0.0/16 dan 130.211.0.0/22; oleh karena itu, aturan firewall diperlukan untuk mengizinkan perutean dari load balancer ke backend.
Dari Cloud Shell
gcloud compute firewall-rules create fw-allow-health-check \
--network=hybrid-network-lb \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-health-check \
--rules=tcp:80
7. Mengaitkan NEG dan layanan backend
Tambahkan NEG on-prem-neg-1 ke layanan backend ini
Dari Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-1 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Tambahkan NEG on-prem-neg-2 ke layanan backend ini
Dari Cloud Shell
gcloud compute backend-services add-backend on-prem-backend-service \
--global \
--network-endpoint-group on-prem-neg-2 \
--network-endpoint-group-zone us-west1-a \
--balancing-mode RATE \
--max-rate-per-endpoint 5
Mencadangkan Alamat IP statis IPv4 yang digunakan untuk mengakses endpoint jaringan Anda
Dari Cloud Shell
gcloud compute addresses create hybrid-lb-ip --project=$projectid --global
Kita telah menyelesaikan konfigurasi CLI. Mari selesaikan konfigurasi dari Konsol Cloud.
8. Buat load balancer HTTP eksternal & kaitkan layanan backend
Dari konsol cloud, buka Load Balancing, lalu pilih Create load balancer
Identifikasi load balancing HTTP(S) dan klik 'start configuration'

Pilih "From Internet to my VMs" sesuai screenshot di bawah yang memungkinkan akses publik ke VM Anda

Berikan "xlb" sebagai nama load balancer dan pilih layanan backend "on-prem-backend-service" yang dibuat sebelumnya, lalu "ok" sesuai screenshot yang diberikan

Pilih Konfigurasi frontend, perbarui nama "xlb-fe", dan pilih alamat IPv4 statis yang dibuat sebelumnya. Pastikan untuk mencerminkan screenshot yang diberikan 
Pilih "Tinjau dan selesaikan" untuk mencocokkan screenshot yang diberikan, lalu pilih buat

Validasi kondisi backend
Dari konsol cloud, pastikan backend "xlb" dalam kondisi baik, berwarna hijau sesuai screenshot yang diberikan

9. Memvalidasi bahwa NEG dapat dijangkau dari internet
Ingatlah bahwa Alamat IP statis eksternal yang digunakan saat membuat load balancer kini menjadi IP front-end endpoint jaringan Anda. Mari lakukan validasi alamat IP sebelum menjalankan pengujian akhir.
Dari Cloud Shell
gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress:
Output (Alamat IP Anda akan berbeda)
Output dari cloudshell
$ gcloud compute forwarding-rules describe xlb-fe --global | grep -i IPAddress: IPAddress: 34.96.103.132
Dengan menggunakan alamat IP frontend load balancer global, Anda dapat mengakses backend endpoint jaringan. Perhatikan, dalam codelab, endpoint adalah instance GCE, tetapi Anda dapat menggunakannya dengan endpoint lokal, misalnya.
Dari workstation lokal, buka terminal dan lakukan curl ke alamat IP load balancer
Dari workstation Anda, lakukan curl terhadap alamat IP frontend. Amati 200 OK, dan detail halaman yang terdiri dari nama dan region instance NEG.
myworkstation$ curl -v 34.96.103.132
* Trying 34.96.103.132...
* TCP_NODELAY set
* Connected to 34.96.103.132 (34.96.103.132) port 80 (#0)
> GET / HTTP/1.1
> Host: 34.96.103.132
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Tue, 10 Aug 2021 01:21:54 GMT
< Server: Apache/2.4.25 (Debian)
< Last-Modified: Tue, 10 Aug 2021 00:35:41 GMT
< ETag: "24-5c929ae7384f4"
< Accept-Ranges: bytes
< Content-Length: 36
< Content-Type: text/html
< Via: 1.1 google
<
Page on on-prem-neg-2 in us-west1-a
* Connection #0 to host 34.96.103.132 left intact
* Closing connection 0
Selamat, Anda telah berhasil men-deploy Load balancer Hybrid L7 dengan NEG
Selamat, Anda telah menyelesaikan codelab.
Yang telah kita bahas
- Membuat VPC kustom
- Buat dua virtual machine (VM) yang digunakan sebagai Grup Endpoint Jaringan (NEG)
- Buat Load Balancer Hybrid, layanan backend, dan health check terkait
- Buat aturan firewall yang mengizinkan akses ke Load Balancer
- Memvalidasi aksesibilitas Grup Endpoint Jaringan
10. Langkah-langkah pembersihan
Dari UI Konsol Cloud, identifikasi dan centang load balancer 'xlb', lalu pilih hapus melalui Network Services → Load Balancing. Setelah dipilih, centang 'on-premise-backend service' & 'on-premise-health-check', lalu pilih hapus

Dari UI Konsol Cloud, buka Compute Engine → Network Endpoint Groups. Setelah dipilih, centang ‘on-prem-neg-1' & ‘on-prem-neg-2', lalu pilih hapus

Menghapus komponen lab dari cloud shell
gcloud compute routers nats delete cloudnat --router=crnat --region us-west1 --quiet gcloud compute routers delete crnat --region us-west1 --quiet gcloud compute instances delete on-prem-neg-1 --zone=us-west1-a --quiet gcloud compute instances delete on-prem-neg-2 --zone=us-west1-a --quiet gcloud compute firewall-rules delete fw-allow-health-check --quiet gcloud compute networks subnets delete network-endpoint-group-subnet --region=us-west1 --quiet gcloud compute networks delete hybrid-network-lb --quiet gcloud compute addresses delete hybrid-lb-ip --global --quiet