Google Compute Engine

1. Pengantar

Halo semuanya, terima kasih sudah hadir hari ini. Siap mempelajari Google Compute Engine?

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

Anda akan membuat instance Compute Engine, men-deploy nginx, dan terakhir menempatkan load balancer jaringan di bagian 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 virtual machine yang berjalan di pusat data Google yang terhubung ke jaringan fiber di seluruh dunia. Alat dan alur kerja yang ditawarkan memungkinkan penskalaan dari instance tunggal ke cloud computing global dan load-balanced.

VM ini melakukan booting dengan cepat, dilengkapi penyimpanan persistent disk, dan memberikan performa yang konsisten. Mesin tersedia dalam berbagai konfigurasi, termasuk ukuran yang telah ditentukan, dan juga dapat dibuat dengan Jenis Mesin Kustom yang dioptimalkan untuk 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 dari jarak jauh menggunakan laptop Anda, dalam codelab ini, kita akan menggunakan Google Cloud Shell, 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.png

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 dibahas sebelumnya, kita akan menggunakan command line gcloud dalam codelab ini. Semua yang dilakukan di sini dapat dicapai menggunakan konsol (tersedia di console.cloud.google.com).

Pertama, mari 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 - hal ini penting untuk nanti.

Instance dibuat menggunakan sejumlah default :

  • Zona yang Anda pilih. Semua instance berada di zona. Anda dapat memilih zona pada saat pembuatan instance menggunakan tanda --zone atau Anda dapat menetapkan zona default (seperti yang kami lakukan dalam penyiapan awal) dan menghilangkan tanda --zone.
  • Image Debian GNU/Linux 9 (stretch) terbaru. Jika Anda menggunakan image kustom sendiri, berikan nama image di sini. Misalnya, --image my-own-image.
  • n1-standard-1 Jenis mesin. Anda dapat memilih jenis mesin lain seperti n1-highmem-4 atau n1-highcpu-6. Jika tidak ada jenis mesin yang telah ditetapkan yang sesuai 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. Mengaktifkan Firewall untuk Port 80

Secara default, Google Cloud Platform hanya mengizinkan akses beberapa port. Karena kita akan segera menginstal Nginx, aktifkan port 80 di 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 nilai default dan semua opsi yang tersedia, termasuk kemampuan untuk menerapkan aturan firewall berdasarkan tag.

5. Menjalankan SSH ke Instance

Untuk melakukan 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 melakukan 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 berjalan 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 Anda melalui UI web:

dcc4e56e82ba2603.png

Pastikan Anda keluar dari SSH, dan 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 adalah IP publik myinstance dan Anda akan dapat melihat halaman nginx:

49b52b9354041f3b.png

7. Skrip Startup

Daripada menyiapkan instance setiap saat, Anda dapat menggunakan skrip startup untuk menginisialisasi instance saat startup.

Buat file bernama startup.sh dengan konten berikut (Anda dapat menggunakan editor teks favorit Anda: 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

Buka http://EXTERNAL_IP/ dan Anda akan melihat halaman beranda yang telah diperbarui. Jika halaman tidak ditampilkan, 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 dapat membuat grup instance untuk mengelola jumlah instance yang akan dibuat.

Pertama, 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 melakukan load balancing pada langkah-langkah berikutnya.

$ 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 akan dapat melihat semua instance yang 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, termasuk :

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

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

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

10. Membersihkan Cluster

Jangan lupa untuk menonaktifkan cluster Anda, jika tidak, cluster akan terus berjalan dan menimbulkan 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 lengkap. Anda mungkin ingin mempelajari beberapa di antaranya :

Google Kubernetes Engine

Google Kubernetes Engine (GKE) adalah penawaran Kubernetes yang dihosting dan dikelola sepenuhnya dari Google Cloud. Ada beberapa codelab yang tersedia untuk membantu Anda memulai GKE. Berikut salah satu yang bagus untuk memulai :

Kirimkan masukan Anda

  • Luangkan waktu Anda untuk menyelesaikan survei singkat kami