Menggunakan load balancer Hybrid HTTP Eksternal untuk menjangkau Grup Endpoint Jaringan

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.

3312e69c63b02f73.pngS

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

  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

  • 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.
  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 GCP Console, 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. 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'

70ccd168957e89d9.pngS

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

a55cd31dbeadfecc.png

Berikan "xlb" sebagai nama load balancer dan pilih layanan backend yang dibuat sebelumnya "on-prem-backend-service" 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 disediakan b47cd48c7c1ccfc3.png

Pilih "{i>Review and finalize<i}" kemudian mencocokkan {i>screenshot<i} yang diberikan dan pilih {i>create<i}

bfa39f7dc3ad91e1.png

Validasi respons backend

Dari konsol cloud, pastikan backend "xlb" responsif, hijau sesuai dengan screenshot yang disediakan

131bbfc955d6166c.pngS

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' &amp; ‘on-premise-health-check&#39; lalu pilih hapus

53d7463fe354fe66.pngS

Dari UI Cloud Console, buka Compute Engine → Grup Endpoint Jaringan. Setelah dipilih, centang 'on-prem-neg-1' &amp; ‘on-prem-neg-2&#39; lalu pilih hapus

4d8f04264b44d03c.pngS

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