Connettiti da Compute Engine: più client

Il servizio Compute Engine supporta la creazione di più VM con il comando gcloud compute instances bulk create.

Le sezioni seguenti descrivono la procedura per creare uno script di avvio e per eseguirlo su un numero qualsiasi di VM Compute Engine.

Per istruzioni dettagliate su come creare e connetterti a una singola VM, consulta Connessione da Compute Engine: singolo client.

Autorizzazioni obbligatorie

Per creare una VM Compute Engine, devi disporre del seguente ruolo IAM:

  • Amministratore istanze Compute (v1) (roles/compute.instanceAdmin.v1). Per ulteriori informazioni, consulta la [documentazione di Compute Engine][gce-role].

Imposta le variabili di ambiente

I comandi di esempio in questo documento utilizzano le seguenti variabili di ambiente:

export SSH_USER="daos-user"
export CLIENT_PREFIX="daos-client-vm"
export NUM_CLIENTS=10

Aggiornali con i valori che preferisci.

Crea una chiave SSH

Crea una chiave SSH e salvala localmente per distribuirla alle VM client. La chiave è associata all'utente SSH specificato nelle variabili di ambiente e viene creata su ogni 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"

Ottenere i dettagli della rete di Parallelstore

Recupera gli indirizzi IP del server Parallelstore in un formato utilizzabile dall'agente daos:

export ACCESS_POINTS=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
  --location LOCATION \
  --format "value[delimiter=', '](format("{0}", accessPoints))")

Ottieni il nome della rete associata all'istanza Parallelstore:

export NETWORK=$(gcloud beta parallelstore instances describe INSTANCE_NAME \
  --location LOCATION \
  --format "value[delimiter=', '](format("{0}", network))") | awk -F '/' '{print $NF}' 

Crea lo script di avvio

Lo script di avvio è associato alla VM e viene eseguito ogni volta che viene avviato il sistema. Lo script di avvio esegue le seguenti operazioni:

  • Configura l'agente daos
  • Installa le librerie richieste
  • Monta l'istanza Parallelstore su /tmp/parallelstore/ su ogni VM

Lo script seguente funziona sulle VM con 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

Per assistenza sull'ottimizzazione dei valori di --thread-count e --eq-count, consulta la sezione Numero di thread e numero di code di eventi della pagina Considerazioni sul rendimento.

Crea le VM client

Il rendimento complessivo dei carichi di lavoro dipende dai tipi di macchine client. L'esempio seguente utilizza VM c2-standard-30; modifica il valore machine-type per aumentare le prestazioni con NIC più veloci. Per informazioni dettagliate sui tipi di macchine disponibili, consulta la guida Risorsa e confronto tra famiglie di macchine.

Per creare istanze VM collettivamente, utilizza il comando 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}

Passaggi successivi