Google Compute Engine

1. Pengantar

Halo, terima kasih sudah datang hari ini. Siap untuk mempelajari Google Compute Engine?

Dalam codelab ini, kita akan mempelajari Compute Engine yang menangani aplikasi contoh 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 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 di seluruh dunia. Alat dan alur kerja yang ditawarkan memungkinkan penskalaan dari satu instance ke cloud computing global yang seimbang.

VM ini melakukan booting dengan cepat, dilengkapi penyimpanan disk persisten, dan memberikan performa yang konsisten. Mesin tersedia dalam banyak konfigurasi termasuk ukuran yang telah ditentukan dan juga dapat dibuat dengan Jenis Mesin Kustom yang dioptimalkan untuk kebutuhan spesifik Anda.

Terakhir, mesin virtual 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 menyediakannya. 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 sehingga Anda tidak dikenai 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 seharga$300 USD.

Google Cloud Shell

Meskipun Google Cloud dan Compute Engine dapat dioperasikan dari jarak jauh dari 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 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, 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 penting nanti.

Instance dibuat menggunakan sejumlah default :

  • Zona yang Anda pilih. Semua instance berada di zona. Anda dapat memilih zona pada waktu pembuatan instance dengan menggunakan flag --zone atau menetapkan zona default (seperti yang kita lakukan pada penyiapan awal) dan menghapus flag --zone.
  • Image Debian GNU/Linux 9 (regang) terbaru. Jika menggunakan gambar kustom 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 standar 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 sedikit akses port. Karena kita akan segera menginstal Nginx - mari kita 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 blok alamat IP default 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 setelan 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 menerapkan SSH ke instance langsung dari konsol ( konsol.cloud.google.com ), dengan membukaMesin Komputasi >Instance VM, lalu mengklikSSH data.

bfbc03997a41946e.png

6. Menginstal Nginx

Login ke myinstance, instance yang baru dibuat, dan 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, 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 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 melakukan inisialisasi instance 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 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, 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 kami memiliki titik akses tunggal ke semua instance dalam sebuah 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 tersebut:

$ 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

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

Sekarang Anda 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 kita:

$ 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 membuka load balancer dari browser http://IP_ADDRESS/ dengan IP_ADDRESS adalah alamat yang ditampilkan sebagai hasil dari menjalankan perintah sebelumnya.

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

10. Membersihkan Cluster

Jangan lupa mematikan cluster Anda. Jika tidak, cluster tersebut 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 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 hal ini :

Google Kubernetes Engine

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

Kirimkan masukan Anda

  • Luangkan waktu Anda untuk menyelesaikan survei singkat kami