Von Compute Engine aus verbinden: mehrere Clients

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}

Nächste Schritte