1. Pengantar
Strategi hybrid merupakan solusi pragmatis bagi Anda untuk beradaptasi dengan permintaan pasar yang terus berubah dan memodernisasi aplikasi Anda secara bertahap. Dukungan hybrid untuk load balancer HTTP(s) eksternal dan internal Google Cloud memperluas load balancing cloud ke backend yang berada di infrastruktur lokal dan di cloud lainnya, serta merupakan pengaktif utama untuk strategi hybrid Anda. Hal ini mungkin bersifat sementara untuk memungkinkan migrasi ke solusi berbasis cloud modern atau perlengkapan permanen infrastruktur IT organisasi Anda.
Di lab ini, Anda akan mempelajari cara membuat Grup Endpoint Jaringan (NEG) menggunakan dua virtual machine yang dapat diakses dari Load Balancer Global HTTP eksternal. Meskipun NEG di lab berada dalam GCP, prosedur yang sama digunakan untuk berkomunikasi dengan resource publik atau lokal yang memiliki keterjangkauan IP.
Yang akan Anda pelajari
- Membuat VPC kustom
- Membuat dua virtual machine (VM) yang digunakan sebagai Grup Endpoint Jaringan (NEG)
- Membuat Load Balancer Hybrid, layanan backend, dan health check terkait
- Membuat aturan firewall yang mengizinkan akses ke Load Balancer
- Cloud Router dan NAT akan dibuat untuk mengizinkan pembaruan paket dari internet
- Memvalidasi keterjangkauan 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.
- Project Name 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). Cloud Console otomatis membuat string unik; biasanya Anda tidak
peduli tentang apa itu. Di sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai
PROJECT_ID
). Jadi, jika tidak suka, buat codelab acak lainnya, atau, Anda dapat mencobanya sendiri dan melihat apakah tersedia. Kemudian akan "dibekukan" setelah proyek 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 GCP Console, 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. Membuat jaringan VPC mode kustom baru
Dalam tugas ini, Anda akan membuat Virtual Private Cloud (VPC), yang merupakan fondasi 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
Membuat instance Cloud NAT
Meskipun bukan persyaratan untuk jaringan hybrid, instance compute 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.
Membuat Cloud Router
Dari Cloud Shell
gcloud compute routers create crnat --network hybrid-network-lb --region us-west1
Membuat 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. Membuat dua instance VM
Dalam tugas ini, Anda akan membuat dua instance VM yang menjalankan Apache. Kemudian di lab, instance VM ini 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 lokal-neg-1 dan lokal-neg-2. Anda juga akan menentukan bahwa LB harus mempertimbangkan bahwa, untuk tujuan pemilihan rute dan load balancing, endpoint ini berada di zona GCP us-west1-a. Sebaiknya zona yang dikonfigurasi sesuai dengan zona apa pun yang terkait dengan region Interconnect Lampiran/Gateway VPN untuk pengukuran load balancing berbasis jarak 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
Dari Cloud Shell, identifikasi alamat IP GCE
gcloud compute instances list | grep -i on-prem
Mengaitkan grup endpoint jaringan ke alamat IP instance GCE yang sebelumnya diidentifikasi pada langkah sebelumnya; untuk setiap neg, on-prem-neg-1 & on-prem-neg-2.
Dari Cloud Shell associate on-prem-neg-1, update x.x.x.x dengan IP Anda yang diidentifikasi
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 associate on-prem-neg-2, update x.x.x.x dengan IP Anda yang diidentifikasi
gcloud compute network-endpoint-groups update on-prem-neg-2 \ --zone="us-west1-a" \ --add-endpoint="ip=x.x.x.x,port=80"
6. Membuat uji respons http, layanan backend & {i>Firewall<i}
Pada langkah ini, Anda akan membuat layanan backend global yang 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 kondisi 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 yang disebut layanan backend on-prem-backend 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 dan backend HTTP(S) melakukan health check yang berasal dari subnet 35.191.0.0/16 dan 130.211.0.0/22; Oleh karena itu, diperlukan aturan firewall untuk mengizinkan load balancer ke perutean 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 lokal-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 lokal-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 sudah selesai dengan konfigurasi CLI. Mari selesaikan konfigurasi dari Cloud Console.
8. Membuat load balancer HTTP eksternal & mengaitkan layanan backend
Dari Cloud Console, buka Load Balancing lalu pilih Create load balancer
Identifikasi load balancing HTTP(S) dan klik 'start configuration'
Pilih "From Internet to my VMs" sesuai dengan screenshot di bawah yang mengizinkan akses publik ke VM Anda
Berikan "xlb" sebagai nama load balancer dan pilih layanan backend yang dibuat sebelumnya "on-prem-backend-service" 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 disediakan
Pilih "{i>Review and finalize<i}" kemudian mencocokkan {i>screenshot<i} yang diberikan dan pilih {i>create<i}
Validasi respons backend
Dari konsol cloud, pastikan backend "xlb" responsif, hijau sesuai dengan screenshot yang disediakan
9. Validasi NEG dapat dijangkau dari internet
Ingat bahwa Alamat IP statis eksternal yang digunakan saat membuat load balancer kini menjadi IP frontend dari endpoint jaringan Anda. Mari kita lakukan validasi alamat IP sebelum menjalankan pengujian terakhir.
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 alamat IP front end load balancer global, Anda dapat mengakses backend endpoint jaringan. Catatan, dalam codelab, endpoint adalah instance GCE, misalnya, Anda akan menggunakannya dengan endpoint lokal.
Dari workstation lokal, luncurkan terminal dan lakukan curl ke alamat IP load balancer
Dari workstation, 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
- Membuat dua virtual machine (VM) yang digunakan sebagai Grup Endpoint Jaringan (NEG)
- Membuat Load Balancer Hybrid, layanan backend, dan health check terkait
- Membuat aturan firewall yang mengizinkan akses ke Load Balancer
- Memvalidasi keterjangkauan Grup Endpoint Jaringan
10. Langkah-langkah pembersihan
Dari UI Konsol Cloud, identifikasi dan centang 'xlb' load balancer dan pilih hapus melalui Layanan Jaringan → Load Balancing. Setelah dipilih, centang 'layanan backend lokal' & ‘on-premise-health-check' lalu pilih hapus
Dari UI Cloud Console, buka Compute Engine → Grup Endpoint Jaringan. 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