Menggunakan load balancer Hybrid HTTP Eksternal untuk menjangkau Grup Endpoint Jaringan

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.

3312e69c63b02f73.png

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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

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

f6ef2b5f13479f3a.png

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'

70ccd168957e89d9.png

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

a55cd31dbeadfecc.png

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

f1589df43bf9e3e8.png

Pilih Konfigurasi frontend, perbarui nama "xlb-fe", dan pilih alamat IPv4 statis yang dibuat sebelumnya. Pastikan untuk mencerminkan screenshot yang diberikan b47cd48c7c1ccfc3.png

Pilih "Tinjau dan selesaikan" untuk mencocokkan screenshot yang diberikan, lalu pilih buat

bfa39f7dc3ad91e1.png

Validasi kondisi backend

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

131bbfc955d6166c.png

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

53d7463fe354fe66.png

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

4d8f04264b44d03c.png

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