Google Compute Engine

1. Pengantar

Halo semuanya, terima kasih telah datang hari ini! Siap untuk mempelajari Google Compute Engine?

Dalam codelab ini, kita akan mempelajari Compute Engine yang berfungsi melalui contoh aplikasi Buku Tamu.

Anda akan membuat instance Compute Engine, men-deploy nginx, dan terakhir menempatkan load balancer jaringan di depan. Anda dapat membuat instance Compute Engine dari konsol grafis atau dari command line. Lab ini akan memandu Anda menggunakan command line.

ComputeEngine_128px.png

Google Compute Engine menawarkan mesin virtual yang berjalan di pusat data Google yang terhubung ke jaringan fiber miliknya di seluruh dunia. Alat dan alur kerja yang ditawarkan memungkinkan penskalaan dari instance tunggal ke cloud computing global dan load balancing.

VM ini melakukan booting dengan cepat, dilengkapi dengan penyimpanan persistent disk, dan memberikan performa yang konsisten. Mesin ini tersedia dalam berbagai konfigurasi, termasuk ukuran standar dan juga dapat dibuat dengan Jenis Mesin Kustom yang dioptimalkan sesuai kebutuhan spesifik Anda.

Terakhir, virtual machine Compute Engine juga merupakan teknologi yang digunakan oleh beberapa produk Google Cloud lainnya (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow, dll...).

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Nama project adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API, dan Anda 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 menghasilkan string unik; biasanya Anda tidak peduli dengan kata-katanya. Pada sebagian besar codelab, Anda harus mereferensikan Project ID (dan biasanya diidentifikasi sebagai PROJECT_ID). Jadi, jika Anda tidak menyukainya, buat ID acak lain, atau, Anda dapat mencoba sendiri dan melihat apakah tersedia. Kemudian file akan "dibekukan" setelah project dibuat.
  • Ada nilai ketiga, Nomor Project yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan API/resource Cloud. Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Untuk menonaktifkan resource agar tidak menimbulkan penagihan di luar tutorial ini, ikuti petunjuk "pembersihan" yang ada di akhir codelab. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Google Cloud Shell

Meskipun Google Cloud dan Compute Engine dapat dioperasikan secara jarak jauh dari laptop Anda, dalam codelab ini kita akan menggunakan Google Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.

Mesin virtual berbasis Debian ini memuat semua alat pengembangan yang akan Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Ini berarti bahwa semua yang Anda perlukan untuk codelab ini adalah browser (ya, ini berfungsi di Chromebook).

  1. Untuk mengaktifkan Cloud Shell dari Cloud Console, cukup klik Aktifkan Cloud Shellb125d9eb26a46cc5.png (hanya perlu beberapa saat untuk melakukan penyediaan dan terhubung ke lingkungan).

1067942a9a93f70.pngS

Screen Shot 2017-06-14 at 10.13.43 PM.png

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID.

gcloud auth list

Output perintah

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika, untuk beberapa alasan, project belum disetel, cukup jalankan perintah berikut:

gcloud config set project <PROJECT_ID>

Mencari PROJECT_ID Anda? Periksa ID yang Anda gunakan di langkah-langkah penyiapan atau cari di dasbor Cloud Console:

cc3895eeac80db2c.png

Cloud Shell juga menetapkan beberapa variabel lingkungan secara default, yang mungkin berguna saat Anda menjalankan perintah di masa mendatang.

echo $GOOGLE_CLOUD_PROJECT

Output perintah

<PROJECT_ID>
  1. Terakhir, tetapkan zona dan konfigurasi project default.
gcloud config set compute/zone us-central1-f

Anda dapat memilih berbagai zona yang berbeda. Untuk informasi selengkapnya, lihat Region & Zona.

3. Membuat instance Compute Engine

Seperti yang telah dibahas sebelumnya, kita akan menggunakan command line gcloud dalam codelab ini. Semua yang dilakukan di sini dapat dilakukan menggunakan konsol (tersedia di console.cloud.google.com).

Pertama-tama, mari kita buat instance dengan setelan default :

$ gcloud compute instances create myinstance
Created [...].
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

Catat EXTERNAL_IP - yang akan penting nanti.

Instance dibuat menggunakan sejumlah setelan default :

  • Zona yang Anda pilih. Semua instance berada di zona. Anda dapat memilih zona pada waktu pembuatan instance menggunakan tanda --zone atau menetapkan zona default (seperti yang kita lakukan di penyiapan awal) dan menghilangkan tanda --zone.
  • Image Debian GNU/Linux 9 (stretch) terbaru. Jika Anda menggunakan gambar kustom Anda sendiri, berikan nama gambar di sini. Misalnya, --image my-own-image.
  • Jenis mesin n1-standard-1. Anda dapat memilih jenis mesin lain seperti n1-highmem-4 atau n1-highcpu-6. Jika tidak ada jenis mesin yang telah ditetapkan yang cocok dengan kebutuhan Anda, gunakan jenis mesin kustom.
  • Jika nama persistent disk root sama dengan nama instance, disk akan otomatis dipasangkan ke instance.

Jalankan gcloud compute instances create --help untuk melihat semua opsi yang tersedia.

4. Aktifkan Firewall untuk Port 80

Secara default, Google Cloud Platform hanya mengizinkan beberapa akses port. Karena kita akan segera menginstal Nginx - mari kita aktifkan port 80 dalam konfigurasi firewall terlebih dahulu.

$ gcloud compute firewall-rules create allow-80 --allow tcp:80
Created [...].
NAME: allow-80
NETWORK: default
DIRECTION: INGRESS
PRIORITY: 1000
ALLOW: tcp:80
DENY:
DISABLED: False

Tindakan ini akan membuat aturan firewall bernama allow-80 yang memiliki daftar default blok alamat IP yang diizinkan untuk membuat koneksi masuk (--source-ranges) ditetapkan ke 0.0.0.0/0 (Di mana saja).

Jalankan gcloud compute firewall-rules create --help untuk melihat semua default dan semua opsi yang tersedia, termasuk kemampuan untuk menerapkan aturan firewall berdasarkan tag.

5. SSH Ke Instance

Untuk menerapkan SSH ke instance dari command line (masih dari Cloud Shell) :

$ gcloud compute ssh myinstance
Waiting for SSH key to propagate.
Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts.
...

yourusername@myinstance:~#

Selesai. cukup mudah. (Dalam produksi, pastikan Anda memasukkan frasa sandi :)

Atau, Anda juga dapat menjalankan SSH ke instance langsung dari konsol ( console.cloud.google.com), dengan membuka Compute Engine > VM Instances, lalu mengklik SSH.

bfbc03997a41946e.png

6. Instal Nginx

Login ke myinstance, instance yang baru dibuat, lalu instal nginx:

$ sudo su - 
# apt update
# apt install -y nginx
# service nginx start
# exit

Uji apakah server berfungsi menggunakan curl dari myinstance:

$ curl -s localhost | grep nginx
<title>Welcome to nginx!</title>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
<a href="http://nginx.org/">nginx.org</a>.<br/>
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>

Temukan IP eksternal untuk instance Anda dengan mencantumkan instance melalui UI web:

dcc4e56e82ba2603.png

Pastikan Anda keluar dari SSH, lalu jalankan perintah ini dari Cloud Shell:

$ gcloud compute instances list
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

Kemudian, buka http://EXTERNAL_IP/ dengan EXTERNAL_IP sebagai IP publik myinstance dan Anda akan dapat melihat halaman nginx:

49b52b9354041f3b.pngS

7. Skrip Startup

Daripada menyiapkan instance setiap saat, Anda dapat menggunakan skrip startup untuk melakukan inisialisasi pada saat startup.

Buat file bernama startup.sh dengan konten berikut (Anda dapat menggunakan editor teks favorit: vim, nano, atau emacs):

#! /bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html

Untuk membuat instance VM baru dengan skrip startup ini, cukup ketik :

$ gcloud compute instances create nginx \
         --metadata-from-file startup-script=startup.sh 
Created [...].
NAME: nginx
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

Jelajahi http://EXTERNAL_IP/ dan Anda akan melihat halaman beranda yang diperbarui. Jika halaman tidak langsung muncul, coba lagi setelah beberapa detik, host mungkin masih memulai nginx.

8. Membuat Cluster Server

Untuk membuat cluster server, Anda harus membuat Template Instance terlebih dahulu. Setelah template instance dibuat, Anda kemudian dapat membuat grup instance untuk mengelola jumlah instance yang akan dibuat.

Pertama-tama, buat template instance menggunakan skrip startup :

$ gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh
Created [...].
NAME: nginx-template
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00

Kedua, mari kita buat kumpulan target. Kumpulan target memungkinkan kita memiliki satu titik akses ke semua instance dalam grup dan diperlukan untuk load balancing pada langkah-langkah di masa mendatang.

$ gcloud compute target-pools create nginx-pool
Created [...].
NAME: nginx-pool
REGION: us-central1
SESSION_AFFINITY: NONE
BACKUP:
HEALTH_CHECKS:

Terakhir, buat grup instance menggunakan template:

$ gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool
Created [...].
NAME: nginx-group
LOCATION: us-central1-f
SCOPE: zone
BASE_INSTANCE_NAME: nginx
SIZE: 0
TARGET_SIZE: 2
INSTANCE_TEMPLATE: nginx-template
AUTOSCALED: no

Tindakan ini akan membuat dua instance VM tambahan dengan nama yang diawali dengan nginx-.

Sekarang Anda dapat melihat semua instance yang telah dibuat.

$ gcloud compute instances list
NAME: myinstance
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx-frpl
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

NAME: nginx-ztg4
ZONE: us-central1-f
MACHINE_TYPE: n1-standard-1
PREEMPTIBLE:
INTERNAL_IP: 10.128.X.X
EXTERNAL_IP: X.X.X.X
STATUS: RUNNING

9. Membuat Load Balancer Jaringan

Ada beberapa jenis load balancer di Google Cloud Platform, di antaranya :

Mari kita buat load balancer jaringan regional yang menargetkan grup instance:

$ gcloud compute forwarding-rules create nginx-lb \
         --ports 80 \
         --target-pool nginx-pool
Created [...].

$ gcloud compute forwarding-rules list
NAME: nginx-lb
REGION: us-central1
IP_ADDRESS: X.X.X.X
IP_PROTOCOL: TCP
TARGET: us-central1/targetPools/nginx-pool

Selanjutnya, Anda dapat membuka load balancer dari browser http://IP_ADDRESS/ dengan IP_ADDRESS adalah alamat yang ditampilkan sebagai hasil dari menjalankan perintah sebelumnya.

Karena keterbatasan waktu, kami tidak akan membuat load balancer HTTP hari ini.

10. Membersihkan Cluster

Jangan lupa untuk menonaktifkan cluster Anda, jika tidak, cluster akan terus berjalan dan dikenai biaya. Perintah berikut akan menghapus instance Google Compute Engine, Grup Instance, Grup Penargetan, dan Load Balancer.

$ gcloud compute forwarding-rules delete nginx-lb

$ gcloud compute instance-groups managed delete nginx-group

$ gcloud compute target-pools delete nginx-pool

$ gcloud compute instance-templates delete nginx-template

$ gcloud compute instances delete nginx

$ gcloud compute instances delete myinstance

$ gcloud compute firewall-rules delete allow-80

Setiap perintah di atas akan meminta Anda untuk mengonfirmasi penghapusan resource.

11. Apa langkah selanjutnya?

Selamat, Anda telah menyelesaikan codelab Compute Engine ini.

Fitur Compute Engine lainnya

Google Compute Engine memiliki serangkaian fitur yang beragam. Anda mungkin ingin mempelajari beberapa di antaranya :

Google Kubernetes Engine

Google Kubernetes Engine (GKE) adalah penawaran Kubernetes yang dihosting dan terkelola sepenuhnya dari Google Cloud. Ada beberapa codelab yang tersedia untuk membantu Anda memulai GKE. Berikut adalah langkah yang baik untuk memulai :

Kirimkan masukan Anda

  • Luangkan waktu Anda untuk menyelesaikan survei singkat kami