Menghubungkan dari Compute Engine: beberapa klien

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}

Langkah berikutnya