Der Compute Engine-Dienst unterstützt das Erstellen mehrerer VMs mit dem Befehl gcloud compute instances bulk create.
In den folgenden Abschnitten wird beschrieben, wie Sie ein Startskript erstellen und auf beliebig vielen Compute Engine-VMs bereitstellen.
Eine ausführliche Anleitung zum Erstellen und Verbinden mit einer einzelnen VM finden Sie unter Verbindung von der Compute Engine herstellen: einzelner Client.
Erforderliche Berechtigungen
Sie benötigen die folgende IAM-Rolle, um eine Compute Engine-VM zu erstellen:
- „Compute-Instanzadministrator“ (Version 1) (
roles/compute.instanceAdmin.v1). Weitere Informationen finden Sie in der [Compute Engine-Dokumentation][gce-role].
Umgebungsvariablen festlegen
In den Beispielbefehlen in diesem Dokument werden die folgenden Umgebungsvariablen verwendet:
export SSH_USER="daos-user"
export CLIENT_PREFIX="daos-client-vm"
export NUM_CLIENTS=10
Aktualisieren Sie diese auf die gewünschten Werte.
SSH-Schlüssel erstellen
Erstellen Sie einen SSH-Schlüssel und speichern Sie ihn lokal, um ihn an die Client-VMs zu verteilen. Der Schlüssel wird mit dem in den Umgebungsvariablen angegebenen SSH-Nutzer verknüpft und auf jeder VM erstellt:
# 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"
Parallelstore-Netzwerkdetails abrufen
Rufen Sie die Parallelstore-Server-IP-Adressen in einem Format ab, das vom daos-Agenten verwendet werden kann:
export ACCESS_POINTS=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
--location LOCATION \
--format "value[delimiter=', '](format("{0}", accessPoints))")
Rufen Sie den Netzwerknamen ab, der mit der Parallelstore-Instanz verknüpft ist:
export NETWORK=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
--location LOCATION \
--format "value[delimiter=', '](format("{0}", network))") | awk -F '/' '{print $NF}'
Startskript erstellen
Das Startskript ist mit der VM verknüpft und wird bei jedem Systemstart ausgeführt. Das Startskript führt Folgendes aus:
- Konfiguriert den daos-Agent
- Erforderliche Bibliotheken werden installiert.
- Parallelstore-Instanz auf jeder VM auf
/tmp/parallelstore/bereitstellen
Das folgende Script funktioniert auf VMs mit 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
Informationen zur Optimierung der Werte für --thread-count und --eq-count finden Sie auf der Seite Leistungsaspekte im Abschnitt Anzahl der Threads und der Ereigniswarteschlange.
Client-VMs erstellen
Die Gesamtleistung Ihrer Arbeitslasten hängt von den Clientmaschinentypen ab.
Im folgenden Beispiel werden c2-standard-30 VMs verwendet. Ändern Sie den Wert machine-type, um die Leistung mit schnelleren NICs zu steigern. Weitere Informationen zu den verfügbaren Maschinentypen finden Sie im Leitfaden zu Ressourcen und Vergleichen für Maschinenfamilien.
Wenn Sie VM-Instanzen im Bulk erstellen möchten, verwenden Sie den Befehl 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}