GNU/Linux >> Tutoriales Linux >  >> Linux

Clúster de Cómputo de Alto Rendimiento en un entorno de nube

La informática de alto rendimiento (HPC) permite a los científicos e investigadores resolver problemas complejos que requieren muchas capacidades informáticas. HPC normalmente usa una interfaz de paso de mensajes (MPI) para comunicarse entre diferentes nodos.

HPC en la nube

Actualmente, la mayoría de los proyectos que requieren HPC aún se ejecutan en sistemas UNIX® heredados. Migrar estos proyectos a una instalación basada en la nube es muy simple y no requiere mucha configuración adicional. Este tutorial crea un clúster HPC con Open MPI en Rackspace Cloud y ejecuta una aplicación Open MPI sobre el clúster. Al final de este tutorial, debería saber cómo aprovechar la nube para construir y escalar rápidamente un clúster de HPC para el procesamiento de datos en tiempo real mientras elimina la dependencia de la infraestructura física.

Abrir MPI

Para lograr una agrupación en clústeres de alto rendimiento en la nube, puede utilizar OpenMPI, que es un proyecto de interfaz de paso de mensajes (MPI). Proporciona procesamiento paralelo, seguridad y concurrencia de subprocesos, generación de procesos dinámicos y tolerancia a fallas y redes. Las supercomputadoras más rápidas del mundo usan esta biblioteca, y la biblioteca alimenta muchos petaflops. Para obtener más información sobre la biblioteca Open MPI, visite su sitio.

Objetivo

Este tutorial le muestra cómo crear un clúster de HPC mediante las siguientes herramientas:

  • Cuatro servidores en la nube de Rackspace
  • Abrir MPI

El tutorial configura un clúster de cuatro nodos, ejecuta una aplicación en él y mide el rendimiento, como se muestra en la siguiente imagen:

Figura 1:Arquitectura de alto nivel de HPC en la nube

Requisitos

Necesita los siguientes tres elementos para completar con éxito este tutorial:

  • Una cuenta de Rackspace Cloud.
  • Un cliente Secure Shell (SSH). Los usuarios de Windows® pueden usar PuTTY.
  • Un conocimiento básico de Linux® y Open MPI.

Tutorial

El tutorial cubre las siguientes tareas:

  1. Cree un servidor en la nube.
  2. Instalar Open MPI.
  3. Habilitar agrupación.
  4. Configurar HPC.
  5. Cree e implemente una imagen de servidor en la nube.
  6. Instale y ejecute una aplicación de muestra habilitada para Open MPI.

Crea un servidor en la nube

Inicie sesión en el Panel de control de la nube y cree un servidor en la nube desde la interfaz web con los siguientes atributos:

  • Nombre del servidor:tunombre-HPC-node-01
  • Región:Dallas (DFW)
  • Imagen (Rackspace):Ubuntu 12.04 LTS (Precise Pangolin)
  • Tamaño:2 GB de RAM o superior

Haga clic en Crear servidor y comienza el proceso de creación del servidor en la nube. Mientras se construye, una ventana emergente muestra su contraseña de Cloud Server. Registre la contraseña para futuras referencias. Descarte la ventana emergente y espere a que se complete la creación del servidor. Después de que la dirección IP del nuevo servidor esté disponible, regístrela.

Instalar Open MPI

Después de que el servidor termine de construirse y esté en Disponible estado, SSH en el servidor e inicie sesión con la dirección IP y la contraseña que registró anteriormente.

ssh root@<Your Server IP>

Después de iniciar sesión, ejecute los siguientes comandos para instalar 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

Habilitar agrupación

Open MPI facilita la comunicación entre nodos mediante SSH, por lo que debe habilitar los inicios de sesión basados ​​en claves para SSH.

Para hacer esto, ejecute los siguientes comandos:

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

El resultado de estos comandos debería ser similar al siguiente ejemplo:

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 .   .      |
|                 |
|                 |
|                 |
+-----------------+

Nota: Se le solicitará una frase de contraseña durante este proceso. Déjalo en blanco.

Ejecute los siguientes comandos para copiar la clave en la carpeta de claves autorizada y cambie los permisos para permitir inicios de sesión SSH:

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

Configurar HPC

Ahora configure el nodo HPC principal creando un archivo de host. Para hacer esto, asegúrese de haber iniciado sesión en el primer nodo a través de SSH y cree el siguiente archivo, donde <Your Server IP> es la dirección IP que usó para SSH en la máquina:

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

Para verificar el archivo, ejecute el siguiente comando:

cat mpi_hosts

Deberías ver el siguiente resultado:

<Your Server IP>

Para verificar su configuración, use hello_c.c de los ejemplos incluidos con Open MPI.

Para hacer esto, siga estos comandos:

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

Esto debería generar el siguiente resultado:

Hello, world, I am 0 of 1

Ahora que funciona, ejecute los siguientes comandos para probar la conectividad:

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

Debería ver el siguiente resultado:

Connectivity test on 1 processes PASSED.

Esto confirma que el primer nodo está en línea y operativo.

Crear e implementar una imagen de servidor en la nube

Con el primer nodo creado, está listo para configurar un clúster. Para comenzar, haga copias del nodo que acaba de crear. Siga estos pasos para crear una imagen:

  1. Inicie sesión en el Panel de control de la nube.
  2. En la barra de navegación superior, haga clic en Seleccione un producto> Rackspace Cloud .
  3. Seleccione Servidores> Servidores en la nube .
  4. En la lista de servidores, seleccione el servidor que creó para el primer nodo.
  5. Haga clic en Acciones menú desplegable.
  6. Haga clic en Crear imagen .
  7. Cuando se le solicite, proporcione un nombre significativo.
  8. Finalmente, haga clic en Crear imagen y espere unos minutos para que se cree la imagen.

Después de crear la imagen, implemente un nuevo servidor en la nube utilizando el procedimiento anterior con la siguiente excepción:cuando se le solicite la imagen, haga clic en Guardado. y seleccione su imagen. Nuevamente, proporcione un nombre de servidor significativo y registre la contraseña y la dirección IP del nuevo servidor.

Para agregar el nuevo nodo al clúster, ejecute los siguientes comandos (asumiendo que la IP de su nuevo servidor es 10.20.30.40 y la IP/nombre de host de su primer servidor es <Your Server IP> ):

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

Ahora, su archivo de host debería parecerse al siguiente ejemplo:

<Your Server IP>
10.20.30.40

Para probar la conectividad entre los nodos, ejecute el siguiente comando:

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

Si no obtiene ningún error, acaba de crear y probar con éxito su propio clúster en la nube. Para aumentar el tamaño del clúster, agregue dos nodos más utilizando el mismo procedimiento.

Para probar la conectividad dentro del clúster de cuatro nodos, ejecute el siguiente comando:

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

Instalar y ejecutar una aplicación de muestra compatible con Open MPI

Ahora que tiene un clúster Open MPI, compruebe cómo funciona. Utilice una aplicación de trazado de rayos simple que pueda ejecutarse en un solo nodo o en un clúster Open MPI para comparar el rendimiento.

Primero, instale la aplicación en todos los nodos del clúster. Para hacer esto, acceda a través de SSH al nodo principal y ejecute el siguiente comando:

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

El sistema de trazado de rayos multiprocesador/paralelo Tachyon viene con múltiples archivos de datos de muestra en las escenas carpeta, que puede usar para ejecutar sus pruebas. Primero, ejecute la prueba en un nodo usando el siguiente comando:

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

Debería ver el siguiente resultado:

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

Ejecute el siguiente comando y observe el tiempo de trazado de rayos para que pueda compararlo con su ejecución paralela:

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

Debería ver el siguiente resultado:

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

Su clúster consta de cuatro nodos y una CPU para cada uno. Por lo tanto, la mejora del rendimiento es casi cuatro veces mayor. Debería ver mejoras significativas incluso si no tiene varios nodos y, en su lugar, ejecuta su aplicación en un solo nodo con OpenMPI usando ambas CPU.

Es importante que haya creado su servidor con al menos 2 GB de RAM porque los tamaños de 2 GB y superiores tienen acceso a al menos 2 CPU. Para obtener más información sobre los tamaños, consulte Servidores en la nube.

Ejecute el siguiente comando para ejecutar este código en varias CPU de un solo servidor:

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

Debería ver el siguiente resultado:

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

Tenga en cuenta que incluso cuando se ejecuta en un solo nodo pero utiliza Open MPI, el rendimiento casi se ha duplicado. Para leer más sobre esta aplicación de trazado de rayos, visite https://jedi.ks.uiuc.edu/~johns/raytracer/.

Resumen

En este tutorial, aprendió a crear y generar imágenes de servidores en la nube. También aprendió a configurar un clúster de HPC mediante Open MPI. Después de instalar y configurar el clúster, instaló una pequeña aplicación de trazado de rayos para demostrar los beneficios de usar varios nodos en lugar de uno solo.


Linux
  1. Cloud9:un entorno de desarrollo basado en la nube para proyectos web

  2. Vincular la informática en la nube a su infraestructura heredada

  3. ¿Qué hace que la computación en la nube sea una tecnología tan poderosa?

  4. Aborde las preocupaciones de seguridad de la computación en la nube con la nube privada

  5. La nube privada es RAD:cómo aprovechar la nube privada para el desarrollo rápido de aplicaciones

Cómo configurar el clúster de Kubernetes en Google Cloud Platform (GCP)

Cómo implementar un clúster tolerante a fallas con disponibilidad continua o alta

Cómo configurar un clúster de Pacemaker para Linux de alta disponibilidad

Cómo implementar WordPress en Jelastic Cloud

Cómo instalar y configurar NGINX y PHP en Jelastic Cloud

Cómo implementar un contenedor Docker en Jelastic Cloud