Chamilo y sistemas distribuidos
Yannick WarnierLíder, Proyecto Chamilo
- 2014 -
Twitter: @ywarnierHashtag: #chamiloinfra
Comunidad
Plataformaeducativa
AsociaciónSocios
Empleo
Software (libre)
Empresas / universidades
+500 personas alrededor del mundo
5 directores en 4 paísesProyectos de I+D
8,300,000 usuarios – 16,000 portales(*)
Adaptable / Sin costo de licencia
Desde el 2010
(*) https://version.chamilo.org/stats/, 09/2014
Campus libre de Chamilo
340,000 usuarios
2 características
Simple de uso
Liviano
Twitter: @ywarnierHashtag: #chamiloinfra
Dictar o seguir cursos
Esquema Chamilo
Sistemas distribuidos
● Definición simple● Sistemas que, por su uso planificado, requieren
tener funcionalidades repartidas entre distintas máquinas físicas– Físicas: aunque esté en la nube, si todo está en la
misma máquina física, la distribución no es ideal
Sistemas distribuidos
● Lo que NO veremos en esta presentación● Computación distribuida (supercomputación)● Redes virtualizadas● Mega-virtualización (Amazon, etc)
Sistemas distribuidos
● Lo que SÍ veremos● Alta disponibilidad (Fail-Over) (10')● Balanceo de carga (15')● Distribución “suelta” de nodos
(sincronizaciones asíncronas) (10')● Distribución de bases de datos (5')● Distribución de espacio en disco (5')
Alta disponibilidad (fail over)
● Fundamento● Si falla cualquier componente, sigue el servicio● Ningún elemento es un punto único de falla● Como grupo de personas en una organización,
entre las cuales existe más de una persona (siempre) que puede hacer una tarea determinada, cubriendo todas las tareas posibles…– Infraestructura duplicada? → puede ser un anillo
Alta disponibilidad (fail over)
● Primer paso
● Tengo 1 servidor
● Que pasa si se quema el disco?– Necesito un remplazo (de disco)
Twitter: @ywarnierHashtag: #chamiloinfra
Alta disponibilidad (fail over)
● Primer paso
● Tengo 1 servidor con 2 discos
● Que pasa si se quema la RAM?– Necesito un remplazo (de RAM)
● Se puede tener redundancia de RAM?– Sí, pero no es barato…
Alta disponibilidad (fail over)
● Primer paso
● Tengo 2 servidores
● Que pasa si se quema la RAM, el CPU, el disco?– Tengo otro servidor :-)– Necesito una configuración especial
● Redundancia, o “fail over”● Tiempo de sustitución: segundos
Alta disponibilidad (fail over)
● Primer paso
● Tengo 2 servidores
● Que pasa si se quema la RAM, el CPU, el disco?– Tengo otro servidor :-)
● Segundo paso● Que pasa si se quema el switch que apunta a mis
servidores?– Gnnnnn….
Alta disponibilidad (fail over)
● Primer paso
● Tengo 2 servidores
● Que pasa si se quema la RAM, el CPU, el disco?– Tengo otro servidor :-)
● Segundo paso
● Tengo 2 switches
● Que pasa si se quema un switch?– Tengo otro– Necesito material especial (tiempo de sustitución)
Alta disponibilidad (fail over)
● Tercer paso
● Tengo 2 servidores y 2 switches
● Que pasa si se me va la conexión internet?– Necesito otra– Necesito dispositivos/servicios especiales
Alta disponibilidad (fail over)
● Tercer paso
● Tengo 2 servidores y 2 switches
● Tengo redundancia internet
● Cuarto paso● Que pasa si se me va la luz?
– Necesito redundancia eléctrica– Tiempo de sustitución de fuentes?
● Normal → UPS → grupo electrógeno (gasolina)
– Que duración necesito? (24h? 48h?)● Caso tormenta Nueva York 2013
Balanceo de carga (load balancer)
● Primer paso
● Tengo 2 servidores en Fail-Over (y todo lo demás)
● Que pasa si hay sobrecarga de usuarios?– Típico: Los alumnos revisan antes de su examen
Uso típico
1er día exámenes
Balanceo de carga (load balancer)
● Primer paso
● Tengo 2 servidores en Fail-Over (y todo lo demás)
● Que pasa si hay sobrecarga?– (1) Usar los 2 servidores a la vez (o más)– (2) Separar las funciones entre distintos servidores– (3) Añadir capas para reducir la carga en recursos clave
Balanceo de carga (load balancer)
● Usar los 2 servidores a la vez (o más)?● Balanceadores de carga
– Hardware (costosos y poco configurables)– Software
● Varnish● Nginx● …
Twitter: @ywarnierHashtag: #chamiloinfra
Balanceo de carga (load balancer)
● Separar las funciones● Servidor web (procesamiento)
– Apache/Nginx/Cherokee/Lighttpd/...● Base de datos
– MySQL/MariaDB/PostgreSQL/MongoDB/CouchDB/…● Reverse proxy
Balanceo de carga (load balancer)
● Añadir capas para reducir la carga en otras● Servidor de “assets” (recursos estáticos)
– Varnish/Nginx/Apache/… en modo “caché” (reverse proxy)● Caché de sesiones● Caché de queries● Caché “opcode” (operation code, machine language)● Caché de variables (“userland”)
● ...hacia la especialización de cada componente
Balanceo de carga (load balancer)
● Extra● Duplicación de servidores web => espacio compartido● “Storage” (NAS, SAN, etc)● Criterios en la nube:
– Espacio total– Frecuencia de consultas– Frecuencia de modificaciones
Balanceo de carga (load balancer)● Un cluster de balanceo y fail-over “mínimo” ?
Balanceo de carga (load balancer)● Que servicios?
corosync
LoadBalancer
corosync
OCFS2
Balanceo de carga (load balancer)● Y Chamilo ?
Nginx
Nginx + Config Chamilo
Responsa
bilidad: D
atacenter
Archivos Chamilo
BdD Chamilo
Distribución “suelta”
● Cuando los requerimientos incluyen mala conectividad: Servidores locales
● Buena conectividad● Imposibilidad de control centralizado
Distribución “suelta”● A nivel aplicativo, desarrollar sincronización
Distribución de bases de datos
● Replicación “estándar”● 1 master● 1 slave
● Replica todo lo que se hace en el master
Distribución de bases de datos
● Replicación extendida● 1 master● + slaves
● Replicación en cadena
Distribución de bases de datos
● Soluciones de software libre● MariaDB (ex MySQL), pero solo v10● Percona● PostgreSQL● MongoDB● CouchDB
Twitter: @ywarnierHashtag: #chamiloinfra
Distribución de bases de datos● Replicación fail-over● 2 masters (master-master)● 0 slave● Se replican el uno el otro● No se aconseja usarlos en simultáneo● Si falla uno, el otro retoma● Cuando se levanta el primero, se sincroniza● Requiere sistema de cluster como corosync
● Para que la aplicación sepa donde conectarse
Distribución de espacio en disco● Problemáticas
● Repartición de carga requiere espacio común● Sincronización de escrituras simultáneas es un lío● Necesidad de mucho espacio● SAN = $$$$$$
● Necesidades● Alta disponibilidad● Redimensionamiento en caliente● Usar desde cualquier máquina
Distribución de espacio en disco
● Soluciones● Distribución del disco entre máquinas
– Necesidad de un “orquestador”● Distribución del disco “como servicio (web)”
– Necesidad de modificaciones en la aplicación
● Software libre:● Ceph, Lustre, OCFS2, GlusterFS, FreeNAS, etc
Contacto
Yannick Warnier
Presidente - Asociación Chamilo
CTO –
Correo: [email protected]
Twitter: @ywarnierHashtag: #chamiloinfra
Thanks
● DigitalOcean for visual resources● https://www.digitalocean.com/community/tutorials/
5-common-server-setups-for-your-web-application
Top Related