GNU/Linux >> Tutoriels Linux >  >> Linux

Cluster de calcul haute performance dans un environnement cloud

Le calcul haute performance (HPC) permet aux scientifiques et aux chercheurs de résoudre des problèmes complexes nécessitant de nombreuses capacités de calcul. HPC utilise généralement une interface de transmission de messages (MPI) pour communiquer entre différents nœuds.

HPC dans le cloud

Actuellement, la plupart des projets nécessitant HPC s'exécutent toujours sur des systèmes UNIX® hérités. La migration de ces projets vers une installation basée sur le cloud est très simple et ne nécessite pas beaucoup de configuration supplémentaire. Ce didacticiel construit un cluster HPC avec Open MPI sur le Rackspace Cloud et exécute une application Open MPI au-dessus du cluster. À la fin de ce didacticiel, vous saurez comment tirer parti du cloud pour créer et faire évoluer rapidement un cluster HPC pour le traitement des données en temps réel tout en supprimant la dépendance à l'infrastructure physique.

Ouvrir MPI

Pour obtenir un clustering hautes performances dans le cloud, vous pouvez utiliser OpenMPI, qui est un projet MPI (Message Passing Interface). Il fournit le traitement parallèle, la sécurité et la concurrence des threads, la création de processus dynamiques et la tolérance au réseau et aux pannes. Les super ordinateurs les plus rapides du monde utilisent cette bibliothèque, et la bibliothèque alimente de nombreux pétaflops. Pour en savoir plus sur la bibliothèque Open MPI, rendez-vous sur leur site.

Objectif

Ce tutoriel vous montre comment créer un cluster HPC à l'aide des outils suivants :

  • Quatre serveurs cloud Rackspace
  • Ouvrir MPI

Le didacticiel configure un cluster à quatre nœuds, y exécute une application et évalue les performances, comme illustré dans l'image suivante :

Figure 1 - HPC sur l'architecture de haut niveau du cloud

Prérequis

Vous avez besoin des trois éléments suivants pour réussir ce didacticiel :

  • Un compte Rackspace Cloud.
  • Un client Secure Shell (SSH). Les utilisateurs Windows® peuvent utiliser PuTTY.
  • Une connaissance de base de Linux® et d'Open MPI.

Tutoriel

Le didacticiel couvre les tâches suivantes :

  1. Créer un serveur cloud.
  2. Installez Open MPI.
  3. Activer le clustering.
  4. Configurer HPC.
  5. Créer et déployer une image de serveur cloud.
  6. Installez et exécutez un exemple d'application compatible Open MPI.

Créer un serveur cloud

Connectez-vous au Cloud Control Panel et créez un Serveur Cloud à partir de l'interface Web avec les attributs suivants :

  • Nom du serveur :votrenom-HPC-node-01
  • Région :Dallas (DFW)
  • Image (Rackspace) :Ubuntu 12.04 LTS (Precise Pangolin)
  • Taille :2 Go de RAM ou supérieur

Cliquez sur Créer un serveur et le processus de construction du serveur cloud commence. Pendant la construction, une fenêtre contextuelle affiche votre mot de passe Cloud Server. Enregistrez le mot de passe pour référence future. Fermez la fenêtre contextuelle et attendez que la construction du serveur soit terminée. Une fois l'adresse IP du nouveau serveur disponible, enregistrez-la.

Installer Open MPI

Une fois que le serveur a terminé sa construction et qu'il est en Disponible statut, SSH dans le serveur et connectez-vous en utilisant l'adresse IP et le mot de passe que vous avez enregistrés précédemment.

ssh root@<Your Server IP>

Après vous être connecté, exécutez les commandes suivantes pour installer Open MPI :

apt-get update
apt-get install build-essential -y
apt-get install openmpi-bin openmpi-checkpoint openmpi-common openmpi-doc libopenmpi-dev -y

Activer le clustering

Open MPI facilite la communication entre les nœuds en utilisant SSH, vous devez donc activer les connexions basées sur les clés pour SSH.

Pour cela, exécutez les commandes suivantes :

chmod 700 ~/.ssh
echo "StrictHostKeyChecking no" >> /etc/ssh/ssh_config
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -C "Open MPI"

La sortie de ces commandes doit ressembler à l'exemple suivant :

Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
35:85:97:3c:98:89:8d:bc:58:96:97:41:ad:0b:a6:c8 Enter an optional comment about your key
The key's randomart image is:
+--[ RSA 2048]----+
|       . *oX..   |
|        B O.*    |
|       + ooo .   |
|      . +...     |
|   . . oS. .     |
|    E .   .      |
|                 |
|                 |
|                 |
+-----------------+

Remarque : Vous êtes invité à saisir une phrase de passe au cours de ce processus. Laissez-le vide.

Exécutez les commandes suivantes pour copier la clé dans le dossier de clé autorisé et modifier les autorisations pour autoriser les connexions SSH :

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Configurer HPC

Configurez maintenant le nœud HPC principal en créant un fichier hôte. Pour ce faire, assurez-vous que vous êtes connecté au premier nœud via SSH et créez le fichier suivant, où <Your Server IP> est l'adresse IP que vous avez utilisée pour vous connecter en SSH à la machine :

cd ~/
echo <Your Server IP> >> mpi_hosts

Pour vérifier le fichier, exécutez la commande suivante :

cat mpi_hosts

Vous devriez voir le résultat suivant :

<Your Server IP>

Pour vérifier votre configuration, utilisez hello_c.c à partir des exemples inclus avecOpen MPI.

Pour ce faire, suivez ces commandes :

mkdir /root/samples
cd /root/samples
wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/hello_c.c
mpicc hello_c.c -o hello
mpirun ./hello

Cela devrait afficher le résultat suivant :

Hello, world, I am 0 of 1

Maintenant que cela fonctionne, exécutez les commandes suivantes pour tester la connectivité :

wget https://svn.open-mpi.org/svn/ompi/tags/v1.6-series/v1.6.4/examples/connectivity_c.c
mpicc connectivity_c.c -o connectivity
mpirun ./connectivity

Vous devriez voir le résultat suivant :

Connectivity test on 1 processes PASSED.

Cela confirme que le premier nœud est en ligne et opérationnel.

Créer et déployer une image de serveur cloud

Une fois le premier nœud créé, vous êtes prêt à configurer un cluster. Pour commencer, faites des copies du nœud que vous venez de créer. Suivez ces étapes pour créer une image :

  1. Connectez-vous au panneau de configuration du cloud.
  2. Dans la barre de navigation supérieure, cliquez sur Sélectionner un produit > Rackspace Cloud .
  3. Sélectionnez Serveurs> Serveurs Cloud .
  4. Dans la liste des serveurs, sélectionnez le serveur que vous avez créé pour le premier nœud.
  5. Cliquez sur les Actions menu déroulant.
  6. Cliquez sur Créer une image .
  7. Lorsque vous y êtes invité, indiquez un nom significatif.
  8. Enfin, cliquez sur Créer une image et attendez quelques minutes que l'image soit créée.

Une fois l'image créée, déployez un nouveau Serveur Cloud en utilisant la procédure précédente avec l'exception suivante :lorsque vous êtes invité à saisir l'image, cliquez sur Enregistré et sélectionnez votre image.Encore une fois, fournissez un nom de serveur significatif et enregistrez le mot de passe et l'adresse IP du nouveau serveur.

Pour ajouter le nouveau nœud au cluster, exécutez les commandes suivantes (en supposant que l'IP de votre nouveau serveur est 10.20.30.40 et l'IP/hostname de votre premier serveur est <Your Server IP> ):

SSH to your first server
cd ~/
cat >> mpi_hosts <<EOF
10.20.30.40
EOF

Maintenant, votre fichier hôte devrait ressembler à l'exemple suivant :

<Your Server IP>
10.20.30.40

Pour tester la connectivité entre les nœuds, exécutez la commande suivante :

mpirun -v -np 2 --hostfile ~/mpi_hosts /root/samples/connectivity

Si vous n'obtenez aucune erreur, vous venez de créer et de tester avec succès votre propre cluster cloud. Pour augmenter la taille du cluster, ajoutez deux nœuds supplémentaires en utilisant la même procédure.

Pour tester la connectivité au sein du cluster à quatre nœuds, exécutez la commande suivante :

mpirun -v -np 4 --hostfile ~/mpi_hosts /root/samples/connectivity

Installer et exécuter un exemple d'application compatible Open MPI

Maintenant que vous avez un cluster Open MPI, vérifiez ses performances. Utilisez une application de traçage simple qui peut s'exécuter sur un nœud unique ou sur un cluster Open MPI pour comparer les performances.

Tout d'abord, installez l'application sur tous les nœuds du cluster. Pour ce faire, connectez-vous en SSH au nœud principal et exécutez la commande suivante :

for i in `cat mpi_hosts`; do ssh root@$i "curl -l https://openstack.prov12n.com/files/tachyon.sh | bash"; done
cd ~/tachyon/compile/linux-mpi

Le système de traçage de rayons parallèle/multiprocesseur Tachyon est livré avec plusieurs exemples de fichiers de données dans les scènes dossier, que vous pouvez utiliser pour exécuter vos tests. Commencez par exécuter le test sur un nœud à l'aide de la commande suivante :

cd ~/tachyon/compile/linux-mpi
./tachyon ../../scenes/teapot.dat

Vous devriez voir le résultat suivant :

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0221 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0052 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     2.1399 seconds
    Image I/O Time:     0.0174 seconds

Exécutez la commande suivante et notez le temps de lancer de rayons afin de pouvoir le comparer à votre exécution parallèle :

mpirun -np 4 --hostfile ~/mpi_hosts ./tachyon ../../scenes/teapot.dat -format BMP

Vous devriez voir le résultat suivant :

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0230 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0052 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     0.6048 seconds
    Image I/O Time:     0.0182 seconds

Votre cluster se compose de quatre nœuds et d'un processeur pour chacun. Par conséquent, l'amélioration des performances est presque quatre fois supérieure. Vous devriez voir des améliorations significatives même si vous n'avez pas plusieurs nœuds et exécutez plutôt votre application sur un seul nœud avec OpenMPI en utilisant les deux processeurs.

Il est important que vous ayez créé votre serveur avec au moins 2 Go de RAM car les tailles de 2 Go et plus ont accès à au moins 2 CPU. Pour plus d'informations sur les tailles, voir Serveurs Cloud.

Exécutez la commande suivante pour exécuter ce code sur plusieurs processeurs d'un même serveur :

mpirun -np 2 ./tachyon ../../scenes/teapot.dat -format BMP

Vous devriez voir le résultat suivant :

Tachyon Parallel/Multiprocessor Ray Tracer   Version 0.99
Copyright 1994-2011,    John E. Stone <[email protected]>
------------------------------------------------------------
Scene Parsing Time:     0.0222 seconds
Scene contains 2330 objects.
Preprocessing Time:     0.0050 seconds
Rendering Progress:       100% complete
  Ray Tracing Time:     1.0888 seconds
    Image I/O Time:     0.0181 seconds

Notez que même lors de l'exécution sur un seul nœud mais en utilisant Open MPI, les performances ont presque doublé. Pour en savoir plus sur cette application de lancer de rayons, visitez https://jedi.ks.uiuc.edu/~johns/raytracer/.

Résumé

Dans ce didacticiel, vous avez appris à créer et à imager des serveurs cloud. Vous avez également appris à configurer un cluster HPC à l'aide d'Open MPI. Après avoir installé et configuré le cluster, vous avez installé une petite application de lancer de rayons pour démontrer les avantages de l'utilisation de plusieurs nœuds au lieu d'un nœud.


Linux
  1. HPL (High Performance Linpack) :Benchmark des Raspberry PI

  2. 10 pépites du Cloud Computing Stats 2015

  3. Qu'est-ce qui fait du cloud computing une technologie aussi puissante ?

  4. Résoudre les problèmes de sécurité du cloud computing avec le cloud privé

  5. Le cloud privé est RAD :comment tirer parti du cloud privé pour le développement rapide d'applications

Comment configurer le cluster Kubernetes sur Google Cloud Platform (GCP)

Comment déployer un cluster tolérant aux pannes avec une disponibilité continue ou élevée

Comment configurer un cluster Pacemaker pour Linux haute disponibilité

Comment déployer WordPress sur Jelastic Cloud

Comment installer et configurer NGINX et PHP sur Jelastic Cloud

Comment déployer un conteneur Docker sur Jelastic Cloud