Cluster (informática) El término cluster se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. La tecnología de clusters ha evolucionado en apoyo de actividades que van desde aplicaciones de supercómputo y software de misiones críticas, servidores Web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos. El cómputo con clusters surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran. Los clusters son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables. De un cluster se espera que presente combinaciones de los siguientes servicios: 1. Alto rendimiento 2. Alta disponibilidad 3. Equilibrio de carga 4. Escalabilidad La construcción de los ordenadores del cluster es más fácil y económica debido a su flexibilidad: cluster homogéneo: pueden tener todos la misma configuración de hardware y sistema operativo. cluster semi-homogéneo: diferente rendimiento pero con arquitecturas y sistemas operativos similares. cluster heterogéneo: o tener diferente hardware y sistema operativo, lo que hace más fácil y económica su construcción. Para que un cluster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del cluster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento. Historia El origen del término y del uso de este tipo de tecnología es desconocido pero se puede considerar que comenzó a finales de los años 50 y principios de los años 60. La base formal de la ingeniería informática de la categoría como un medio de hacer trabajos paralelos de cualquier tipo fue posiblemente inventado por Gene Amdahl de IBM, que en 1967 publicó lo que ha llegado a ser considerado como el papel inicial de procesamiento paralelo: la Ley de Amdahl que describe matemáticamente el aceleramiento que se puede esperar paralelizando cualquier otra serie de tareas realizadas en una arquitectura paralela. Este artículo define la base para la ingeniería de la computación tanto multiprocesador y computación clúster, en donde el principal papel diferenciador es si las comunicaciones interprocesador cuentan con el apoyo "dentro" de la computadora (por ejemplo, en una configuración personalizada para el bus o la red de las comunicaciones internas) o "fuera" del ordenador en una red "commodity". En consecuencia, la historia de los primeros grupos de computadoras es más o menos directamente ligado a la historia de principios de las redes. Utilizando el concepto de una red de conmutación de paquetes, el proyecto ARPANET logró crear en 1969 lo que fue posiblemente la primera red de computadoras básico basadas en el cluster de computadoras por cuatro tipos de centros informáticos (cada una de las cuales fue algo similar a un "cluster" pero no un "comodity cluster" como hoy en día lo entendemos). El proyecto ARPANET creció y se convirtió en lo que es ahora Internet - que se puede considerar como "la madre de todos los clusters". El primer producto comercial de tipo cluster fue ARCnet, desarrollada en 1977 por Datapoint pero no obtuvo un éxito comercial y los clusteres no consiguieron tener éxito hasta que en 1984 VAXcluster produjeran el sistema operativo VAX/VMS. Otros dos principios comerciales de clusteres notables fueron el Tandem Himalaya (alrededor 1994 de con productos de alta disponibilidad) y el IBM S/390 Parallel Sysplex (también alrededor de 1994, principalmente para el uso de la empresa). La historia de los clusters de computadoras estaría incompleta sin señalar el papel fundamental desempeñado por el desarrollo del software de Parallel Virtual Machine (PVM). Software de fuente abierta basado en comunicaciones TCP/IP permitió la creación de un superordenador virtual - un cluster HPC - realizada desde cualquiera de los sistemas conectados TCP/IP. De forma libre los clusters heterogéneos han constituido la cima de este modelo logrando aumentar rápidamente en FLOPS globalmente y superando con creces la disponibilidad incluso de los más caros superordenadores. PVM y el empleo de PC y redes de bajo costo llevó, en 1993, a un proyecto de la NASA para construir supercomputadoras de clusters. Beneficios de la Tecnología Cluster Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rápido a archivos. Un cluster puede satisfacer estos requerimientos usando los recursos que tiene asociados a él. La tecnología cluster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnología estándar, tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo. Clasificación de los Clusters El término cluster tiene diferentes connotaciones para diferentes grupos de personas. Los clusters pueden clasificarse con base en sus características. Se pueden tener clusters de alto rendimiento (HPC – High Performance Clusters), clusters de alta disponibilidad (HA – High Availability) o clusters de alta eficiencia (HT – High Throughput). Alto rendimiento: Son clusters en los cuales se ejecutan tareas que requieren de gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez. El llevar a cabo estas tareas puede comprometer los recursos del cluster por largos periodos de tiempo. Alta disponibilidad: Son clusters cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clusters tratan de brindar la máxima disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante software que detecta fallos y permite recuperarse frente a los mismos, mientras que en hardware se evita tener un único punto de fallos. Alta eficiencia: Son clusters cuyo objetivo de diseño es el ejecutar la mayor cantidad de tareas en el menor tiempo posible. Existe independencia de datos entre las tareas individuales. El retardo entre los nodos del cluster no es considerado un gran problema. Los clusters pueden también clasificar como Clusters de IT Comerciales (Alta disponibilidad, Alta eficiencia) y Clusters Científicos (Alto rendimiento). Componentes de un Cluster En general, un cluster necesita de varios componentes de software y hardware para poder funcionar: • Nodos • Sistemas Operativos • Conexiones de Red • Middleware • Protocolos de Comunicación y servicios • Aplicaciones • Ambientes de Programación Paralela Nodo Se refiere a un unidad lógica o funcional de MySQL Cluster, y a veces se denomina como nodo de cluster. Hay tres tipos de nodo requeridos para implementar un MySQL Cluster. Son: Nodos de administración (MGM) Nodos SQL (MySQL server) Nodos de datos Sistemas Operativos Debe ser de fácil uso y acceso y permitir además múltiples procesos y usuarios. Conexiones de Red Los nodos de un cluster pueden conectarse mediante una simple red Ethernet, o puede utilizar tecnologías especiales de alta velocidad como Fast Ethernet, Gigabit Ethernet, Myrinet, Infiniband, SCI. Middleware El middleware es un software que generalmente actúa entre el sistema operativo y las aplicaciones con la finalidad de proveer: • Un interfaz único de acceso al sistema, denominado SSI (Single System Image), el cual genera la sensación al usuario de que utiliza un único computador muy potente; • Herramientas para la optimización y mantenimiento del sistema: migración de procesos, checkpoint-restart (detener uno o varios procesos, migrarlos a otro nodo y continuar su funcionamiento), balanceo de carga, tolerancia a fallos, etc.; • Escalabilidad: debe poder detectar automáticamente nuevos nodos conectados al cluster para proceder a su utilización. Existen diversos tipos de middleware, como por ejemplo: MOSIX, Condor, Open MOSIX, OpenSSI, entre otros. Ambientes de Programación Paralela Los ambientes de programación paralela permiten implementar algoritmos que hagan uso de recursos compartidos: CPU (Central Processing Unit), memoria, datos y servicios. Sistemas Clusters Implementados Beowulf Fue construido por Donald Becker y Thomas Sterling en 1994. Fue construido con 16 computadores personales con procesadores Intel DX4 de 200 MHz, que estaban conectados a través de un switch Ethernet. El rendimiento teórico era de 3.2 GFlops. Berkeley NOW El sistema NOW de Berkeley estuvo conformado por 105 estaciones de trabajo Sun Ultra 170, conectadas a través de una red Myrinet. Cada estación de trabajo contenía un microprocesador Ultra1 de 167 MHz, caché de nivel 2 de 512 KB, 128 MB de memoria, dos discos de 2.3 GB, tarjetas de red Ethernet y Myrinet. En abril de 1997, NOW logró un rendimiento de 10 GFlops. Google Durante el año 2003, el cluster Google llegó a estar conformado por más de 15.000 computadores personales. En promedio, una consulta en Google lee cientos de megabytes y consume algunos billones de ciclos del CPU. Cluster PS2 En el año 2004, en la Universidad de Illinois en Urbana-Champaign, Estados Unidos, se exploró el uso de consolas Play Station 2 (PS2) en cómputo científico y visualización de alta resolución. Se construyó un cluster conformado por 70 PS2; utilizando Sony Linux Kit (basado en Linux Kondora y Linux Red Hat) y MPI. Cluster X En la lista “TOP 500” de noviembre de 2004 fue considerado el séptimo sistema más rápido del mundo; sin embargo, para julio de 2005 ocupa la posición catorce. Cluster X fue construido en el Tecnológico de Virginia en el 2003; su instalación fue realizada por estudiantes del Tecnológico. Está constituido por 2200 procesadores Apple G5 de 2.3 GHz. Utiliza dos redes: Infiniband 4x para las comunicaciones entre procesos y Gigabit Ethernet para la administración. Cluster X posee 4 Terabytes de memoria RAM y 176 Terabytes de disco duro, su rendimiento es de 12.25 TFlops. Se lo conoce también como Terascale. Red Española de Supercomputación En el año 2007 se crea la Red Española de Supercomputación compuesta por 7 clusters distribuidos en distintas instituciones españolas, entre los que se encuentra el supercomputador Marenostrum (el cluster más veloz en el momento de su puesta en funcionamiento). Todos los clusters están formados por un número variable de nodos con procesadores PowerPC 970 a 2.2GHz interconectados con una red Myrinet. El rendimiento de las máquinas oscilan entre los casi 65 TeraFLOPS proporcionados por las más de 10000 CPUs de Marenostrum, los casi 16 TeraFLOPS de Magerit con 2400 procesadores o los casi 3 TeraFLOPS de los 5 nodos restantes. Servidor En informática, un servidor es un tipo de software que realiza ciertas tareas en nombre de los usuarios. El término servidor ahora también se utiliza para referirse al ordenador físico en el cual funciona ese software, una máquina cuyo propósito es proveer datos de modo que otras máquinas puedan utilizar esos datos. Este uso dual puede llevar a confusión. Por ejemplo, en el caso de un servidor web, este término podría referirse a la máquina que almacena y maneja los sitios web, y en este sentido es utilizada por las compañías que ofrecen hosting o hospedaje. Alternativamente, el servidor web podría referirse al software, como el servidor de http de Apache, que funciona en la máquina y maneja la entrega de los componentes de los páginas web como respuesta a peticiones de los navegadores de los clientes. Los archivos para cada sitio de Internet se almacenan y se ejecutan en el servidor. Hay muchos servidores en Internet y muchos tipos de servidores, pero comparten la función común de proporcionar el acceso a los archivos y servicios. Un servidor sirve información a los ordenadores que se conecten a él. Cuando los usuarios se conectan a un servidor pueden acceder a programas, archivos y otra información del servidor. En la web, un servidor web es un ordenador que usa el protocolo http para enviar páginas web al ordenador de un usuario cuando el usuario las solicita. Los servidores web, servidores de correo y servidores de bases de datos son a lo que tiene acceso la mayoría de la gente al usar Internet. Algunos servidores manejan solamente correo o solamente archivos, mientras que otros hacen más de un trabajo, ya que un mismo ordenador puede tener diferentes programas de servidor funcionando al mismo tiempo. Los servidores se conectan a la red mediante una interfaz que puede ser una red verdadera o mediante conexión vía línea telefónica o digital. Tipos de Servidores. Servidores de Aplicaciones (Application Servers): Designados a veces como un tipo de middleware (software que conecta dos aplicaciones), los servidores de aplicaciones ocupan una gran parte del territorio entre los servidores de bases de datos y el usuario, y a menudo los conectan. Servidores de Audio/Video (Audio/Video Servers): Los servidores de Audio/Video añaden capacidades multimedia a los sitios web permitiéndoles mostrar contenido multimedia en forma de flujo continuo (streaming) desde el servidor. Servidores de Chat (Chat Servers): Los servidores de chat permiten intercambiar información a una gran cantidad de usuarios ofreciendo la posibilidad de llevar a cabo discusiones en tiempo real. Servidores de Fax (Fax Servers): Un servidor de fax es una solución ideal para organizaciones que tratan de reducir el uso del teléfono pero necesitan enviar documentos por fax. Servidores FTP (FTP Servers): Uno de los servicios más antiguos de Internet, File Transfer Protocol permite mover uno o más archivos...Leer más » Servidores Groupware (Groupware Servers): Un servidor groupware es un software diseñado para permitir colaborar a los usuarios, sin importar la localización, vía Internet o vía Intranet corporativo y trabajar juntos en una atmósfera virtual. Servidores IRC (IRC Servers): Otra opción para usuarios que buscan la discusión en tiempo real, Internet Relay Chat consiste en varias redes de servidores separadas que permiten que los usuarios conecten el uno al otro vía una red IRC. Servidores de Listas (List Servers): Los servidores de listas ofrecen una manera mejor de manejar listas de correo electrónico, bien sean discusiones interactivas abiertas al público o listas unidireccionales de anuncios, boletines de noticias o publicidad. Servidores de Correo (Mail Servers): Casi tan ubicuos y cruciales como los servidores web, los servidores de correo mueven y almacenan el correo electrónico a través de las redes corporativas (vía LANs y WANs) y a través de Internet. Servidores de Noticias (News Servers): Los servidores de noticias actúan como fuente de distribución y entrega para los millares de grupos de noticias públicos actualmente accesibles a través de la red de noticias USENET. Servidores Proxy (Proxy Servers): Los servidores proxy se sitúan entre un programa del cliente (típicamente un navegador) y un servidor externo (típicamente otro servidor web) para filtrar peticiones, mejorar el funcionamiento y compartir conexiones. Servidores Telnet (Telnet Servers): Un servidor telnet permite a los usuarios entrar en un ordenador huésped y realizar tareas como si estuviera trabajando directamente en ese ordenador. Servidores Web (Web Servers): Básicamente, un servidor web sirve contenido estático a un navegador, carga un archivo y lo sirve a través de la red al navegador de un usuario. Este intercambio es mediado por el navegador y el servidor que hablan el uno con el otro mediante HTTP. Nombre del Servidor Sistema operativo 4D WebSTAR AOLserver Unix Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows Server 2003 Windows XP Apache NetWare OS/2 Unix Windows 95/98 Windows NT 4.0 BadBlue Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows XP Baikonur Web App Server Windows 95/98 Windows NT 4.0 Covalent Enterprise Ready Server AIX HP-UX Linux Red Hat Linux SUSE Linux Solaris Windows 2000 Windows Server 2003 ESAWEB VM/CMS Enterprise WebServer for NetWare NetWare GoAhead WebServer Linux NetWare Solaris Windows 2000 Windows 95/98 Hawkeye Linux iTools MacOS X Server Java Server HP-UX IRIX Linux OS/2 Solaris Windows 95/98 Windows NT 4.0 Jigsaw Java_VM Solaris Windows 95/98 Windows NT 4.0 Microsoft Internet Information Services Windows Server 2003 RapidSite BSD IRIX Windows 2000 Windows Server 2003 RomPager Embedded Web Server Embedded Roxen WebServer Linux MacOS X Server Solaris Windows 2000 Windows Server 2003 Windows XP Sambar Server Red Hat Linux Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows Server 2003 Windows XP Savant Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Servertec Internet Server AIX HP-UX Linux Solaris Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows Server 2003 Windows XP Shadow Web Server MVS SimpleServer:WWW Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows XP Sun Java System Web Server Red Hat Linux Solaris Windows 2000 Windows XP Tcl Web Server Linux MacOS Unix Windows NT 4.0 URL Live! Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows XP Viking Windows 2000 Windows 95/98 Windows NT 4.0 Windows XP vqServer AIX BSD Be OS Digital UNIX HP-UX IRIX Java_VM Linux MacOS OS/2 SCO OpenServer Solaris Windows 95/98 Windows NT 4.0 WN AIX BSD Digital UNIX HP-UX IRIX Linux SCO OpenServer Solaris WebBase Windows 2000 Windows 95/98 Windows NT 4.0 Xitami AIX BSD Be OS Digital UNIX HP-UX Linux OS/2 SCO OpenServer Solaris VMS Windows 2000 Windows 95/98 Windows ME Windows NT 4.0 Windows Server 2003 Windows XP Zeus Web Server AIX BSD HP-UX IRIX Linux MacOS X Server SCO OpenServer Solaris Tru64 Unix