Cómo crear un clúster de Grid Engine con Elasticluster

Si tienes herramientas existentes que utilizan Grid Engine para ejecutar tareas en los clústeres de procesamiento de Elasticluster, sigue este instructivo a fin de crear un entorno similar para ejecutar esas tareas en Google Cloud Platform.

Objetivos

Después de completar el instructivo, sabrás cómo realizar las actividades que se describen a continuación:

  • Habilitar Elasticluster a fin de acceder a tu proyecto de GCP
  • Utilizar Elasticluster para crear un clúster de las VM de Compute Engine que ejecuten Grid Engine
  • Copiar archivos en el clúster y conectarte con las instancias de clústeres

Costos

En este instructivo se usan componentes facturables en GCP, que incluyen los que se indican a continuación:

  • Compute Engine
  • Cloud Storage

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto. Los usuarios nuevos de Cloud Platform podrían ser aptos para una prueba gratuita.

Antes de comenzar

  1. Sign in to your Google Account.

    If you don't already have one, sign up for a new account.

  2. Select or create a GCP project.

    Go to the Project selector page

  3. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  4. Habilita las Compute Engine API necesarias.

    Habilita las API

  5. Install and initialize the Cloud SDK.

Cómo configurar tu entorno local

Si todavía no instalaste Elasticluster en tu máquina local, sigue los pasos que se detallan a continuación:

Requisitos previos a la instalación

  1. Instala Python 2.7.

    Se requiere Python 2.7 para ejecutar Elasticluster. Para obtener más información sobre cómo configurar el entorno de desarrollo de Python como, por ejemplo, la instalación de pip en tu sistema, consulta la Guía de configuración del entorno de desarrollo de Python.

  2. Si no tienes virtualenv, instálalo con pip:

    pip install virtualenv
    

    Te recomendamos instalar Elasticluster en un virtualenv de Python. El virtualenv mantiene a Elasticluster y sus dependencias de Python separadas del resto del entorno de Python, a fin de que las actualizaciones en tu entorno de Python no generen errores en Elasticluster.

Instala Elasticluster

  1. Ejecuta virtualenv a fin de crear un entorno aislado de Python denominado elasticluster. Luego, configura tu directorio actual:

    virtualenv elasticluster
    source elasticluster/bin/activate
    cd elasticluster
    
  2. En el virtualenv del directorio elasticluster creado en el paso previo, clona el repositorio de Elasticluster GitHub y luego instala las dependencias:

    git clone git://github.com/gc3-uzh-ch/elasticluster.git src
    cd src
    pip install -e .
    pip install oauth2client
    
  3. Verifica que Elasticluster se haya instalado correctamente. Cuando ejecutas este comando se genera un archivo ~/.elasticluster/config y podría generar diferentes advertencias y errores, pero se los puede ignorar sin problema.

    elasticluster list-templates
    

Cómo permitir que Elasticluster acceda a tu proyecto de GCP

Sigue los pasos a continuación para habilitar el acceso de Elasticluster a recursos en tu proyecto de GCP y la creación de clústeres de las VM de Compute Engine. Completa estos pasos en tu máquina local.

Obtén tu ID de cliente y el secreto del cliente

  1. Ve a la página Credenciales.
    Ir a la página Credenciales
  2. Selecciona tu proyecto de GCP.
  3. Haz clic en Crear credenciales y, a continuación, selecciona ID de cliente de OAuth.

  4. En Tipo de aplicación, selecciona Otra, agrega un Nombre y, a continuación, haz clic en Crear.

  5. En la ventana del Cliente OAuth que aparece a continuación, toma nota del ID de cliente y del secreto del cliente. Los usarás en el archivo de configuración de Elasticluster.

  6. En la ventana Credenciales, podrás ver tus nuevas credenciales en Otros junto con el ID de cliente principal que se utiliza para acceder a tu solicitud.

Genera un par de Llaves SSH

Elasticluster necesita un par de Llaves SSH para conectarse con GCP y dar inicio a las VM de Compute Engine. Si todavía no te conectaste a una instancia de Compute Engine mediante el comando gcloud compute ssh, ingresa el siguiente comando:

gcloud compute config-ssh

Una vez que se complete el proceso, verás el siguiente par de Llaves en tu máquina:

~/.ssh/google_compute_engine
~/.ssh/google_compute_engine.pub

Selecciona una imagen de disco para las VM de tu clúster

Para iniciar las VM de Compute Engine, tu configuración de Elasticluster debe especificar una de las imágenes Debian disponibles en Compute Engine. Ejecuta el siguiente comando y anota el nombre de la imagen de disco que se muestra:

gcloud compute images list | grep debian | cut -f 1 -d " "

Si se muestran diferentes imágenes de disco, selecciona la primera de la lista. En el siguiente resultado de ejemplo, seleccionarías la imagen resaltada:

debian-8-jessie-v20180611
debian-9-stretch-v20180611

Configura Elasticluster

Abre el archivo ~/.elasticluster/config y borra todo su contenido. A continuación, copia el siguiente texto, sustituye las variantes relevantes y guarda el archivo.

# Grid Engine software to be configured by Ansible
[setup/gridengine]
provider=ansible
frontend_groups=gridengine_master
compute_groups=gridengine_worker

# Create a cloud provider called "google-cloud"
[cloud/google-cloud]
provider=google
gce_project_id=PROJECT_ID
gce_client_id=CLIENT_ID
gce_client_secret=SECRET_KEY

# Create a login called "google-login"
[login/google-login]
image_user=GOOGLE_USER_ID (just the user ID, not the full email address)
image_user_sudo=root
image_sudo=True
user_key_name=elasticluster
user_key_private=~/.ssh/google_compute_engine
user_key_public=~/.ssh/google_compute_engine.pub

# Bring all of the elements together to define a cluster called "gridengine"
[cluster/gridengine]
cloud=google-cloud
login=google-login
setup=gridengine
security_group=default
image_id=IMAGE
flavor=n1-standard-1
frontend_nodes=1
compute_nodes=3
image_userdata=
ssh_to=frontend

Para obtener más información sobre el archivo de configuración de Elasticluster, consulta la documentación sobre Elasticluster.

Cómo ejecutar un clúster de las VM de Compute Engine

En los siguientes pasos se muestra cómo iniciar un clúster, interactuar con este y cómo detenerlo.

Completa estos pasos en tu máquina local. La primera vez que inicies un clúster, deberás autorizar a Elasticluster a emitir solicitudes a la API de Compute Engine en tu nombre. El flujo de autorización inicia un navegador web en la misma máquina desde la que iniciaste el clúster.

Si necesitas ejecutar Elasticluster en una máquina remota o en algún otro entorno que no pueda abrir un navegador web, antes de iniciar el clúster, edita ~/.elasticluster/config y agrega noauth_local_webserver=true a la sección cloud/google-cloud:

# Create a cloud provider
[cloud/google-cloud]
provider=google
noauth_local_webserver=true

Cómo iniciar un clúster

Ejecuta el siguiente comando para iniciar el clúster:

elasticluster start gridengine

El proceso puede tardar varios minutos en completarse. Una vez iniciado el clúster, se imprime el siguiente mensaje en la consola:

Your cluster `gridengine` is ready!

Cluster name:     gridengine
Cluster template: gridengine
Default ssh to node: frontend001
- frontend nodes: 1
- compute nodes: 4

To login on the frontend node, run the command:

    elasticluster ssh gridengine

To upload or download files to the cluster, use the command:

    elasticluster sftp gridengine

Para obtener un resultado detallado, utiliza la marca -v:

elasticluster start gridengine -v

Obtén una lista de las instancias de clústeres

Para obtener una lista de las instancias en tu clúster, ejecuta el siguiente comando:

elasticluster list-nodes gridengine

Aparecerá un mensaje similar al que figura a continuación:

Cluster name:     gridengine
Cluster template: gridengine
Default ssh to node: frontend001
- frontend nodes: 1
- compute nodes: 4

To login on the frontend node, run the command:

    elasticluster ssh gridengine

To upload or download files to the cluster, use the command:

    elasticluster sftp gridengine

frontend nodes:

  - frontend001
    connection IP: 203.0.113.1
    IPs:    203.0.113.1
    instance id:   gridengine-frontend001
    instance flavor: n1-standard-1

compute nodes:

  - compute001
    connection IP: 198.51.100.1
    IPs:    198.51.100.1
    instance id:   gridengine-compute001
    instance flavor: n1-standard-1

...

Copia archivos en instancias de clústeres

Puedes utilizar el comando sftp de Elasticluster para abrir una sesión SFTP en el nodo frontend del clúster. Esto te permite subir o descargar archivos hacia y desde el clúster. Para obtener más información sobre cómo utilizar SFTP con Elasticluster, consulta la documentación sobre Elasticluster. Para abrir una sesión de SFTP, ejecuta el siguiente comando:

elasticluster sftp gridengine

Puedes utilizar este documento a fin de enviar una lista de comandos a SFTP:

elasticluster sftp gridengine << 'EOF'
put *.sh
EOF

Para obtener más información acerca de SFTP, consulta la página de detalles de SFTP.

Cómo conectarse a instancias de clústeres

Con Elasticluster, puedes utilizar SSH para conectarte con cualquiera de los nodos de tu clúster. Si ejecutas elasticluster ssh gridengine sin especificar un nodo, Elasticluster se conectará automáticamente con el nodo frontend:

elasticluster ssh gridengine

Para conectarte con otros nodos en el clúster, agrega la marca -n y especifica el nombre del nodo:

elasticluster ssh gridengine -n NODE_NAME

Por ejemplo, a fin de conectarte con el nodo compute001 de los resultados de Obtén una lista de instancias de clústeres, ejecuta el siguiente comando:

elasticluster ssh gridengine -n compute001

Sal de virtualenv

Para salir de virtualenv, ejecuta el comando deactivate desde la línea de comandos:

deactivate

A fin de utilizar los comandos de Elasticluster nuevamente, vuelve a activar virtualenv; para ello, ejecuta el comando source elasticluster/bin/activate.

Limpiar

Una vez que hayas terminado este instructivo, puedes limpiar los recursos que creaste en Google Cloud Platform para que no se facturen en el futuro. En las siguientes secciones se describe cómo borrar o desactivar estos recursos.

Destruye el clúster

Para detener el clúster y desactivar todas las instancias de clústeres, ejecuta el siguiente comando:

elasticluster stop gridengine

Este comando muestra un aviso que te preguntará si realmente deseas detener el clúster. Para detenerlo sin que aparezca el aviso, agrega la marca --yes al comando:

elasticluster stop --yes gridengine

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que utilizaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

  1. En GCP Console, ve a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que quieres borrar y haz clic en Borrar proyecto. Después de seleccionar la casilla de verificación junto al nombre del proyecto, haz clic en Borrar proyecto
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?

  • Consulta la bifurcación Elasticluster de Cloud Genomics. Esta bifurcación proporciona correcciones de errores y mejoras relevantes para los casos prácticos de Google Cloud Platform.
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...