GNU/Linux >> Tutoriels Linux >  >> Linux

Construire un système HPC basé sur Linux sur le Raspberry Pi avec Ansible

Dans mon article précédent pour Opensource.com, j'ai présenté le projet OpenHPC , qui vise à accélérer l'innovation dans le calcul haute performance (HPC). Cet article va plus loin en utilisant les capacités d'OpenHPC pour créer un petit système HPC. Pour l'appeler un système HPC peut sembler plus gros qu'il ne l'est, alors peut-être est-il préférable de dire qu'il s'agit d'un système basé sur les recettes de construction de clusters publiées par le projet OpenHPC.

Le cluster résultant se compose de deux systèmes Raspberry Pi 3 agissant en tant que nœuds de calcul et d'une machine virtuelle agissant en tant que nœud maître :

Mon nœud maître exécute CentOS sur x86_64 et mes nœuds de calcul exécutent un CentOS légèrement modifié sur aarch64.

Voici à quoi ressemble la configuration dans la vraie vie :

Pour configurer mon système comme un système HPC, j'ai suivi certaines des étapes du guide d'installation OpenHPC Cluster Building Recipes pour CentOS 7.4/aarch64 + Warewulf + Slurm (PDF). Cette recette comprend des instructions d'approvisionnement à l'aide de Warewulf ; Comme j'ai installé manuellement mes trois systèmes, j'ai ignoré les parties Warewulf et créé un playbook Ansible pour les étapes que j'ai suivies.

Conteneurs Linux

  • Que sont les conteneurs Linux ?
  • Une introduction à la terminologie des conteneurs
  • Télécharger :Introduction aux conteneurs
  • Opérateurs Kubernetes :automatisation de la plate-forme d'orchestration de conteneurs
  • eBook :Modèles Kubernetes pour la conception d'applications cloud natives
  • Qu'est-ce que Kubernetes ?

Une fois mon cluster configuré par les playbooks Ansible, j'ai pu commencer à soumettre des travaux à mon gestionnaire de ressources. Le gestionnaire de ressources, Slurm dans mon cas, est l'instance du cluster qui décide où et quand mes tâches sont exécutées. Une possibilité pour démarrer une tâche simple sur le cluster est :

[ohpc@centos01 ~]$ srun hostname
calvin

Si j'ai besoin de plus de ressources, je peux dire à Slurm que je veux exécuter ma commande sur huit CPU :

[ohpc@centos01 ~]$ srun -n 8 hostname
hobbes
hobbes
hobbes
hobbes
calvin
calvin
calvin
calvin

Dans le premier exemple, Slurm a exécuté la commande spécifiée (hostname ) sur un seul processeur, et dans le deuxième exemple, Slurm a exécuté la commande sur huit processeurs. L'un de mes nœuds de calcul s'appelle calvin et l'autre s'appelle hobbes; qui peut être vu dans la sortie des commandes ci-dessus. Chacun des nœuds de calcul est un Raspberry Pi 3 avec quatre cœurs de processeur.

Une autre façon de soumettre des travaux à mon cluster est la commande sbatch , qui peut être utilisé pour exécuter des scripts avec la sortie écrite dans un fichier au lieu de mon terminal.

[ohpc@centos01 ~]$ cat script1.sh
#!/bin/sh
date
hostname
sleep 10
date
[ohpc@centos01 ~]$ sbatch script1.sh
Submitted batch job 101

Cela créera un fichier de sortie appelé slurm-101.out avec le contenu suivant :

Mon 11 Dec 16:42:31 UTC 2017
calvin
Mon 11 Dec 16:42:41 UTC 2017

Pour démontrer les fonctionnalités de base du gestionnaire de ressources, des outils de ligne de commande simples et en série conviennent, mais un peu ennuyeux après avoir effectué tout le travail de configuration d'un système de type HPC.

Une application plus intéressante exécute une tâche parallélisée Open MPI sur tous les processeurs disponibles sur le cluster. J'utilise une application basée sur Game of Life, qui a été utilisée dans une vidéo intitulée "Running Game of Life sur plusieurs architectures avec Red Hat Enterprise Linux". En plus de l'implémentation Game of Life basée sur MPI précédemment utilisée, la version en cours d'exécution sur mon cluster colore différemment les cellules de chaque hôte impliqué. Le script suivant démarre l'application de manière interactive avec une sortie graphique :

$ cat life.mpi
#!/bin/bash

module load gnu6 openmpi3

if [[ "$SLURM_PROCID" != "0" ]]; then
    exit
fi

mpirun ./mpi_life -a -p -b

Je démarre le travail avec la commande suivante, qui indique à Slurm d'allouer huit processeurs pour le travail :

$ srun -n 8 --x11 life.mpi

À des fins de démonstration, le travail dispose d'une interface graphique qui affiche le résultat actuel du calcul :

La position des cellules rouges est calculée sur l'un des nœuds de calcul, et les cellules vertes sont calculées sur l'autre nœud de calcul. Je peux également dire au programme Game of Life de colorer la cellule pour chaque processeur utilisé (il y en a quatre par nœud de calcul) différemment, ce qui conduit au résultat suivant :

Grâce aux recettes d'installation et aux packages logiciels fournis par OpenHPC, j'ai pu mettre en place deux nœuds de calcul et un nœud maître dans une configuration de type HPC. Je peux soumettre des travaux à mon gestionnaire de ressources et je peux utiliser le logiciel fourni par OpenHPC pour démarrer des applications MPI utilisant tous les processeurs de mon Raspberry Pi.


Pour en savoir plus sur l'utilisation d'OpenHPC pour créer un cluster Raspberry Pi, veuillez assister aux conférences d'Adrian Reber à DevConf.cz 2018, du 26 au 28 janvier, à Brno, en République tchèque, et au CentOS Dojo 2018, le 2 février, à Bruxelles.


Linux
  1. Comment utiliser Ansible pour configurer la surveillance du système avec Prometheus

  2. Renouveler mon frisson au travail avec Ansible

  3. Comment configurer les paramètres réseau avec les rôles système Ansible

  4. Forcer les changements de mot de passe du système Linux avec la commande chage

  5. Configurer le cluster Kubernetes avec Rancher

Introduction au système de fichiers Linux

Comment tuer des processus sur le bureau Linux avec xkill

Guide Ansible :la commande ad hoc

Comment automatiser les redémarrages du système à l'aide du module de redémarrage Ansible

Audit de sécurité avec Lynis

Comment faire un flash LED avec le Raspberry Pi