OAR-Kadeploy
Contents
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 : ambienteversion : 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