GNU/Linux >> Tutoriales Linux >  >> Linux

Creación de un sistema HPC basado en Linux en Raspberry Pi con Ansible

En mi artículo anterior para Opensource.com, presenté el proyecto OpenHPC , cuyo objetivo es acelerar la innovación en la informática de alto rendimiento (HPC). Este artículo va un paso más allá al usar las capacidades de OpenHPC para construir un pequeño sistema HPC. Para llamarlo un sistema HPC puede sonar más grande de lo que es, así que tal vez sea mejor decir que este es un sistema basado en las recetas de construcción de clústeres publicadas por el proyecto OpenHPC.

El clúster resultante consta de dos sistemas Raspberry Pi 3 que actúan como nodos de cómputo y una máquina virtual que actúa como nodo maestro:

Mi nodo maestro ejecuta CentOS en x86_64 y mis nodos de cómputo ejecutan un CentOS ligeramente modificado en aarch64.

Así es como se ve la configuración en la vida real:

Para configurar mi sistema como un sistema HPC, seguí algunos de los pasos de la guía de instalación de recetas de creación de clústeres de OpenHPC para CentOS 7.4/aarch64 + Warewulf + Slurm (PDF). Esta receta incluye instrucciones de aprovisionamiento usando Warewulf; Debido a que instalé manualmente mis tres sistemas, omití las partes de Warewulf y creé un libro de jugadas de Ansible para los pasos que realicé.

Contenedores Linux

  • ¿Qué son los contenedores de Linux?
  • Una introducción a la terminología de contenedores
  • Descargar:Introducción a los contenedores
  • Operadores de Kubernetes:automatización de la plataforma de orquestación de contenedores
  • eBook:Patrones de Kubernetes para diseñar aplicaciones nativas de la nube
  • ¿Qué es Kubernetes?

Una vez que los playbooks de Ansible configuraron mi clúster, pude comenzar a enviar trabajos a mi administrador de recursos. El administrador de recursos, Slurm en mi caso, es la instancia en el clúster que decide dónde y cuándo se ejecutan mis trabajos. Una posibilidad para iniciar un trabajo simple en el clúster es:

[ohpc@centos01 ~]$ srun hostname
calvin

Si necesito más recursos, puedo decirle a Slurm que quiero ejecutar mi comando en ocho CPU:

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

En el primer ejemplo, Slurm ejecutó el comando especificado (hostname ) en una sola CPU y, en el segundo ejemplo, Slurm ejecutó el comando en ocho CPU. Uno de mis nodos de cómputo se llama calvin y el otro se llama hobbes; que se puede ver en la salida de los comandos anteriores. Cada uno de los nodos de cómputo es una Raspberry Pi 3 con cuatro núcleos de CPU.

Otra forma de enviar trabajos a mi clúster es el comando sbatch , que se puede usar para ejecutar scripts con la salida escrita en un archivo en lugar de mi terminal.

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

Esto creará un archivo de salida llamado slurm-101.out con el siguiente contenido:

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

Para demostrar la funcionalidad básica del administrador de recursos, las herramientas de línea de comandos simples y en serie son adecuadas, pero un poco aburridas después de hacer todo el trabajo para configurar un sistema similar a HPC.

Una aplicación más interesante es ejecutar un trabajo en paralelo de Open MPI en todas las CPU disponibles en el clúster. Estoy usando una aplicación basada en Game of Life, que se usó en un video llamado "Ejecución de Game of Life en varias arquitecturas con Red Hat Enterprise Linux". Además de la implementación Game of Life basada en MPI utilizada anteriormente, la versión que ahora se ejecuta en mi clúster colorea las celdas de cada host involucrado de manera diferente. El siguiente script inicia la aplicación de forma interactiva con una salida gráfica:

$ cat life.mpi
#!/bin/bash

module load gnu6 openmpi3

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

mpirun ./mpi_life -a -p -b

Comienzo el trabajo con el siguiente comando, que le dice a Slurm que asigne ocho CPU para el trabajo:

$ srun -n 8 --x11 life.mpi

Para fines de demostración, el trabajo tiene una interfaz gráfica que muestra el resultado actual del cálculo:

La posición de las celdas rojas se calcula en uno de los nodos de cálculo y las celdas verdes se calculan en el otro nodo de cálculo. También puedo decirle al programa Game of Life que coloree la celda para cada CPU usada (hay cuatro por nodo de cómputo) de manera diferente, lo que lleva a la siguiente salida:

Gracias a las recetas de instalación y los paquetes de software proporcionados por OpenHPC, pude configurar dos nodos de cómputo y un nodo maestro en una configuración de tipo HPC. Puedo enviar trabajos a mi administrador de recursos y puedo usar el software proporcionado por OpenHPC para iniciar aplicaciones MPI utilizando todas las CPU de mi Raspberry Pi.


Para obtener más información sobre el uso de OpenHPC para crear un clúster de Raspberry Pi, asista a las charlas de Adrian Reber en DevConf.cz 2018, del 26 al 28 de enero, en Brno, República Checa, y en CentOS Dojo 2018, el 2 de febrero en Bruselas.


Linux
  1. Configurar el clúster de Kubernetes con Rancher

  2. Configuración de un servidor FTP con vsFTPd en Raspberry Pi

  3. Creación de la nube fiscal

  4. ¿Cómo instalar PhantomJS para usar con Python Selenium en Raspberry Pi?

  5. ¿Se garantiza que dos subdirectorios con la misma raíz estén en el mismo sistema de archivos montado?

Introducción al sistema de archivos de Linux

Cómo matar procesos en el escritorio de Linux con xkill

Guía de Ansible:el comando ad-hoc

Cómo automatizar reinicios del sistema usando el módulo de reinicio de Ansible

Auditoría de seguridad con Lynis

Cómo hacer un flash LED con la Raspberry Pi