Dokumen ini menjelaskan praktik terbaik untuk mendesain sistem yang tangguh di Compute Engine. Kursus ini memberikan saran umum dan mencakup beberapa fitur di Compute Engine yang dapat membantu mengurangi periode nonaktif instance dan mempersiapkan saat instance virtual machine (VM) Anda gagal secara tidak terduga.
Sistem tangguh adalah sistem yang dapat menahan sejumlah kegagalan atau gangguan tertentu tanpa mengganggu layanan Anda atau memengaruhi pengalaman pengguna menggunakan layanan Anda. Meskipun Compute Engine melakukan segala upaya untuk mencegah gangguan tersebut, peristiwa tertentu tidak dapat diprediksi, dan sebaiknya Anda bersiap menghadapi peristiwa ini.
Jenis kegagalan
Pada titik tertentu, satu atau beberapa VM Anda mungkin hilang karena kegagalan sistem atau hardware. Daftar berikut berisi beberapa jenis skenario kegagalan yang dapat Anda kurangi:
Kegagalan VM tunggal yang tidak terduga
Kegagalan VM tunggal yang tidak terduga dapat disebabkan oleh kegagalan hardware atau sistem. Anda dapat mengurangi peristiwa ini dengan menggunakan persistent disk dan skrip startup untuk menyimpan data Anda dan mengaktifkan kembali software setelah memulai ulang VM.
Mulai ulang VM tunggal yang tidak terduga
Pada waktu tertentu, Anda mungkin mengalami kegagalan atau mulai ulang VM tunggal yang tidak terduga. Tidak seperti kegagalan VM tunggal yang tidak terduga, Compute Engine akan otomatis memulai ulang VM Anda setelah gagal. Untuk membantu mengurangi peristiwa ini, cadangkan data Anda, gunakan persistent disk, dan gunakan skrip startup untuk mengonfigurasi ulang software dengan cepat.
Kegagalan zona atau region
Kegagalan zona dan region adalah kegagalan langka yang dapat menyebabkan semua VM di zona atau region tertentu tidak dapat diakses atau gagal. Untuk mengurangi kegagalan ini, buat keberagaman di seluruh region dan zona dan terapkan load balancing. Anda juga harus mencadangkan data atau mereplikasi persistent disk di beberapa zona.
Tips untuk mendesain sistem yang tangguh
Untuk membantu mengurangi kegagalan VM, desain aplikasi Anda agar tahan terhadap kegagalan, gangguan jaringan, dan bencana tak terduga. Sistem yang tangguh menangani kegagalan dengan baik, misalnya, dengan mengalihkan traffic dari VM yang tidak dapat diakses ke VM live atau dengan mengotomatiskan tugas saat mulai ulang.
Berikut beberapa tips umum untuk membantu Anda mendesain sistem yang tangguh terhadap kegagalan.
Gunakan migrasi langsung
Google secara berkala melakukan pemeliharaan pada infrastrukturnya dengan melakukan patch sistem melalui software terbaru, melakukan pengujian rutin dan pemeliharaan pencegahan, serta secara umum memastikan bahwa infrastrukturnya aman, cepat, dan efisien. Compute Engine menggunakan migrasi langsung untuk memastikan bahwa pemeliharaan infrastruktur ini bersifat transparan secara default di VM Anda.
Migrasi langsung adalah teknologi yang memindahkan VM yang berjalan dari sistem yang akan menjalani pekerjaan pemeliharaan. Compute Engine melakukannya secara otomatis.
Selama migrasi langsung, VM Anda mungkin mengalami penurunan performa dalam waktu singkat. Untuk VM yang meminta performa maksimum dan konstan, Anda dapat menggunakan konfigurasi dengan menghentikan dan memulai ulang pada host yang tidak terlibat dalam peristiwa pemeliharaan. Opsi ini cocok untuk keseluruhan aplikasi yang juga dibuat untuk menangani kegagalan atau mulai ulang VM.
Jika ingin mengonfigurasi VM untuk migrasi langsung atau mengonfigurasinya untuk memulai ulang, bukan bermigrasi, baca bagian Menetapkan opsi penjadwalan instance.
Distribusikan VM Anda
Buat VM di lebih dari satu region dan zona, sehingga Anda memiliki VM alternatif untuk diarahkan jika satu zona atau region yang berisi salah satu VM Anda mengalami gangguan. Jika semua VM Anda dihosting di zona atau region yang sama, Anda tidak akan dapat mengakses VM tersebut jika zona atau region tersebut menjadi tidak dapat dijangkau.
Gunakan nama DNS internal khusus zona
Tetapkan jenis DNS internal default untuk project atau organisasi Anda ke DNS zona. Dalam aplikasi Anda, gunakan nama DNS zona saat mengakses VM lain. Server DNS internal didistribusikan di semua zona, sehingga Anda dapat mengandalkan nama DNS zona untuk menyelesaikan masalah ini meskipun terjadi kegagalan di lokasi lain.
DNS global kurang tangguh, karena kegagalan titik tunggal. DNS Zona mengurangi risiko pemadaman layanan lintas-regional. DNS zona tidak memerlukan keunikan nama VM di semua region dalam project, sehingga memungkinkan pembuatan VM yang lebih cepat.
Untuk memeriksa apakah VM menggunakan nama DNS zona atau nama DNS global, lihat Menentukan nama DNS internal untuk instance VM.
Jika project menggunakan nama DNS global, Anda dapat beralih untuk menggunakan nama DNS zona. Untuk mengetahui informasi selengkapnya, lihat Bermigrasi ke nama DNS zona.
Buat grup VM
Gunakan grup instance terkelola untuk membuat grup VM yang homogen, sehingga load balancer dapat mengarahkan traffic ke lebih dari satu VM jika satu VM tidak responsif.
Grup instance terkelola (MIG) juga menawarkan fitur seperti penskalaan otomatis dan autohealing. Dengan penskalaan otomatis, Anda dapat menangani lonjakan traffic dengan meningkatkan atau menurunkan jumlah VM berdasarkan sinyal tertentu. Autohealing menjalankan health check dan, jika perlu, secara otomatis membuat ulang VM yang tidak responsif.
MIG juga tersedia untuk region, sehingga Anda dapat membuat grup VM yang didistribusikan di beberapa zona dalam satu region. Untuk informasi selengkapnya, lihat Membuat dan mengelola MIG regional.
Gunakan load balancing
Google Cloud menawarkan layanan load balancing yang membantu Anda mendukung periode traffic tinggi sehingga VM tidak kelebihan beban. Dengan Cloud Load Balancing, Anda dapat melakukan hal berikut:
Deploy aplikasi Anda di VM dalam beberapa zona menggunakan MIG regional. Kemudian, Anda dapat mengonfigurasi aturan penerusan yang dapat menyebarkan traffic di semua VM di semua zona dalam region tersebut. Setiap aturan penerusan dapat menentukan satu titik entri ke aplikasi Anda menggunakan alamat IP eksternal.
Deploy VM di beberapa region menggunakan load balancing global. Melalui load balancing HTTP(S), traffic Anda dapat masuk ke sistem Google Cloud di lokasi yang paling dekat dengan klien. Load balancing lintas regional memberikan redundansi, sehingga jika suatu region tidak dapat dijangkau, traffic akan otomatis dialihkan ke region lain. Dengan cara ini, layanan Anda tetap dapat dijangkau menggunakan alamat IP eksternal yang sama.
Gunakan penskalaan otomatis untuk menambahkan atau menghapus VM secara otomatis dari MIG berdasarkan peningkatan atau penurunan beban.
Selain itu, Cloud Load Balancing menawarkan health check VM, yang memberikan dukungan dalam mendeteksi dan menangani kegagalan VM.
Gunakan skrip startup dan shutdown
Compute Engine menawarkan skrip startup dan shutdown yang berjalan saat VM melakukan booting atau dimatikan. Skrip startup dan shutdown dapat mengotomatiskan tugas seperti menginstal software, menjalankan update, membuat pencadangan, dan logging data.
Skrip startup dan shutdown adalah cara yang efisien dan sangat berharga untuk mem-bootstrap atau mematikan VM Anda dengan bersih. Daripada mengonfigurasi VM menggunakan image kustom, sebaiknya konfigurasi VM menggunakan skrip startup.
Skrip startup berjalan setiap kali VM dimulai ulang karena terjadi kegagalan, dan dapat digunakan untuk menginstal software serta update. Anda juga dapat menggunakan skrip startup untuk memastikan bahwa layanan berjalan di dalam VM. Mengkodekan perubahan untuk mengonfigurasi VM dalam skrip startup sering kali lebih mudah daripada mencoba mengetahui file atau byte apa yang telah berubah pada image kustom.
Skrip shutdown berjalan saat VM Anda dimatikan, baik sengaja maupun tidak. Fungsi ini dapat melakukan tugas mendadak seperti mencadangkan data, menyimpan log, dan menutup koneksi dengan baik sebelum Anda menghentikan VM.
Untuk mengetahui informasi selengkapnya, lihat Menjalankan skrip startup dan Menjalankan skrip shutdown.
Mencadangkan data Anda
Cadangkan data Anda secara rutin dan di beberapa lokasi. Anda dapat mengupload file ke Cloud Storage, membuat snapshot persistent disk, atau mereplikasi data ke persistent disk di region atau zona lain.