Layanan Compute Engine mendukung pembuatan beberapa VM dengan
perintah gcloud compute instances bulk create
.
Bagian berikut menjelaskan proses pembuatan skrip startup dan men-deploy-nya ke sejumlah VM Compute Engine.
Untuk petunjuk mendetail tentang cara membuat dan terhubung ke satu VM, lihat Menghubungkan dari Compute Engine: satu klien.
Izin yang diperlukan
Anda harus memiliki peran IAM berikut untuk membuat VM Compute Engine:
- Compute Instance Admin (v1) (
roles/compute.instanceAdmin.v1
). Untuk mengetahui informasi selengkapnya, lihat [dokumentasi Compute Engine][gce-role].
Menetapkan variabel lingkungan
Variabel lingkungan berikut digunakan dalam contoh perintah dalam dokumen ini:
export SSH_USER="daos-user"
export CLIENT_PREFIX="daos-client-vm"
export NUM_CLIENTS=10
Perbarui nilai ini ke nilai yang Anda inginkan.
Membuat kunci SSH
Buat kunci SSH dan simpan secara lokal untuk didistribusikan ke VM klien. Kunci ini dikaitkan dengan pengguna SSH yang ditentukan dalam variabel lingkungan, dan dibuat di setiap VM:
# Generate an SSH key for the specified user
ssh-keygen -t rsa -b 4096 -C "${SSH_USER}" -N '' -f "./id_rsa"
chmod 600 "./id_rsa"
# Create a new file in the format [user]:[public key] user
echo "${SSH_USER}:$(cat "./id_rsa.pub") ${SSH_USER}" > "./keys.txt"
Mendapatkan detail jaringan Parallelstore
Dapatkan alamat IP server Parallelstore dalam format yang dapat digunakan oleh agen daos:
export ACCESS_POINTS=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
--location LOCATION \
--format "value[delimiter=', '](format("{0}", accessPoints))")
Dapatkan nama jaringan yang terkait dengan instance Parallelstore:
export NETWORK=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
--location LOCATION \
--format "value[delimiter=', '](format("{0}", network))") | awk -F '/' '{print $NF}'
Membuat skrip startup
Skrip startup dilampirkan ke VM dan dijalankan setiap kali sistem dimulai. Skrip startup akan melakukan hal berikut:
- Mengonfigurasi agen daos
- Menginstal library yang diperlukan
- Memasang instance Parallelstore ke
/tmp/parallelstore/
di setiap VM
Skrip berikut berfungsi di VM yang menjalankan HPC Rocky 8.
# Create a startup script that configures the VM
cat > ./startup-script << EOF
sudo tee /etc/yum.repos.d/parallelstore-v2-6-el8.repo << INNEREOF
[parallelstore-v2-6-el8]
name=Parallelstore EL8 v2.6
baseurl=https://us-central1-yum.pkg.dev/projects/parallelstore-packages/v2-6-el8
enabled=1
repo_gpgcheck=0
gpgcheck=0
INNEREOF
sudo dnf makecache
# Install daos-client
dnf install -y epel-release # needed for capstone
dnf install -y daos-client
# Upgrade libfabric
dnf upgrade -y libfabric
systemctl stop daos_agent
mkdir -p /etc/daos
cat > /etc/daos/daos_agent.yml << INNEREOF
access_points: ${ACCESS_POINTS}
transport_config:
allow_insecure: true
fabric_ifaces:
- numa_node: 0
devices:
- iface: eth0
domain: eth0
INNEREOF
echo -e "Host *\n\tStrictHostKeyChecking no\n\tUserKnownHostsFile /dev/null" > /home/${SSH_USER}/.ssh/config
chmod 600 /home/${SSH_USER}/.ssh/config
usermod -u 2000 ${SSH_USER}
groupmod -g 2000 ${SSH_USER}
chown -R ${SSH_USER}:${SSH_USER} /home/${SSH_USER}
chown -R daos_agent:daos_agent /etc/daos/
systemctl enable daos_agent
systemctl start daos_agent
mkdir -p /tmp/parallelstore
dfuse -m /tmp/parallelstore --pool default-pool --container default-container --disable-wb-cache --thread-count=16 --eq-count=8 --multi-user
chmod 777 /tmp/parallelstore
EOF
Untuk mendapatkan bantuan dalam mengoptimalkan nilai --thread-count
dan --eq-count
, lihat
bagian Jumlah thread dan jumlah antrean peristiwa di
halaman Pertimbangan performa.
Membuat VM klien
Performa keseluruhan workload Anda bergantung pada jenis mesin klien.
Contoh berikut menggunakan VM c2-standard-30
; ubah nilai machine-type
untuk meningkatkan performa dengan NIC yang lebih cepat. Lihat
Panduan perbandingan dan resource kelompok mesin untuk mengetahui detail
jenis mesin yang tersedia.
Untuk membuat instance VM secara massal, gunakan perintah gcloud compute instances bulk create
:
gcloud compute instances bulk create \
--name-pattern="${CLIENT_PREFIX}-####" \
--zone="LOCATION" \
--machine-type="c2-standard-30" \
--network-interface=subnet=${NETWORK},nic-type=GVNIC \
--network-performance-configs=total-egress-bandwidth-tier=TIER_1 \
--create-disk=auto-delete=yes,boot=yes,device-name=client-vm1,image=projects/cloud-hpc-image-public/global/images/hpc-rocky-linux-8-v20240126,mode=rw,size=100,type=pd-balanced \
--metadata=enable-oslogin=FALSE \
--metadata-from-file=ssh-keys=./keys.txt,startup-script=./startup-script \
--count ${NUM_CLIENTS}