Flisol 2011 alta disponibilidad y alto desempeño

Preview:

Citation preview

ALTA DISPONIBILIDAD ALTO DESEMPEÑO Jan Andrés Restrepo crio_@hotmail.com

DEFINICIONES “No entiendes realmente algo a menos que seas capaz de explicárselo a tu abuela” – Albert Einstein

Definiciones

• Que es DISPONIBILIDAD? • Que es DESEMPEÑO?

Definiciones - Disponibilidad • Disponibilidad esta relacionado con Dispuesto • Dispuesto “Preparado para ser utilizado”

• POSIBILIDAD que ALGO esté preparado para un FIN.

• POSIBILIDAD se considerar como una métrica

• Entonces ALTA DISPONIBILIDAD que es?

Definiciones - Desempeño • Habilidad en la realización de una actividad

•  Logro de objetivos o de tareas asignadas • Eficiencia de una maquina

• Eficiencia: Capacidad de disponer de alguien o de algo para conseguir un efecto determinado

• Entonces ALTO DESEMPEÑO que es?

Definiciones • DISPONIBILIDAD y DESEMPEÑO se pueden considerar

como una métrica?

Si!

Definiciones

• SERVICIOS

• De forma coloquial que es un Servicio?

• Actividad en donde buscan responder a las necesidades de un cliente

• Un servicio es intangible ……. Esto les suena?

Definiciones - Servicio

• Y en informática a que se refiere por Servicio?

• Pues es lo mismo que lo anterior!!

• Un programa o un software presta servicios

• Pero por si solo un programa lo hace? o hay mas cosas en juego, cuales??

Definiciones – Servicios Web

?

Definiciones - Servicio • Entonces realmente quien presta el SERVICIO???

• Un SISTEMA con una ARQUITECTURA

• Software: • Sistemas operativos • Web Servers • RDBMS • Programas •  etc.

• Hardware: • Servidores • Procesadores • Memoria • Almacenamiento • Redes •  etc.

CONCEPTOS Informáticos, ahora si por fin…

Página web estática • Para que una página web estática, funcione sobre

internet que necesitamos?

• Conexión a Internet, Dirección IP, un dominio • Componentes de red • Servidor físico / virtual, con sus respectivos

componentes • Sistema operativo de red / linux, windows, bsd… • Servidor web / apache, nginx, lighttpd, IIS… • Capacidad de almacenamiento •  Falta algo?

Página web estática - HW

StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/

Página web estática •  Los anteriores componentes son requerimientos

• El software anteriormente listado tiene requerimientos, entonces nos salen “requerimientos de los requerimientos”.

•  Incrementar capacidad de Procesamiento •  Incrementar capacidad de RAM •  Incrementar capacidad de Almacenamiento

Página web estática - HW

StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/

Página web estática • Ahora la pagina web estática se pone en línea!!!

• Que pasa?

• Comienza a tener visitantes

•  Las visitas se reflejan en carga, ocupación, consumen recursos

• Que pasa si ingresa 1, 100, 1000, 10.000 usuarios?

• O Mas???

Página web estática - Interno • Que cosas suceden internamente en este servicio?

1.  Recibir solicitud por parte del usuario • Adicionalmente se aplican: controles, verificaciones,

generación de bitácoras (logs), etc. 2.  Colocar en cola 3.  Localizar el recurso 4.  Colocar el contenido en cola 5.  Presentar o enviar el contenido

Página web estática - HW •  Incrementar de nuevo el hardware?

StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/

5400 RPM 7200 RPM

10000 RPM 15000 RPM

333 Mhz 666 Mhz

1000 Mhz 1333 Mhz

2 Mbps 10 Mbps 50 Mbps

Página web dinámica • Ahora para esa misma página, se desea que sea

“Dinámica e Interactiva” o que preste un servicio

• Que se necesita para ello??

• Se debe programar! … en que? •  PHP •  RUBY •  PYTHON •  DOT NET •  JAVA

• Base de datos •  Falta Algo?

Página web dinámica - Interno • Adicionalmente que ocurre en este nuevo servicio?

1.  Recibir solicitud por parte del usuario •  adicionales como: controles, verificaciones, generación

de bitácoras (logs), etc. 2.  Colocar en cola 3.  Localizar el recurso 4.  Colocar el contenido en cola 5.  Presentar o enviar el contenido

Página web dinámica - Interno • Adicionalmente que ocurre en este nuevo servicio?

1.  Recibir solicitud por parte del usuario •  adicionales como: controles, verificaciones, generación

de bitácoras (logs), etc. 2.  Colocar en cola 3.  Localizar el recurso 4.  PROCESAR – Ejecutar el programa especifico 5.  Colocar el contenido en cola 6.  Presentar o enviar el contenido

Página web dinámica - HW • Que pasa con el hardware que tengo?

StooMathiesen - http://www.flickr.com/photos/stoo57/5395413052/in/photostream/

Crecimiento de HW • Un buen ejemplo: Los video juegos de PC!!!

Crecimiento de HW • Un buen ejemplo: Los video juegos de PC!!!

Crecimiento de HW • En arquitectura de computo esto se le conoce como:

CRECIMIENTO VERTICAL

•  Tiene limite el crecimiento vertical?

El tecnológico Actual

Algo anda Mal? • Reflexionando, algo parece estar mal?

• Que puede ser?

• El desempeño actual no es el deseado o el optimo

• Se queda corto?

Algo anda Mal? • Cuales son las posibles razones?

u  El software base puede estar fallando u  No estará bien configurado u  No estará bien optimizado u  No es el correcto para el propósito deseado?

u  Será que nuestro programa esta mal desarrollado?

u  Será que la arquitectura seleccionada esta fallando?

ARQUITECTURA BASICA

Arquitectura básica

Arquitectura básica

Arquitectura básica

CIFRAS

Cifras – facebook.com

•  + de 500’000.000 de usuarios registrados (2011)

• Usuarios tienen Actividad de 20 minutos por día •  5.000’000.000 de objetos digitales compartidos por

semana

•  3.000’000.000 imágenes cargadas por mes

Cifras – facebook.com •  250 aplicaciones poseen mas 1’000.000 de usuarios al

mes

•  80.000 aplicaciones conectadas

•  500.000 aplicaciones

•  2’000.000 desarrolladores registrados

•  150’000.000 operaciones por segundo de memcache

Cifras – facebook.com • Miles de servidores de memcache con 10TB de

almacenamiento

•  200.000 eventos por segundo

•  20.000’000.000 de eventos por día

•  13’000.000 de queries por segundo

• Respuestas de los Query: 4ms lectura, 5ms escritura

• Picos de 38 GBps de transferencia de datos

Cifras – facebook.com •  Lenguaje de programación base: PHP

• Base de datos inicial MYSQL

• Base de datos actual CASSANDRA

• Web server propio escrito en PHP

• Y otro montón de tecnologías usadas

• Según estimaciones poseen mas de 60.000 servidores

Cifras – facebook.com • Según estimaciones poseen mas de 60.000 servidores

Cifras - Google • Google, el ultimo fallo de perdida de información

• Mas de 300.000 cintas de backup LTO2 •  LTO2 (200 GB) •  Total de: 60.000.000 GB = 58.000 TB = 57 PB

EL PROBLEMA

Los problemas de un servicio • Cuales son los dos principales problemas que se deben

resolver para prestar un servicio en línea (eso si excluyendo la seguridad)

1.  Que el servicio siempre este ahí, que funcione, que no este por fuera!, que no se caiga!

2.  Que le quepa toda la gente!, que funcione de forma veloz!, que atienda a tiempo!, que no sea lentejo!

Los problemas de un servicio • Que soluciona esos dos inconvenientes?

1.  Alta disponibilidad

2.  Alto desempeño

ALTA DISPONIBILIDAD

Alta disponibilidad

• Buscar asegurar un cierto grado absoluto de continuidad operacional durante un período de medición dado

• Esto se logra aplicando REDUNDANCIA

• Pero a un servicio se puede considerar REDUNDANCIA OPERACIONAL

Alta disponibilidad - Redundancia • Ya antes se ha logrado redundancia pero en

componentes:

•  Fuentes redundantes • Alimentación redundante • UPS redundantes • Memoria redundante • Almacenamiento redundante • NICs redundantes

• Estos componentes poseen historial de fallas

Alta disponibilidad - Redundancia

Alta disponibilidad – Como? • Hasta ahora la alta REDUNDANCIA seria administrada de

forma MANUAL

• Que se requiere para que sea TRASNPARANTE o AUTOMATICA?

•  Todo debe estar UNIFICADO

• Procesos Unificados (Comunicación) • Sub servicios Unificados (Comunicación) • Almacenamiento Unificado • Hasta llegado el caso de tener la “mente compartida”

Alta disponibilidad – Como? •  Técnicas, Tecnologías, o Herramientas

• Comunicación entre todos los actores

• Comunicar que “estamos vivos”

• Comunicar que hacemos

• Se busca comportarse como un uno solo

Alta disponibilidad – Como? • Almacenamiento Unificado

• Se puede manejar:

• Externalizándolo • SAN (Storaga Area Network)

•  Fiber Channel •  iSCSI

• Servidor de Almacenamiento •  iSCSI •  NFS •  CIFS

Alta disponibilidad – Como? • Almacenamiento Unificado

• Compartiéndolo • Sistemas de archivos dispersos por la RED

• Servidores independientes de sistemas de archivos.

o

•  Los mismos servidores comparten su almacenamiento

Alta disponibilidad - Redundancia

Alta disponibilidad – Ideal!!

Alta Disponibilidad - Ideal • No todo es perfecto, solo algunos lo pueden hacer de

forma nativa y transparente:

•  Java (Lenguaje de programación y arquitectura) •  Tomcat (Web Server – application server) • Glassfish (Web Server – application server) •  JBOSS (Plataforma) • Dot Net • RUBY (Solo su ecosistema) • PHP + Zend (Solo su ecosistema) • PHP de facebook (servidor propio hecho en PHP) • Erlang (Solo su ecosistema)

Alta Disponibilidad - Ideal • RDBMS que soportan ALTA DISPONIBILIDAD

MYSQL / MariaDB / Percona / Drizzle PostgreSQL

Ingres VoltDB

FrontBase SciMore Cubrid

Alta Disponibilidad - Ideal • Base de datos NO RELACIONALES

• Estas nacen de la necesidad de almacenar CANTIDADES GIGANTESCAS DE INFORMACION

• Su característica primordial: Ser DISTRIBUIDAS

SimpleDB (Amazon) Hadoop – Hbase (facebook)

Cassandra (Facebook) FlockDB (Twitter)

Hypertable

Alta Disponibilidad - Ideal • Base de datos NO RELACIONALES

Apache Jackrabbit CouchDB MongoDB OrientDB Terrastore RavenDB Voldemort

Sones SciDB

Alta Disponibilidad - Ideal • Sistemas de archivos en red distribuidos (o en cluster)

Ceph dCache Diaser GFS

GlusterFS Lustre

MooseFS OCFS2 (Oracle)

OpenAFS Tahoe - LAFS

Alta Disponibilidad – La realidad • Actualmente NO todo el FLOSS que presta servicios

online soporta nativamente la alta disponibilidad.

• Apache, es un ejemplo!!

• Pero tiene solución!!

•  La solución esta basada en el mismo ecosistema que existe alrededor del FLOSS

• El sistema operativo debe hacerlo.

Alta Disponibilidad – La Solución • Para que nuestro servicio soporte ALTA DISPONIBILIDAD

nos toca DARLE UNA MANITO

• Esto conlleva: •  Nuevos elementos en juego / Mas componentes / Mas servicios •  Consumo de mas recursos •  Mas monitoreo •  Mas puntos de falla (posiblemente)

• Cuesta hacerlo pero su precio se paga en beneficios

Alta Disponibilidad – La Solución • Dentro del Ecosistema FLOSS existen dos componentes:

• DRDB

•  Linux-HA / Pacemaker (OpenAIS)

• Ellos dotan al SISTEMA OPERATIVO de ALTA DISPONIBILIDAD

Alta Disponibilidad – DRDB • DRDB, su objetivo sincronizar bloques

Alta Disponibilidad – Linux-HA • Su objetivo entregar un conjunto de componentes que

permita la construcción de BLOQUES de computo

CLUSTERS DE ALTA DISPONIBILIDAD

• Gestiona la comunicación

• Gestiona la pertenencia (Membresía)

• Gestiona y monitorea los recursos (CRM – Cluster Resource Manager)

Alta Disponibilidad – PaceMaker

Alta Disponibilidad – PaceMaker

Alta Disponibilidad – PaceMaker

ALTO DESEMPEÑO

Alto Desempeño • El crecimiento vertical posee un limite

•  Los recursos físicos fijan un limite en prestación del servicio

• Ejemplos: •  Cantidad de información a almacenar •  Cantidad de información a procesar •  Cantidad de información a transferir •  Cantidad de usuarios que se pueden atender

•  Los servicios deben de funcionar pero con unos tiempos de respuesta y desempeños deseados

Alto Desempeño • Como se obtiene? • Existen dos soluciones:

1.  Revisando de nuevo que pasa al interior de nuestro Software (No hay que ser voraces)

•  Optimizando código •  Aplicando nuevas estrategias y tecnologías (NOSQL)

2.  Buscar ESCALABILIDAD •  En infraestructura base – Hardware, SO , Servicios •  Desarrollando con enfoque a Middleware / SOA

Alto Desempeño - Escalabilidad

• El crecimiento ya sucede de forma HORIZONTAL

• Objetivo: atender MUCHOS USARIOS con CALIDAD

Alta Desempeño – Que ocurre?

Alto Desempeño – Solución

•  La solución esta netamente asociada a la ARQUITECTURA Seleccionada

•  Tanto de Infraestructura FISICA como LOGICA

•  Listado de Tecnologías que se pueden usar:

Alto Desempeño – Tecnologías • Balanceadores de Carga (Load Balancers) • Despachadores • Round Robin DNS (Técnica, configuración) • CDN (Content Delivery Network) • Almacenamiento

• NAS • SAN • Sistema de archivos distribuidos

• Base de Datos NO Relacionales (NOSQL)

Alto Desempeño – Tecnologías • Desarrollando:

• Data Partitioning (Particionado de datos) • Map Reduce (Batch parallel procesing) • Cache Engine (Cache Dinámico) DATA y WEB • Resource Pool • DBSession (Conexiones TCP son costosas de crear, se

debe reutilizar) • Calcular un resultado aproximado •  Filtrar desde la fuente • Procesos Asincrónicos (Callback y Polling) • Cambiar de lenguajes interpretados a compilados o

nativos

Alto Desempeño – Tecnologías

Y cualquier otra cosa que sirva!!!!!

• Por eso motivo GOOGLE, FACEBOOK, TWITTER, AMAZON, NASA, MICROSOFT, etc. han estado acelerando estos cambios.

Alto Desempeño – Tecnologías • Algunas Implementaciones en FLOSS:

• Ultra Monkey (Balanceador de carga Capa 4) • Balance (Balanceador de carga Capa 4) •  Zen Load Balancer (Balanceador de carga Capa 4)

• Estos implementan balanceo a nivel TCP, dando soporte a múltiples servicios o protocolos

Alto Desempeño – Tecnologías • Pound (Proxy) • SQUID – Reverse Proxy • Varnish (Cacheador, Proxy Reverse) • Apache Traffic Server (gestor de trafico) • Apache, NGINX, Cherokee, Ligthttpd (Mod proxy reverse) • Apache, NGINX (Mod balanceadores de carga)

• Estos implementan balanceo a nivel HTTP, Capa 7

Alto Desempeño – Tecnologías •  Todo el ecosistema de servidores web, frameworks,

Servidores de aplicaciones, etc de: •  PHP (Zend) •  JAVA •  PYTHON •  RUBY •  EARLANG (Nativo)

• Middleware / SOA: •  Fundación APACHE •  JBOSS •  WSO2 •  ObjectWeb

ADICIONAL VIRTUALIZACION

Virtualización •  La virtualización puede abstraer todo y entregar una

maquina virtual aparentemente infinitiva.

• AMAZON, han realizado pruebas de un ambiente con 10.000 Nucleos