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}