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 de GCP, incluidos los siguientes:
- 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
-
Accede a tu Cuenta de Google.
Si todavía no tienes una cuenta, regístrate para obtener una nueva.
-
Selecciona o crea un proyecto de GCP.
-
Comprueba que la facturación esté habilitada en tu proyecto.
- Habilita las Compute Engine API necesarias.
- Realiza la instalación y la inicialización del SDK de Cloud.
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
-
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.
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
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
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
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
- Ve a la página Credenciales.
Ir a la página Credenciales - Selecciona tu proyecto de GCP.
Haz clic en Crear credenciales y, luego, selecciona ID de cliente de OAuth.
En Tipo de aplicación, selecciona Otra, agrega un Nombre y, a continuación, haz clic en Crear.
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.
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 -nNODE_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:
- En GCP Console, ve a la página Proyectos.
-
En la lista de proyectos, selecciona el proyecto que quieres borrar y haz clic en Borrar proyecto.
- En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.
Pasos siguientes
- Consulta la bifurcación de Elasticluster de Cloud Life Sciences. Esta bifurcación proporciona correcciones de errores y mejoras relevantes para los casos prácticos de Google Cloud Platform.