| Artículos | 01 ABR 2007

Clustering en Windows Server: Cuando el fallo no es una opción

Tags: Histórico
Daniel Matey.
La arquitectura de sistemas es una profesión apasionante, diseñar infraestructuras capaces de aguantar cargas extremas y funcionar bajo condiciones adversas representa un reto, cuanto menos, motivador. A continuación presentamos una de las soluciones más interesantes para minimizar el número de fallos de nuestros servicios críticos: la tolerancia a fallos.

Afrontar este reto sería imposible sin las tecnologías de clustering (agrupamiento). Personalmente creo que en la vida de todo ingeniero de sistemas hay un antes y un después de haber instalado un cluster por primera vez, es como superar una gran frontera, como un rito de iniciación. En Windows podemos hablar de tres tipos de familias de clusters:
Clusters de proceso; destinados a proveer de una gran capacidad de computación a través del procesamiento en paralelo. Son usados principalmente en centros de cálculo, proyectos científicos o simulaciones financieras.
Clusters de balanceo de carga; diseñados para absorber gran cantidad de sesiones concurrentes, comúnmente usados en servidores de Front-End (Web, Proxys, SMTP o terminales).
Clusters de tolerancia a fallos; enfocados a poder continuar prestando un servicio aunque se haya producido un fallo hardware. Normalmente se usan en servidores de Back-End (bases de datos o servidores de buzones de correo).
Ésta es una de las familias más apasionantes en sí misma, ya que encierra muchos secretos y funcionalidades por descubrir.
A continuación aprenderemos a saber cuándo usar cada uno y los aspectos más interesantes –sobre su papel– dentro de la arquitectura de sistemas.

Cluster de Proceso de Carga
Tradicionalmente, la supercomputación ha estado vedada a los sistemas Windows. Hace años, este mercado estaba prácticamente rendido a las grandes maquinas tipo Cray, tremendamente costosas y con software de difícil desarrollo. Para saber mejor de lo que estamos hablando, una Cray costaba del orden de 40.000.000 de dólares.
Con la llegada de Linux y otros sistemas, muchos pensaron que uniendo muchas maquinas más baratas se podría llegar a tener una gran capacidad de proceso. De esta forma empezaron a desarrollarse los clusters de proceso basados en nodos que trabajan juntos.
Microsoft desarrolló varios proyectos que terminaron manifestándose en la versión Windows Compute Cluster Server (CCS). CCS sólo está disponible para maquinas con arquitectura x64, lo que nos limita a procesadores AMD Opteron, AMD Athlon 64, Intel Xeon EM64T e Intel Pentium con EM64T. El límite de memoria en esta versión de Windows es de 32 GB por nodo, no existiendo límite en cuanto al número de nodos (servidores) que pueden componer un cluster de este tipo.
En los clusters CCS, hay que montar un servidor aparte, que tendrá que usar una versión de Windows Server 2003 Standard o Enterprise. A este servidor se le denomina “Head Node” (nodo de encabezado) y es el que se encarga de distribuir los procesos entre los nodos que componen el cluster.
Las aplicaciones que pueden correr en este tipo de clusters han tenido que ser programadas de una manera especial, que permita dividir sus procesos de una forma lo suficientemente granular como para que la aplicación se pueda beneficiar del proceso en paralelo.
Microsoft dispone de una API (Application Program Interface), denominada MS-MPI, que es compatible con las librerías más usadas para el desarrollo de aplicaciones para computación en clusters de proceso. Esta compatibilidad hace que, inicialmente, no sea demasiado complicado migrar aplicaciones ya existentes que estén funcionando en otros clusters de este tipo a la plataforma Windows.
Sin embargo, esta versión de Windows sólo vale para trabajar dentro de un cluster CCS y no está permitido usarla para otras funciones. Por esta razón, la licencia es muy económica (cada licencia se sitúa por debajo de los 500 dólares, aproximadamente).
Hoy en día, Microsoft ya está en el ranking de los 500 super-ordenadores más potentes del mundo, con el cluster montado por la NCSA, que cuenta con más de 450 nodos.
La pregunta que hay que hacerse en este caso es si valoraría migrar un cluster de este tipo a Windows Compute Cluster Server. Y la respuesta pasaría por explicar que mantener este tipo de clusters suele ser un infierno, entre otras muchas cosas, debido a la complejidad de gestionar los trabajos de proceso, además de las desventajas a la hora de mantenerlos.
En este punto, Microsoft aporta MOM 2005 (Microsoft Operation Manager) y un Management Pack específico para Windows Compute Cluster Server como solución de monitorización. Además, el cluster usa ADS (Automated Deployment Services) para generar o rehacer nodos del cluster, con un tiempo medio de generación del nodo de ocho minutos, usando para ello la imagen de un nodo que habremos capturado previamente desde ADS. Por si esto fuera poco, toda la gestión se hace desde una consola que puede ser instalada en cualquier PC. La consola tiene asistentes que facilitan la administración del cluster y de los trabajos.
Hasta ahora, programar este tipo de aplicaciones era muy caro y complicado, pero Microsoft ha liberado un SDK (Software Development Kit) para desarrollar las aplicaciones con Visual Studio 2005, lo cual hace que cualquier profesional que sepa programar en .Net, pueda desarrollar aplicaciones para Windows Compute Cluster Server.
Usando Visual Studio 2005 es posible hacer cosas como, por ejemplo, “parallel debuging”. Esta funcionalidad nos permite solucionar problemas en los programas, pudiendo ver el estado de cada nodo y qué partes del proceso está realizando cada uno. Aunque, dicho así, esto no parezca impresionante, hay muy pocas herramientas en el mercado que permitan hacerlo, y es una funcionalidad de gran ayuda ante ciertos problemas. Este tipo de clusters serán cada vez más comunes en las grandes empresas, sobre todo en las dedicadas al mundo financiero o con fuertes inversiones en I+D que requieran de simulaciones o cálculos intensivos. La simulación financiera es uno de los usos empresariales que más se están empezando a beneficiar de Windows Compute Cluster Server, a través del uso de Microsoft Excel Services 2007. Con Excel Services 2007 (parte de Office Sharepoint Server 2007) es posible diseñar hojas de cálculo inmensas (1.000.000 de filas por 16.000 columnas) que realicen cálculos complejos, y los representen a través de Excel, usando para ello el Cluster de proceso. Así, hay entidades financieras que han podido realizar, en minutos, cálculos que antes tardaban horas en hacer.

Clusters de Balanceo de Carga
El balanceo de carga consiste en distribuir las solicitudes que realizan los usuarios entre los servidores que conforman el cluster. De esta forma, se puede, fácilmente, aumentar la capacidad de un sistema.
A este tipo de metodología para hacer crecer la capacidad de una solución se la denomina escalado horizontal. Por el contrario, escalar verticalmente sería aumentar los recursos del servidor, añadiendo más memoria o procesadores.
En este tipo de clusters no se suelen usar servidores demasiado potentes. Por contra, se suelen emplear servidores de uno o dos microprocesadores (hoy en día 2 ó 4 cores) y es poco común ver servidores de 4 micros en un cluster de balanceo.
La forma correcta de dimensionar estos clusters consiste en establecer el número de sesiones que podrá mantener un nodo con una configuración concreta. Por ejemplo, podríamos decir

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información