OAR-Kadeploy

From Supercomputación y Cálculo Científico UIS

Curso Reservación y despliegue sobre GridUIS2

Taller 0: Herramientas de monitoreo de recursos

Reconocimiento de las herramientas de monitoreo de recursos

Herramientas Web

GUANE:

GridUIS2:

Una ves dentro del servidor guane, se pueden listar los recursos disponibles y sus propiedades en OAR:
Nota: seguir los pasos para acceder a la plataforma ACCEDER A LA PLATAFORMA 

usuario@guane:~$ oarnodes

Algunas opciones del comando oarnodes

usuario@guane:~$ oarnodes --help
Usage: oarnodes [ -r number | --sql sql_properties | -s | -l | -h | -V ]
[list of nodes] [ -e [date] | -X | -Y | -D]
Display node informations
Options:
-r, --resource show only a resource properties
-s, --state show only node states
-l, --list show only node list
-e, --events show events recorded for a node: either the last 20 if no
date is given or all events since the specified date
--sql display resources which matches this sql where clause
(ex: "state = 'Suspected'")
-D, --dumper       print result in DUMPER format
-X, --xml          print result in XML format
-Y, --yaml         print result in YAML format
-J, --json         print result in JSON format
-h, --help         show this help screen
-V, --version      print OAR version number


Taller 1: Reservas Interactivas

Hacer una reserva de tipo interactiva y verificar la reserva en el Monika y a traves del comando oarstat

Solicitar una reserva Interactiva

usuario@guane:~$ oarsub -I
[ADMISSION RULE] Set default walltime to 7200.
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12561
Interactive mode : waiting...
Starting...

Connect to OAR job 12561 via the node pipaton01

Verificar la reserva en el Monika

Verificar la reserva a través de el comando oarstat (Este comando no funciona si estamos ubicados dentro de un nodo específico).

usuario@guane:~$ oarstat
Job id Name User Submission Date S Queue
---------- -------------- -------------- ------------------- - ----------
12561 usuario 2012-02-15 21:41:43 R default

Para terminar la reserva usamos el comando exit

usuario@ficomaco01:~$ exit
logout
Connection to guane01 closed.
Disconnected from OAR job 12561

Reserva de un nodo con una propiedad especifica.

Observar las propiedades de un nodo ya sea en la página de monitoreo Monika o con el comando oarnodes.

Reservar un nodo especifico utilizando la propiedad network_addres

usuario@guane:~$ oarsub -I -p "network_address='ficomaco01'"
[ADMISSION RULE] Set default walltime to 7200.
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12563
Interactive mode : waiting...
Starting...

Connect to OAR job 12563 via the node ficomaco01

Liberar la reserva con el comando exit

Reserva de dos o mas nodos

usuario@guane:~$ oarsub -I -l nodes=2
[ADMISSION RULE] Set default walltime to 7200.
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12564
Interactive mode : waiting...
Starting...

Connect to OAR job 12564 via the node ficomaco01

Verificar la reserva en la página de monitoreo Monika o con el comando oarstat


Reserva con un tiempo determinado

usuario@guane:~$ oarsub -I -l walltime=4
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12568
Interactive mode : waiting...
Starting...

Connect to OAR job 12568 via the node ficomaco01

Verificar la reserva en la página de monitoreo Monika o con el comando oarstat

Taller 2: Reservas Pasivas y envio del primer Job

Crear un editor de texto con código del programa hola mundo en MPI

usuario@guane~$ vim hola.c

llenar el archivo con el siguiente código.

#include <stdio.h>
#include <mpi.h>
int i, my_id, nproc, namelen, cont;
char hostname[30];
int main (int argc, char *argv[])
{
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_id);
MPI_Comm_size(MPI_COMM_WORLD, &nproc);
for(i=0;i<10000000;i++)
{cont=cont+1; }
MPI_Get_processor_name(hostname, &namelen);
hostname[namelen] = '\0';
printf("Hola Mundo! Yo soy %d de %d corriendo en %s\n",my_id,nproc,hostname);
MPI_Finalize();
}

Utilizando lo aprendido en el Taller 1, hacer una reserva interactiva.

Compilar el código hola.c

usuario@ficomac01:~$ mpicc hola.c -o hola.exe

Ejecutar el programa de forma local

usuario@ficomac01:~$ ./hola.exe  

Hola Mundo! Yo soy 0 de 1 corriendo en ficomaco01

Liberar la reserva.

Creación de scrip para lanzar el trabajo con una reserva pasiva

Desde guane ejecutar:

usuario@guane:~$ vim hola.sh

llenar con el siguiente código

#!/bin/bash
mpirun -machinefile $OAR_NODEFILE ./hola.exe

damos permisos de ejecucion al script

usuario@guane:~$ chmod +x hola.sh

Envio de Job de forma pasiva

Lanzaremos el programa antes creado en dos o mas nodos de forma pasiva

usuario@guane:~$ oarsub -l nodes=1 ./hola.sh
[ADMISSION RULE] Set default walltime to 7200.
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12583

Los Resultados

Por ultimo obtenemos dos archivos, los cuales me mostratan los posibles errores y la salida sin errores. (OAR.JOBID.sterr OAR.JOBID.stout)

Observamos la salida del programa

usuario@guane:~$ more OAR.12583.stdout
Hola Mundo! Yo soy 0 de 4 corriendo en ficomaco01
Hola Mundo! Yo soy 1 de 4 corriendo en ficomaco01
Hola Mundo! Yo soy 2 de 4 corriendo en ficomaco02
Hola Mundo! Yo soy 3 de 4 corriendo en ficomaco02

Taller 3: Despliegue de Ambientes con Kadeploy

Reserva de un nodo para despliegue

usuario@guane:~$ oarsub -I -t deploy
[ADMISSION RULE] Set default walltime to 7200.
[ADMISSION RULE] Modify resource description with type constraints
OAR_JOB_ID=12584
Interactive mode : waiting...
Starting...

Connect to OAR job 12584 via the node 127.0.0.1

Lista de los Ambientes disponibles para desplegar

Ver los ambiestes que estan disponibles y dirigirse a la pagina de descripcion

usuario@guane:~$ kaenv3 -l
Name Version User Description
#### ####### #### ###########
etch-x64-base 2 deploy http://grid.uis.edu.co/index.php/Etch-x64-base
numericos-squeeze 1 deploy http://grid.uis.edu.co/index.php/numericos-squeeze
squeeze-x32-base 1 deploy http://grid.uis.edu.co/index.php/squeeze-x32-base

Desplegar

Elegir un ambiente y desplegarlo

usuario@guane:~$ kadeploy3 -e squeeze-x32-base -f $OAR_NODEFILE
SetDeploymentEnv thread launched
BroadcastEnv thread launched
ProcessFinishedNodes thread launched
BootNewEnv thread launched
Launching a deployment ...
Performing a SetDeploymentEnvUntrusted step on the nodes: nodo09-leac.uis.edu.co
--- switch_pxe (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-switch_pxe: 0s
--- reboot (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** A soft reboot will be performed on the nodes nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-reboot: 0s
--- wait_reboot (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** nodo09-leac.uis.edu.co is here after 126s
Time in SetDeploymentEnvUntrusted-wait_reboot: 126s
--- send_key_in_deploy_env (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** No key has been specified
Time in SetDeploymentEnvUntrusted-send_key_in_deploy_env: 0s
--- create_partition_table (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-create_partition_table: 9s
--- format_deploy_part (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-format_deploy_part: 10s
--- mount_deploy_part (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-mount_deploy_part: 1s
--- format_tmp_part (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** Bypass the format of the tmp part
Time in SetDeploymentEnvUntrusted-format_tmp_part: 0s
--- format_swap_part (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in SetDeploymentEnvUntrusted-format_swap_part: 0s
Performing a BroadcastEnvChain step on the nodes: nodo09-leac.uis.edu.co
--- send_environment (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** Broadcast time: 28 seconds
Time in BroadcastEnvChain-send_environment: 28s
--- manage_admin_post_install (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BroadcastEnvChain-manage_admin_post_install: 1s
--- manage_user_post_install (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** Bypass the user postinstalls
Time in BroadcastEnvChain-manage_user_post_install: 0s
--- send_key (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BroadcastEnvChain-send_key: 0s
--- install_bootloader (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BroadcastEnvChain-install_bootloader: 12s
Performing a BootNewEnvClassical step on the nodes: nodo09-leac.uis.edu.co
--- switch_pxe (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BootNewEnvClassical-switch_pxe: 0s
--- umount_deploy_part (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BootNewEnvClassical-umount_deploy_part: 1s
--- reboot_from_deploy_env (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
Time in BootNewEnvClassical-reboot_from_deploy_env: 2s
--- set_vlan (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** Bypass the VLAN setting
Time in BootNewEnvClassical-set_vlan: 0s
--- wait_reboot (leaccluster cluster)
>>> nodo09-leac.uis.edu.co
*** nodo09-leac.uis.edu.co is here after 133s
Time in BootNewEnvClassical-wait_reboot: 133s
Nodes correctly deployed on cluster leaccluster
nodo09-leac.uis.edu.co

Ingresamos al nodo reservado.

Nota: El usuario y la contraseña para ingresar al nodo, dependen de las características del ambiente desplegado.

usuario@guane:~$ ssh root@nodo09

Taller 4: Creacion de ambientes

Reservar con la opción -t kadeploy y desplegar un Ambiente base

usuario@guane:~$ kadeploy3 -e squeeze-x64-base -f $OAR_NODEFILE

Acceder al nodo con el ambiente desplegado

usuario@guane:~$ ssh root@NODO

Instalar y configuracion el software que necesitemos Eliminar el archivo

usuario@ficomaco01:~# rm /etc/udev/rules.d/70-persistent-net.rules

Montar el sistema de archivos en el carpeta mnt (como ROOT)

usuario@ficomaco01:~# mount -o bind / /mnt

Salimos del nodo reservado 

usuario@ficomaco01:~# exit

usuario@toctoc:~$

Creamos el TGZ del Ambiente

usuario@toctoc:~$ ssh root@Nodo "cd /mnt; tar --posix --numeric-owner --one-file-system -zcf - *" > archive.tgz

Creamos un archivo con el nombre del ambiente y con formato .dsc

usuario@guane:~$ vim ambiente.dsc
name : ambiente

version : 1 author : usuario tarball : /home/usuario/ambiente.tgz|tgz kernel : /boot/vmlinuz-2.6.26-2-amd64 initrd : /boot/initrd.img-2.6.26-2-amd64 fdisktype : 83 filesystem : ext3 visibility : private demolishing_env : 0 environment_kind : linux


El campo tarball hace referencia a la ruta donde se encuentra el archivo ambiente.tgz

Kernel y Initrd hacen referencia a la direccion de los archivos vmlinuz y initrd.img en cada ambiente

Agregamos el ambiente a la base de datos

usuario@guane:~$ kaenv3 -a ambiente.dsc
usuario@guane:-$ kadeploy3 -e ambiente -f $OAR_NODEFILE

Ahora podemos utilizar nuestro ambiente personalizado