General

Reviviendo el Neo Freerunner en Campus Party Quito 2011

Hace más de 3 años puse mis manos en un Neo Freerunner, la segunda versión al público del teléfono celular del proyecto OpenMoko. Luego me pasé a Android (un HTC Magic) durante bastante tiempo y lo dejé por otros smartphones. Pero el Freerunner siguió ahí, desplazado por tecnología más nueva y por software más completo.

Hasta hace una semana.

Tuve la oportunidad de ser invitado a dar dos presentaciones en el escenario de Innovación de la Campus Party Quito 2011, y una de ellas era sobre clusters. Para lxs que me conocen, y lxs asiduxs al blog, la clusterización de servicios (y no la clusterización de cómputo científico) es un tema específico de expertise que me apasiona desde hace 5 años.

En mi paso por la Electrificación del Caroní, primero Corporación Venezolana de Guayana y ahora Corporación Eléctrica Nacional, una de las hidroeléctricas más importantes del mundo, le asignaron a mi equipo la responsabilidad de construir un cluster para correo electrónico con almacenamiento compartido.

El cluster, que se encuentra en producción, consta de servidores Itanium geográficamente distribuidos (EDELCA tiene una red que va desde Brasil hasta Colombia) así como balanceadores de carga en alta disponibilidad, un servicio de directorio propio, etc.

También he hecho clusters con máquinas virtuales anteriormente. Por ejemplo, hace algunos meses en el TechDay Quito, o en algunos screencasts de mi trabajo.

Pero para Campus Party Quito pensé que la gente necesitaba ver algo más cool, así que preparé un cluster sencillo, para un servicio sobre TCP (HTTP) usando HTML estático y los siguientes miembros del cluster:

1. Dos (2) máquinas virtuales Debian GNU/Linux 6.0 corriendo sobre Hyper-V en Windows Server 2008 R2, a su vez booteado desde un disco duro USB exteo (sí, se puede correr Windows en una memoria USB) con nginx como servidor Web

2. Una (1) máquina virtual Windows Server 2008 R2 con IIS corriendo PHP (específicamente Drupal) también sobre Hyper-V

3. Una (1) máquina física con Debian GNU/Linux Sid para las pruebas del cluster

4. Un (1) Openmoko Neo Freerunner corriendo Hackable:1 (distribución basada en Debian) y a su vez con lighttpd como servidor Web y conectado al router del cluster vía Wi-Fi

Con respecto a Hackable::1, la instalación fue straightforward. No usé microSD, sino la flash del teléfono. Tan solo necesité dfu-util (disponible en Debian) y las dos imagenes (keel y root filesystem) para flashear el dispositivo. Luego configuré USB networking para entrar por SSH al teléfono e instalar lighttpd y configurar la IP. Todos los detalles en el link de arriba.

El cluster está inspirado en la metodología Ultramonkey, específicamente en el escenario de HA+LB streamlined, donde se utiliza una sola capa de equipos Linux entregando HA, LB y potencialmente también el servicio. Esto reduce costos, pero requiere una configuración un poco cumbersome de ARP en las máquinas.

La verdad, la prueba salió bastante bien. El cluster respondió muy bien a los casos de prueba, que fueron:

1. Remoción en caliente de uno de los balanceadores de carga en alta disponibilidad

2. Remoción en caliente de uno de los equipos prestadores del servicio

3. Inclusión en caliente del balanceador de carga activo inicial (del caso 1) y restitución de la alta disponibilidad

Incluso, al final, el Freerunner se quedó sin batería (recuerden que era un miembro del cluster conectado por Wi-Fi) y el cluster lo manejó sin problemas.

También tuvimos la oportunidad de revisar diversas ventajas y retos de hacer un cluster, e identificar los SPOF (puntos únicos de falla) del cluster de demostración. Las láminas están publicadas aquí, y el video aquí. Gracias a todos/as los que participaron y se interesaron por el tema. Siempre estaré a la orden para cualquier inquietud.

Standard

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s