Utilización de Clusters Linux como Servidores de
Transcripción
Utilización de Clusters Linux como Servidores de
HA C LU C E Utilización de Clusters Linux como Servidores de Vı́deo Bajo Demanda Dr. Vı́ctor M. Gulı́as [email protected] Departamento de Computación Universidade da Coruña financiado por: Contenido • Antecedentes. Cluster Borg. • Video Bajo Demanda. Problemática. • Objetivos y Propuesta de Diseño Inicial. • Tecnologı́as Clave. • Refinamiento del Diseño. • Conclusiones y Lı́neas de Trabajo Actuales. Antecedentes • 1994. Paradigma Funcional + Computación Paralela – Declarativo, sin efectos colaterales – Alto nivel de expresividad, abstracción, prototipado • 1995. Extensión concurrente de Yale Haskell – Concurrencia explı́cita, comunicación de orden superior • 1996-1999. RTS de un lenguaje funcional distribuido – Modelo semi-implı́cito (anotaciones, equilibrado dinámico de carga) – Modelo explı́cito, comunicación ası́ncrona de orden superior – Arquitectura de interés: Clusters Beowulf Borg, El Cluster Beowulf del LFCIA 4 6 7 5 1 FORERUNNER 3810 (External world) 2 10 Mb Ethernet link 3 3 Dual Pentium II 350Mhz 384MB RAM 8GB HD SCSI 4 AMD K6 300Mhz 96MB RAM 4GB HD IDE (23, up to 47) 5 100 Mb Fast Ethernet link (2 per node) 6 3COM SuperStack II 3300 Switch (4, 24 slots per switch) 5 3 4 1 7 6 7 1 Gb link (2 independent networks) CPU 2 frontend CPU ... CPU CPU CPU ... CPU Video Bajo Demanda. Requerimientos • Un servidor de Vı́deo Bajo Demanda (Video On Demand, VoD es un sistema que proporciona servicios de vı́deo en los cuales un usuario puede solicitar un VO (Video Object) en cualquier momento. • Aplicaciones: Pelı́culas bajo demanda, aprendizaje a distancia, noticias interactivas, etc. • Principales requerimientos: – Gran capacidad de almacenamiento – Gran ancho de banda – Tiempo de respuesta predecible (pref. bajo) – Soportar a gran número de usuarios concurrentes – Escalabilidad – Adaptabilidad – Tolerancia a fallos – Bajo coste Soluciones (Comerciales) Existentes VoD • Inicio proyecto 1999 (MPEG-2 2Mbps [LAN], Real 28 Kbps [WAN]) – Apple, Quicktime Streaming Server (ahora Darwin Streaming Server) – IBM, DB2 Digital Library Video Charger – Microsoft, NetShow Theater (ahora Windows Media Server) – Oracle, Video Server – Real Networks, RealVideo Server – SGI, WebForce MediaBase (ahora Kassenna) – Sun, StorEdge Media Central – Diversas soluciones a partir de otras soluciones comerciales • Soluciones caras, cerradas, no escalables, no adaptables VoDka: Servidor VoD Funcional Distribuido • Sistema de almacenamiento jerárquico, basado en clusters Linux construidos a partir de componentes de consumo • Diseño usando patrones de diseño GoF y behaviours OTP • Lenguajes de desarrollo: – Monitorización, Control, planificación: Erlang/OTP – Entrada/Salida: C (prototipado en Erlang/OTP) • Énfasis en reutilización: – uso de herramientas Open-Source (Linux, Erlang/OTP, ...) – adaptación de soluciones existentes (Darwin) – independización de subsistemas (OpenMonet, Erlatron) Propuesta de Diseño Inicial Tape loaders, jukeboxes... Tertiary level (massive storage) Cluster nodes with local storage Secondary level (large scale cache) Cluster heads Primary level (buffering and protocol adaptation) Output streams • Estructura jerárquica con 3 niveles: – Nivel Terciario (Storage): Gran capacidad – Nivel Secundario (Cache): Planificación, ancho de banda agregado – Nivel Primario (Streaming): Adaptación de protocolos Configuración de Borg como Servidor VoD K7 500 128MB Bus 32 bits Alpha Server DS20 Buses 64 bits borg24 (192.168.155.24) 3COM Superstack II 3300 Borg0 borg0−1 (192.168.155.254) borg1−1 ... borg23−1 (192.168.155.1...23) borg0−0 (192.168.154.254) borg1−0 ... borg23−0 (192.168.154.1...23) AutoPAK VXA Tape Charger (~8.000) 3 SCSI: 2 cabezas, 1 brazo mecánico 15 slots para cintas de 33GB * ~100 películas de dos horas a 300Kb/s * ~15 películas de dos horas a 2Mb/s Cada cabeza: 5 Mb/s Tecnologı́as Clave: Erlang/OTP • Diseñado, implementado y utilizado por Ericsson AB para la programación de sus sistemas de control distribuidos complejos • Apropiado para sistemas tiempo real (soft) distribuidos tolerantes a fallos • Caracterı́sticas de diseño a resaltar: – Funcional: sin efectos colaterales – Concurrente: Paso de mensajes ası́ncrono, transporte transparente de valores, comunicaciones de orden superior – Distribuido: Ubicación transparente de procesos en nodos – Primitivas para soporte de tolerancia a fallos – Reemplazamiento “en caliente” de código sin detener el sistema • Open Telecom Platform: bibliotecas y patrones de diseño distribuido – Servidores genéricos – Mecanismos de supervisión – Base de datos distribuida (transparencia de ubicación, fragmentación, replicación, integración con el lenguaje) – Integración: SNMP, ASN.1, Interfaz C, Corba, Java, HTTP Tecnologı́as Clave: Cluster Linux • Amplia experiencia anterior propia y ajena con redes de alta velocidad, sistemas distribuidos y clustering sobre linux. • Disponibilidad de código fuente: posibilidad de modificar cualquier parte del software para adaptarlo, corregirlo, localizar problemas o instrumentarlo. • Licencia homogénea (GPL): simplicidad de tratamiento legal (vs. por ejemplo situación actual MPEG4, donde cada componente tiene una licencia distinta y su interacción a veces es incómoda y hasta contradictoria) • Compatibilidad: código desarrollado en Linux se portará sin problemas a Solaris, AIX, Tru64, IRIX, etc. Respeto de estándares (POSIX 1003.*, SVID, 4.xBSD) • Buen rendimiento • Amplia disponibilidad de herramientas de desarrollo • Extensivo soporte de diferentes plataformas hardware (x86, Alpha, SPARC, ARM, S/390 (zSeries), IA64, SH3, MIPS...) Lecciones Aprendidas • Necesidad de flexibilidad: redefinición de la arquitectura jerárquica, dando lugar a otra composición de módulos con un API estándar. – El número de niveles y la forma en que se componen debe ser flexible (Ej.: Un servidor entero como fuente de datos para otro servidor) – En cada nivel: distintos protocolos tanto de almacenamiento como de transferencia • Necesidad de factorización: abstracción del proceso de comunicación (pipes, transfers), introspección de servidores (VoDka Browser ), monitorización (observer+mediator ), etc. • Independencia respecto a protocolos y formatos (actualmente en constante cambio) • Los cuellos de botella no están tanto en la red sino en los nodos: acceso a disco • TCP/IP es cómodo para la comunicación entre módulos pero a partir de cientos de Mb/s es un protocolo pesado • No existe almacenamiento off-line masivo eficiente con hardware de consumo (commodity ). Los cargadores eficientes son muy caros (IBM 3575: $15000). Refinamiento del Diseño. Propuesta Actual (I) Separación del subsistema de gestión (aplicación web convencional) y del núcleo (kernel) servidor de vı́deo. Video On Demand Kernel Architecture Smirnoff HTTP SERVER VODKA Relevant Data Observer Consults Request1 Request2(MO) SERVLETS HTTP Consults Agent XSLT Response1 Management Data (MO) Management Subsystem El esquema representa la estructura de la versión SMIRNOFF (Second Monitoring and Improved Release Now Offering Further Features) Refinamiento del Diseño. Propuesta Actual (II) Transferencias internas en VoDka ante una petición HTTP desde un cliente remoto. VODKA Monitor Stream Group RTP VODKA_slave MO DD2 lookup lookupAns(A) Streaming Sched MO DD1 lookup lookupAns(A) HTTP Frontend H.263 VODKA_slave MO DD2 lookup lookupAns(A) Storage Sched Monitor lookup lookupAns(A,B,C) f(State,MO)={DS1,DD2} f(State,MO)=DS2 HTTP Streamer lookup lookupAns(A) Storage Driver (File) transfer lookup lookupAns(B) Storage Driver (TAPE) HTTP Frontend MO Storage Group Video Stream HTTP DD1 PIPE TCP DS1 TCP DD2 PIPE FILE DS2 STREAM I/O lookup lookupAns(C) Storage Group Storage Driver (HTTP) STORAGE I/O Un servidor completo puede ser fuente de datos para la capa de almacenamiento, usando la entrada al storage driver correspondiente. Refinamiento del Diseño. Propuesta Actual (III) VODKA Monitor Monitor VODKA_slave Stream Group VODKA_slave Streaming Sched Cache Sched VODKA_slave n cache levels Storage Sched Monitor Storage Group RTP H.263 HTTP Frontend Cache Group Storage Driver (File) HTTP Streamer HTTP Frontend Cache Driver (File) Cache Driver (File) Storage Driver (TAPE) Storage Group Storage Driver (HTTP) La figura muestra la flexibilidad de VoDka SMIRNOFF: un nivel de streaming, n de cache y uno de almacenamiento masivo. Refinamiento del Diseño. Propuesta Actual (IV) borg24 borg25 VODKA_slave Streaming Sched 10Mb/s HTTP Frontend VODKA_slave Cache Sched HTTP Streamer Storage Sched 100Mb/s Cache Group Storage Group 10Mb/s Storage Driver (File) VODKA_slave Storage Driver (TAPE) 100Mb/s ATM Streaming Sched Cache Sched HTTP Streamer Cache Driver HTTP Frontend covas 100Mb/s 100Mb/s Cache Driver (File) Cache Driver (File) VODKA_slave VODKA_slave borg1 borg22 Cache Driver (File) VODKA_slave borg23 Transformaciones XSL en Cluster • Transformacion documentos XML generados por OpenMonet – Selección XSL en base a tipo documento, browser, etc.: mod_xsl – Adaptación biblioteca XSLT C++ (sablotron): sablotron_adapter – Equilibrado de carga: erlatron erlatron slave result C adapter sablotron library port ready Client xslt xslt erlatron master erlatron slave C adapter erlatron slave C adapter Client pool of workers erlatron server 40 35 30 ab -c C -n 250 150 execution time (s) requests per second 200 ab -c 10 -n 500 ab -c 15 -n 500 ab -c 25 -n 500 ab -c 50 -n 500 25 20 15 10 100 50 5 0 0 1 2 4 8 12 16 number of slaves (P) 22 12 4 8 12 16 20 24 concurrency level (C) 48 Conclusiones y Lineas de Trabajo Actual • Necesidad de flexibilidad • Necesidad de factorización • Independencia respecto a protocolos y formatos • Ccuellos de botella: acceso a disco • TCP/IP protocolo pesado • No existe almacenamiento (commodity ) off-line masivo • Implantación de un prototipo dentro del campus universitario • Estudio de adaptación e implantación de un prototipo en la red de cable de R Fuentes de Financiación • Proyectos Relacionados: – FEDER 1FD97-1759 (desarrollo del servidor de vı́deo bajo demanda) (partner tecnológico R) – XUNTA PGIDT99COM10502 (modelización del rendimiento) – Universidade da Coruña 2000-5050252026 (patrones de diseño en sistemas funcionales distribuidos) • Infraestructura: – Xunta de Galicia. Infraestructura 1998. Borg – Xunta de Galicia. Infraestructura 2001. BorgTNG Recursos en el Web • LFCIA Home Page. http://www.lfcia.org • VoDka Project Home Page. http://vodka.lfcia.org • OpenMonet Home Page. http://monet.sourceforge.net • mod_xsl Home Page. http://modxsl.sourceforge.net A Coruña, 12-14 de septiembre de 2001 http://www.lfcia.org/sit01
Documentos relacionados
Utilización de Clusters Linux como Servidores de
• Subsistema de gestión (aplicación web convencional); • Núcleo (kernel) servidor de vı́deo.
Más detalles