1. Ringkasan
Selamat datang di Codelab Google untuk menjalankan cluster sistem file Paralel Lustre di Google Cloud Platform.
Data adalah inti dari praktik Komputasi Berperforma Tinggi, dan mengakses data dalam jumlah besar dengan kecepatan yang sangat tinggi dan latensi rendah selalu menjadi tantangan utama dalam menjalankan workload HPC. Persyaratan untuk penyimpanan berperforma tinggi ini tidak berubah di cloud, dan pada kenyataannya, kemampuan untuk memanfaatkan penyimpanan dalam jumlah besar dengan cepat dan mudah menjadi sangat penting.
Pusat HPC telah lama memenuhi kebutuhan ini di lokasi dengan menggunakan teknologi seperti sistem file paralel Lustre. Lustre adalah salah satu solusi penyimpanan open source berperforma tinggi yang paling populer saat ini, dan sejak Juni 2005, solusi ini secara konsisten digunakan oleh setidaknya setengah dari sepuluh teratas, dan lebih dari 60 dari 100 superkomputer tercepat di dunia. Lustre memiliki kemampuan untuk diskalakan hingga ratusan PB kapasitas, dan memberikan performa maksimum untuk tugas HPC, dengan sistem yang memberikan throughput TB/s dalam satu namespace.
Untuk memenuhi permintaan penyimpanan, Google Cloud telah mengambil dua pendekatan. Pertama, GCP berpartner dengan DDN untuk menghadirkan software Lustre EXAScaler DDN kelas perusahaan yang didukung ke GCP Marketplace. Kedua, engineer kami di Google Cloud telah mengembangkan dan menyediakan open source serangkaian skrip untuk memudahkan konfigurasi dan deployment cluster penyimpanan Lustre di Google Compute Engine menggunakan Google Cloud Deployment Manager.
Lustre di Google Cloud Platform juga mampu memberikan performa maksimum infrastruktur tempatnya berjalan. Performanya di GCP sangat baik sehingga berada di posisi ke-8 pada benchmark sistem penyimpanan IO-500 pada tahun 2019 dengan partner kami, DDN, yang mewakili sistem file berbasis cloud dengan peringkat tertinggi di IO-500. Hari ini, kami akan memandu Anda men-deploy skrip Open Source Deployment Manager untuk Lustre. Jika Anda tertarik untuk memiliki pengalaman Lustre yang di-harden dan berskala perusahaan, dengan dukungan pakar Lustre untuk cluster Lustre Anda, serta fitur seperti GUI pengelolaan dan pemantauan atau penyesuaian Lustre, sebaiknya pelajari penawaran Marketplace DDN EXAScaler.
Yang akan Anda pelajari
- Cara menggunakan Layanan Deployment Manager GCP
- Cara mengonfigurasi dan men-deploy sistem file Lustre di GCP.
- Cara mengonfigurasi striping dan menguji I/O sederhana ke sistem file Lustre.
Prasyarat
- Akun Google Cloud Platform dan Project dengan Penagihan
- Pengalaman Linux Dasar
2. Penyiapan
Penyiapan lingkungan mandiri
Buat Proyek
Jika belum memiliki Akun Google (Gmail atau G Suite), Anda harus membuatnya. Login ke Google Cloud Platform console ( console.cloud.google.com) dan buka halaman Manage resources:
Klik Create Project.
Masukkan nama project. Ingat project ID (ditandai dengan warna merah pada screenshot di atas). Project ID harus berupa nama unik di semua project Google Cloud. Jika nama project Anda tidak unik, Google Cloud akan membuat project ID acak berdasarkan nama project.
Selanjutnya, Anda harus mengaktifkan penagihan di Developers Console untuk menggunakan resource Google Cloud.
Menjalankan codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya berjalan (lihat bagian "Kesimpulan" di akhir dokumen ini). Kalkulator harga Google Cloud Platform tersedia di sini.
Pengguna baru Google Cloud Platform memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.
Google Cloud Shell
Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini kita akan menggunakan Google Cloud Shell, yakni lingkungan command line yang berjalan di Cloud.
Meluncurkan Google Cloud Shell
Dari GCP Console, klik ikon Cloud Shell di toolbar kanan atas:
Kemudian, klik Mulai Cloud Shell:
Hanya perlu waktu beberapa saat untuk menyediakan dan terhubung ke lingkungan:
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 jaringan dan menyederhanakan autentikasi. Sebagian besar pekerjaan Anda dalam lab ini dapat dilakukan hanya dengan browser web atau Google Chromebook.
Setelah terhubung ke cloud shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke PROJECT_ID Anda:
$ gcloud auth list
Output perintah:
Credentialed accounts:
- <myaccount>@<mydomain>.com (active)
$ gcloud config list project
Output perintah:
[core]
project = <PROJECT_ID>
Jika project ID tidak ditetapkan dengan benar, Anda dapat menetapkannya dengan perintah ini:
$ gcloud config set project <PROJECT_ID>
Output perintah:
Updated property [core/project].
3. Menyiapkan dan Meninjau Konfigurasi Deployment Lustre
Mendownload Skrip Deployment Manager Lustre
Dalam sesi Cloud Shell, jalankan perintah berikut untuk meng-clone (mendownload) repositori Git yang berisi file deployment-manager Lustre untuk Google Cloud Platform:
git clone https://github.com/GoogleCloudPlatform/deploymentmanager-samples.git
Beralihlah ke direktori konfigurasi deployment Lustre dengan menjalankan perintah berikut:
cd deploymentmanager-samples/community/lustre/
Mengonfigurasi YAML Deployment Lustre
Deployment Manager menggunakan file YAML untuk menyediakan konfigurasi deployment. File YAML ini menjelaskan konfigurasi deployment, seperti versi Lustre yang akan di-deploy, dan jenis instance mesin yang akan di-deploy. File dikonfigurasi secara default untuk di-deploy di project baru tanpa penambahan kuota, tetapi Anda dapat mengubah jenis atau kapasitas mesin sesuai keinginan untuk codelab ini. Codelab ini ditulis untuk menggunakan setelan default ini, jadi jika Anda melakukan perubahan apa pun, Anda harus menerapkan perubahan tersebut di seluruh codelab ini untuk menghindari error. Dalam produksi, sebaiknya gunakan minimal instance 32 vCPU untuk node MDS, dan minimal instance 8 atau 16 vCPU untuk node OSS, bergantung pada kapasitas dan jenis penyimpanan.
Untuk meninjau atau mengedit file YAML di sesi Cloud Shell, buka file YAML konfigurasi deployment Lustre-cluster.yaml
. Anda dapat menggunakan editor command line pilihan Anda (vi, nano, emacs, dll.) atau menggunakan Editor Kode Cloud Console untuk melihat konten file:
Isi file akan terlihat seperti ini:
# [START cluster_yaml]
imports:
- path: lustre.jinja
resources:
- name: lustre
type: lustre.jinja
properties:
## Cluster Configuration
cluster_name : lustre
zone : us-central1-f
cidr : 10.20.0.0/16
external_ips : True
### Use these fields to deploy Lustre in an existing VPC, Subnet, and/or Shared VPC
#vpc_net : < VPC Network Name >
#vpc_subnet : < VPC Subnet Name >
#shared_vpc_host_proj : < Shared VPC Host Project name >
## Filesystem Configuration
fs_name : lustre
### Review https://downloads.whamcloud.com/public/ to determine version naming
lustre_version : latest-release
e2fs_version : latest
## Lustre MDS/MGS Node Configuration
#mds_node_count : 1
mds_ip_address : 10.20.0.2
mds_machine_type : n1-standard-8
### MDS/MGS Boot disk
mds_boot_disk_type : pd-standard
mds_boot_disk_size_gb : 10
### Lustre MetaData Target disk
mdt_disk_type : pd-ssd
mdt_disk_size_gb : 1000
## Lustre OSS Configuration
oss_node_count : 4
oss_ip_range_start : 10.20.0.5
oss_machine_type : n1-standard-4
### OSS Boot disk
oss_boot_disk_type : pd-standard
oss_boot_disk_size_gb : 10
### Lustre Object Storage Target disk
ost_disk_type : pd-standard
ost_disk_size_gb : 5000
# [END cluster_yaml]
Dalam file YAML ini, ada beberapa kolom. Kolom di bawah dengan tanda bintang (*) wajib diisi. Kolom ini mencakup:
Konfigurasi Cluster
- cluster_name* - Nama cluster Lustre, ditambahkan di awal semua resource yang di-deploy
- zone* - Zona tempat cluster akan di-deploy
- cidr* - Rentang IP dalam format CIDR
- external_ips* - Benar/Salah, node Lustre memiliki alamat IP eksternal. Jika salah, Cloud NAT akan disiapkan sebagai gateway NAT
- vpc_net - Tentukan kolom ini, dan kolom vpc_subnet, untuk men-deploy cluster Lustre ke VPC yang ada
- vpc_subnet - Subnet VPC yang ada untuk men-deploy cluster Lustre
- shared_vpc_host_proj - Tentukan kolom ini, serta kolom vpc_net dan vpc_subnet, untuk men-deploy cluster ke VPC Bersama
Konfigurasi sistem file
- fs_name - Nama sistem file Lustre
- lustre_version - Versi Lustre yang akan di-deploy, gunakan "latest-release" untuk men-deploy cabang terbaru dari https://downloads.whamcloud.com/public/lustre/ atau lustre-X.X.X untuk men-deploy versi lainnya
- e2fs_version - Versi E2fsprogs yang akan di-deploy, gunakan "latest" untuk men-deploy cabang terbaru dari https://downloads.whamcloud.com/public/e2fsprogs/ atau X.XX.X.wcX untuk men-deploy versi lainnya
Konfigurasi MDS/MGS
- mds_ip_address - Alamat IP Internal yang akan ditentukan untuk node MDS/MGS
- mds_machine_type - Jenis mesin yang akan digunakan untuk node MDS/MGS (lihat https://cloud.google.com/compute/docs/machine-types)
- mds_boot_disk_type - Jenis disk yang akan digunakan untuk boot disk MDS/MGS (pd-standard, pd-ssd)
- mds_boot_disk_size_gb - Ukuran boot disk MDS dalam GB
- mdt_disk_type* - Jenis disk yang akan digunakan untuk disk Target Metadata (MDT) (pd-standard, pd-ssd, local-ssd)
- mdt_disk_size_gb* - Ukuran disk MDT dalam GB
Konfigurasi OSS
- oss_node_count* - Jumlah node Server Penyimpanan Objek (OSS) yang akan dibuat
- oss_ip_range_start - Awal rentang IP untuk node OSS. Jika tidak ditentukan, gunakan penetapan IP otomatis
- oss_machine_type - Jenis mesin yang akan digunakan untuk node OSS
- oss_boot_disk_type - Jenis disk yang akan digunakan untuk disk booting OSS (pd-standard, pd-ssd)
- oss_boot_disk_size_gb - Ukuran boot disk MDS dalam GB
- ost_disk_type* - Jenis disk yang akan digunakan untuk disk Object Storage Target (OST) (pd-standard, pd-ssd, local-ssd)
- ost_disk_size_gb* - Ukuran disk OST dalam GB
4. Men-deploy dan memverifikasi konfigurasi
Men-deploy Konfigurasi
Dalam sesi Cloud Shell, jalankan perintah berikut dari folder Lustre-gcp
:
gcloud deployment-manager deployments create lustre --config lustre.yaml
Perintah ini membuat deployment bernama Lustre. Operasi ini dapat memerlukan waktu hingga 10-20 menit untuk selesai, jadi harap bersabar.
Setelah deployment selesai, Anda akan melihat output yang mirip dengan:
Create operation operation-1572410719018-5961966591cad-e25384f6-d4c905f8 completed successfully.
NAME TYPE STATE ERRORS INTENT
lustre-all-internal-firewall-rule compute.v1.firewall COMPLETED []
lustre-lustre-network compute.v1.network COMPLETED []
lustre-lustre-subnet compute.v1.subnetwork COMPLETED []
lustre-mds1 compute.v1.instance COMPLETED []
lustre-oss1 compute.v1.instance COMPLETED []
lustre-oss2 compute.v1.instance COMPLETED []
lustre-oss3 compute.v1.instance COMPLETED []
lustre-oss4 compute.v1.instance COMPLETED []
lustre-ssh-firewall-rule compute.v1.firewall COMPLETED []
Memverifikasi Deployment
Ikuti langkah-langkah berikut untuk melihat deployment di Konsol Google Cloud Platform:
- Di Cloud Platform Console, buka menu Products & Services di pojok kiri atas konsol (tiga garis horizontal).
- Klik Deployment Manager.
- Klik Lustre untuk melihat detail deployment.
- Klik Ringkasan - Lustre. Panel Deployment properties menampilkan keseluruhan konfigurasi deployment.
- Klik "Lihat" di properti Config. Panel Config menampilkan konten file YAML konfigurasi deployment yang diubah sebelumnya. Pastikan konten sudah benar sebelum melanjutkan. Jika Anda perlu mengubah konfigurasi deployment, cukup hapus deployment sesuai dengan langkah-langkah di "Membersihkan Deployment", dan mulai ulang deployment sesuai dengan langkah-langkah di "Mengonfigurasi YAML Deployment Lustre".
- (Opsional) Di bagian Lustre-cluster, klik setiap resource yang dibuat oleh template Lustre.jinja dan tinjau detailnya.
Setelah konfigurasi deployment diverifikasi, mari kita pastikan instance cluster dimulai. Di Cloud Platform Console, pada menu Products & Services, klik Compute Engine > VM Instances.
Di halaman VM Instances, tinjau lima instance virtual machine yang telah dibuat oleh pengelola deployment. Ini termasuk lustre-mds1, lustre-oss1, lustre-oss2, lustre-oss3, dan lustre-oss4.
5. Mengakses Cluster Lustre
Memantau Penginstalan
Di halaman Instance VM, klik lustre-mds1 untuk membuka halaman Detail instance.
Klik Port serial 1 (konsol) untuk membuka halaman output konsol serial. Kita akan menggunakan output serial ini untuk memantau proses penginstalan instance MDS, dan menunggu hingga skrip startup selesai. Klik tombol "refresh" di bagian atas halaman untuk memperbarui output serial. Node akan dimulai ulang sekali untuk melakukan booting ke kernel Lustre, dan menampilkan pesan yang mirip dengan di bawah ini:
Startup finished in 838ms (kernel) + 6.964s (initrd) + 49.302s (userspace) = 57.105s.
Lustre: lustre-MDT0000: Connection restored to 374e2d80-0b31-0cd7-b2bf-de35b8119534 (at 0@lo)
Ini berarti Lustre diinstal di cluster Lustre, dan sistem file siap digunakan.
Mengakses Cluster Lustre
Dalam sesi Cloud Shell, klik tombol SSH di samping instance lustre-mds1 di Konsol Google Cloud. Atau, jalankan perintah berikut di Cloud Shell, dengan mengganti <ZONE> untuk zona node lustre-mds1:
gcloud compute ssh lustre-mds1 --zone=<ZONE>
Perintah ini login ke virtual machine lustre-mds1. Ini adalah instance Server Metadata Lustre (MDS), yang juga bertindak sebagai instance Server Pengelolaan Lustre (MGS). Instance ini menangani semua permintaan autentikasi dan metadata untuk sistem file.
Mari kita pasang sistem file di instance lustre-mds1 agar dapat mengujinya nanti. Jalankan perintah berikut:
sudo mkdir /mnt/lustre sudo mount -t lustre lustre-mds1:/lustre /mnt/lustre cd /mnt/lustre
Ketiga perintah ini melakukan tiga hal. Perintah pertama membuat direktori lokal yang akan kita gunakan sebagai titik pemasangan di "/mnt/lustre". Perintah kedua menjalankan perintah "mount" untuk memasang sistem file jenis "lustre", yang berada di server lustre-mds1, dan nama sistem filenya adalah "lustre", yang terlihat sebagai "/lustre". Perintah mount memasang sistem file Lustre di direktori "/mnt/lustre" lokal Anda. Terakhir, perintah ketiga mengubah direktori ke direktori /mnt/lustre, tempat Lustre dipasang.
Anda kini telah memasang sistem file Lustre di /mnt/lustre. Mari kita lihat apa yang dapat kita lakukan dengan sistem file ini.
6. Tur Alat CLI Lustre
Jika Anda belum memahami Lustre dan alat-alatnya, kami akan menjelaskan beberapa perintah penting di sini.
Alat pengelolaan cluster level rendah Lustre adalah "lctl". Kita dapat menggunakan lctl untuk mengonfigurasi dan mengelola cluster Lustre, serta untuk melihat layanan cluster Lustre. Untuk melihat layanan dan instance di cluster Lustre baru, jalankan:
sudo lctl dl
Anda akan melihat output yang mirip dengan di bawah, bergantung pada perubahan yang Anda buat pada file konfigurasi YAML Lustre:
0 UP osd-ldiskfs lustre-MDT0000-osd lustre-MDT0000-osd_UUID 11
1 UP mgs MGS MGS 12
2 UP mgc MGC10.128.15.2@tcp 374e2d80-0b31-0cd7-b2bf-de35b8119534 4
3 UP mds MDS MDS_uuid 2
4 UP lod lustre-MDT0000-mdtlov lustre-MDT0000-mdtlov_UUID 3
5 UP mdt lustre-MDT0000 lustre-MDT0000_UUID 12
6 UP mdd lustre-MDD0000 lustre-MDD0000_UUID 3
7 UP qmt lustre-QMT0000 lustre-QMT0000_UUID 3
8 UP lwp lustre-MDT0000-lwp-MDT0000 lustre-MDT0000-lwp-MDT0000_UUID 4
9 UP osp lustre-OST0000-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
10 UP osp lustre-OST0002-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
11 UP osp lustre-OST0001-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
12 UP osp lustre-OST0003-osc-MDT0000 lustre-MDT0000-mdtlov_UUID 4
Kita dapat melihat Server Pengelolaan Lustre (MGS) sebagai item 1, Server Metadata Lustre (MDS) sebagai item 3, Target Metadata Lustre (MDT) sebagai item 5, dan empat Server Penyimpanan Objek Lustre (OSS) sebagai item 8 hingga 12. Untuk memahami layanan lainnya, tinjau Panduan Lustre.
Alat konfigurasi sistem file Lustre adalah "lfs". Kita dapat menggunakan lfs untuk mengelola striping file di Server Penyimpanan Objek Lustre (OSS) dan Target Penyimpanan Objek (OST) masing-masing, serta menjalankan operasi sistem file umum seperti find, df, dan pengelolaan kuota.
Striping memungkinkan kita mengonfigurasi cara file didistribusikan di seluruh cluster Lustre untuk memberikan performa terbaik. Meskipun striping file besar di sebanyak mungkin OSS sering kali memberikan performa terbaik dengan melakukan paralelisasi IO, striping file kecil dapat menyebabkan performa yang lebih buruk daripada jika file tersebut hanya ditulis ke satu instance.
Untuk mengujinya, mari kita siapkan dua direktori, satu dengan jumlah stripe satu OSS, dan satu dengan jumlah stripe "-1", yang menunjukkan bahwa file yang ditulis di direktori tersebut harus di-stripe di sebanyak mungkin OSS. Direktori dapat menyimpan konfigurasi striping yang diwarisi oleh file yang dibuat di dalamnya, tetapi subdirektori dan setiap file dalam direktori tersebut kemudian dapat dikonfigurasi untuk di-striping secara berbeda jika diinginkan. Untuk membuat kedua direktori ini, jalankan perintah berikut saat berada di direktori "/mnt/lustre":
sudo mkdir stripe_one sudo mkdir stripe_all sudo lfs setstripe -c 1 stripe_one/ sudo lfs setstripe -c -1 stripe_all/
Anda dapat melihat setelan stripe file atau direktori menggunakan lfs getstripe:
sudo lfs getstripe stripe_all/
Anda akan melihat output yang menampilkan jumlah stripe yang ditetapkan sebagai -1:
stripe_all/
stripe_count: -1 stripe_size: 1048576 pattern: raid0 stripe_offset: -1
Sekarang kita siap menguji peningkatan performa yang dapat dicapai dengan menulis file besar yang di-striping di beberapa OSS.
7. Menguji I/O Lustre
Kita akan menjalankan dua pengujian sederhana pada IO Lustre untuk menunjukkan kemungkinan keunggulan performa dan kemampuan penskalaan sistem file Lustre. Pertama, kita akan menjalankan pengujian sederhana menggunakan utilitas "dd" untuk menulis file 5 GB ke direktori "stripe_one". Jalankan perintah berikut:
sudo dd if=/dev/zero of=stripe_one/test bs=1M count=5000
Proses penulisan data sebesar 5 GB ke sistem file rata-rata memerlukan waktu sekitar 27 detik, dengan penulisan ke satu Persistent Disk (PD) di satu Server Penyimpanan Objek (OSS).
Untuk menguji striping di beberapa OSS, dan karenanya beberapa PD, kita hanya perlu mengubah direktori output yang kita tulis. Jalankan perintah berikut:
sudo dd if=/dev/zero of=stripe_all/test bs=1M count=5000
Perhatikan bahwa kita mengubah "of=stripe_one/test" menjadi "of=stripe_all/test". Hal ini akan memungkinkan penulisan satu aliran kami mendistribusikan penulisannya di semua Server Object Storage kami, dan menyelesaikan penulisan rata-rata dalam 5,5 detik, sekitar 4x lebih cepat dengan empat OSS.
Performa ini terus meningkat saat Anda menambahkan Server Penyimpanan Objek, dan Anda dapat menambahkan OSS dengan sistem file secara online dan mulai mengelompokkan data ke OSS tersebut untuk meningkatkan kapasitas dan performa secara online. Kemungkinannya tidak terbatas menggunakan Lustre di Google Cloud Platform, dan kami tidak sabar untuk melihat apa yang dapat Anda buat, dan masalah yang dapat Anda pecahkan.
8. Kesimpulan
Selamat, Anda telah membuat cluster Lustre di Google Cloud Platform. Anda dapat menggunakan skrip ini sebagai titik awal untuk mem-build cluster Lustre Anda sendiri, dan untuk mengintegrasikannya dengan cluster komputasi berbasis cloud.
Membersihkan Deployment
Logout dari node Lustre:
exit
Anda dapat dengan mudah membersihkan deployment setelah selesai dengan menjalankan perintah berikut dari Google Cloud Shell, setelah logout dari cluster Lustre:
gcloud deployment-manager deployments delete lustre
Saat diminta, ketik Y untuk melanjutkan. Operasi ini dapat memerlukan waktu beberapa saat, harap bersabar.
Menghapus Project
Untuk melakukan pembersihan, cukup hapus project.
- Di menu navigasi, pilih IAM & Admin
- Kemudian, klik setelan di submenu
- Klik ikon tempat sampah dengan teks "Hapus Project"
- Ikuti petunjuk perintah
Yang telah kita bahas
- Cara menggunakan Layanan Deployment Manager GCP.
- Cara mengonfigurasi dan men-deploy sistem file Lustre di GCP.
- Cara mengonfigurasi striping dan menguji I/O sederhana ke sistem file Lustre.
Menemukan Dukungan
Apakah Anda membuat sesuatu yang keren menggunakan skrip deployment manager Lustre? Ada pertanyaan? Chat dengan kami di grup diskusi Google Cloud Lustre. Untuk meminta fitur, memberikan masukan, atau melaporkan bug, gunakan formulir ini, atau jangan ragu untuk mengubah kode dan mengirimkan permintaan pull. Ingin berbicara dengan pakar Google Cloud? Hubungi tim Google Cloud sekarang melalui situs Komputasi Berperforma Tinggi Google Cloud.
Pelajari Lebih Lanjut
Masukan
Kirim masukan tentang codelab ini menggunakan link ini. Menyampaikan masukan memerlukan waktu kurang dari 5 menit. Terima kasih!