Se connecter depuis Compute Engine: plusieurs clients

Le service Compute Engine permet de créer plusieurs VM avec la commande gcloud compute instances bulk create.

Les sections suivantes décrivent le processus de création d'un script de démarrage et de son déploiement sur un nombre illimité de VM Compute Engine.

Pour obtenir des instructions détaillées sur la création et la connexion à une seule VM, consultez la section Se connecter depuis Compute Engine: client unique.

Autorisations requises

Vous devez disposer du rôle IAM suivant pour créer une VM Compute Engine:

  • Administrateur d'instances Compute (v1) (roles/compute.instanceAdmin.v1). Pour en savoir plus, consultez la [documentation Compute Engine][gce-role].

Définir des variables d'environnement

Les variables d'environnement suivantes sont utilisées dans les exemples de commandes de ce document:

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

Remplacez-les par les valeurs souhaitées.

Créer une clé SSH

Créez une clé SSH et enregistrez-la localement pour la distribuer aux VM clientes. La clé est associée à l'utilisateur SSH spécifié dans les variables d'environnement et est créée sur chaque 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"

Obtenir les détails du réseau Parallelstore

Obtenez les adresses IP des serveurs Parallelstore dans un format utilisable par l'agent daos:

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

Obtenez le nom du réseau associé à l'instance Parallelstore:

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

Créer le script de démarrage

Le script de démarrage est associé à la VM et s'exécute à chaque démarrage du système. Le script de démarrage effectue les opérations suivantes:

  • Configure l'agent daos
  • Installe les bibliothèques requises
  • Installe votre instance Parallelstore sur /tmp/parallelstore/ sur chaque VM.

Le script suivant fonctionne sur les VM exécutant 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

Pour obtenir de l'aide pour optimiser les valeurs de --thread-count et --eq-count, consultez la section Nombre de threads et de files d'attente d'événements de la page Considérations sur les performances.

Créer les VM clientes

Les performances globales de vos charges de travail dépendent des types de machines clientes. L'exemple suivant utilise des VM c2-standard-30. Modifiez la valeur machine-type pour améliorer les performances avec des NIC plus rapides. Pour en savoir plus sur les types de machines disponibles, consultez le Guide des ressources de familles de machines et guide comparatif.

Pour créer des instances de VM de manière groupée, utilisez la commande 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}

Étape suivante