Alta disponibilidad y balanceo de carga en Linux

17,087 views

Published on

Presentación de la charla sobre Alta Disponibilidad y Balanceo de Carga en Linux presentada en los cursos del GUL de la Universidad Carlos III de Madrid.

Published in: Technology, News & Politics
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
17,087
On SlideShare
0
From Embeds
0
Number of Embeds
128
Actions
Shares
0
Downloads
565
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Alta disponibilidad y balanceo de carga en Linux

  1. 1. Alta Disponibilidad y Balanceo de Carga en Linux --------- Cursos GUL Marzo::2008 Javier Turégano Molina
  2. 2. Indice INDICE <ul><ul><li>Introducción
  3. 3. Heartbeat
  4. 4. IPVS
  5. 5. Keepalived
  6. 6. Almacenamiento Compartido
  7. 7. Casos de Éxito
  8. 8. Preguntas </li></ul></ul>
  9. 9. Introducción ¿Qué es eso de la alta disponibilidad?
  10. 10. Introducción ¿Qué es el balanceo de carga?
  11. 11. Introducción ¿Qué tipos de crecimiento hay? VERTICAL HORIZONTAL
  12. 12. Introducción ¿Es importante la compartición de datos entre nodos?
  13. 13. Introducción ¿Tenemos disponibles todas esas herramientas con Software Libre? -Alta disponibilidad: Heartbeat - Balanceo de carga: IPVS + Keepalived - Almacenamiento compartido: DRBD, JFS, OCFS, iSCSI, AoE
  14. 14. Introducción Pero, ¿quién está utilizando esto?
  15. 15. Introducción Alguna pega debe de tener ¿no?
  16. 16. HEARTBEAT :: HEARTBEAT :: http://www.linux-ha.org/HeartbeatProgram
  17. 17. HEARTBEAT Heartbeat es uno de los componentes principales del proyecto Linux-HA (Linux Hight Availability). Multiplataforma: Linux ,FreeBSD y Solaris. Nos ofrece detección de nodos caidos, comunicación y gestión de cluster en un solo proceso.
  18. 18. ¿Cómo funciona Heartbeat? Heartbeat utiliza un sistema de latidos. Recomendaciones: - Comunicación dedicada - Comunicación redundante
  19. 19. ¿Cómo funciona Heartbeat? Asignamos los recursos <ul><ul><li>Dirección IP de servicio
  20. 20. Servidores activos </li></ul></ul>Maestro de almacenamiento
  21. 21. Heartbeat (Activo - Pasivo) ALTA DISPONIBILIDAD ACTIVO-PASIVO
  22. 22. Heartbeat (Activo - Pasivo) Z Z Z
  23. 23. Heartbeat (Activo – Pasivo Multiservicio) ALTA DISPONIBILIDAD ACTIVO-PASIVO MULTISERVICIO
  24. 24. Heartbeat (Activo – Pasivo Multiservicio)
  25. 25. Heartbeat (Failover) Opciones de recuperación del nodo caido: Autofailback on/off
  26. 26. Hearbeat (Autofailback on)
  27. 27. Configuración de Heartbeat Hearbeat se configura a través de dos ficheros de configuración principales: /etc/ha.d/ha.cf /etc/ha.d/haresources
  28. 28. Configuración de Heartbeat /etc/ha.d/ha.cf logfile /var/log/ha-log logfacility local0 keepalive 2 warntime 3 deadtime 12 initdead 30 auto_failback off udpport 694 bcast eth1 ping 192.168.17.2 192.168.17.1 node constantinopla node alejandria
  29. 29. Configuración de Heartbeat Ejemplo Activo – Pasivo /etc/ha.d/haresources constantinopla 192.168.1.1 apache postfix alejandria Ejemplo Activo – Pasivo Multiservicio /etc/ha.d/haresources constantinopla 192.168.1.1 apache postfix alejandria 192.168.1.2 mysql
  30. 30. Hearbeat 2 ¿Qué ventajas nos aporta la versión 2 de hearbeat?
  31. 31. Heartbeat 2 Configuration <?xml version=&quot;1.0&quot; ?> <cib> <configuration> <crm_config> <nvpair id=&quot;transition_idle_timeout&quot; name=&quot;transition_idle_timeout&quot; value=&quot;120s&quot;/> <nvpair id=&quot;symmetric_cluster&quot; name=&quot;symmetric_cluster&quot; value=&quot;true&quot;/> <nvpair id=&quot;no_quorum_policy&quot; name=&quot;no_quorum_policy&quot; value=&quot;stop&quot;/> </crm_config> <nodes/>
  32. 32. Hearbeat 2 Configuration <resources> <group id=&quot;group_1&quot;> <primitive class=&quot;ocf&quot; id=&quot;IPaddr_1&quot; provider=&quot;heartbeat&quot; type=&quot;IPaddr&quot;> <operations> <op id=&quot;1&quot; interval=&quot;5s&quot; name=&quot;monitor&quot; timeout=&quot;5s&quot;/> </operations> <instance_attributes> <attributes> <nvpair name=&quot;ip&quot; value=&quot;10.0.200.30&quot;/> <nvpair name=&quot;netmask&quot; value=&quot;16&quot;/> <nvpair name=&quot;nic&quot; value=&quot;eth0&quot;/> </attributes> </instance_attributes> </primitive>
  33. 33. Hearbeat 2 Configuration <primitive class=&quot;ocf&quot; id=&quot;apache2id&quot; provider=&quot;heartbeat&quot; type=&quot;apache2&quot;> <operations> <op id=&quot;3&quot; name=&quot;monitor&quot; interval=&quot;10s&quot; timeout=&quot;10s&quot;/> </operations> </primitive> </group> </resources> <constraints> <rsc_location id=&quot;rsc_location_group_1&quot; rsc=&quot;group_1&quot;> <rule id=&quot;prefered_location_group_1&quot; score=&quot;100&quot;> <expression attribute=&quot;#uname&quot; operation=&quot;eq&quot; value=&quot;mars&quot;/> </rule> </rsc_location> </constraints> </configuration> <status/> </cib>
  34. 34. IPVS :: IPVS (IP Virtual Server) :: http://www.linuxvirtualserver.org/software/ipvs.html IPVS implementa balanceo de carga a nivel de la capa de transporte dentro del kernel de Linux (layer4-switching). IPVS actua como un balanceador de carga. Puede redirigir conexiones a servicios TCP/UDP a los servidores reales, y así hacer parecer que estos servicios de varios servidores como un único servicio virtual para una IP.
  35. 35. IPVS
  36. 36. IPVS - Caracteristicas Caracteristicas: <ul><li>Soporte para protocolos UDP y TCP </li></ul><ul><li>Tres métodos de reenvio de paquetes: </li></ul><ul><ul><li>NAT
  37. 37. Tunneling
  38. 38. Direct Routing </li></ul></ul><ul><li>Ocho algoritmos de balanceo de carga: Round robin, weighted round robin, least-connec-tion, weighted least-connection, locality-based least-connection, locality-based least-connection with replication, destination-hashing, and source-hashing </li></ul>
  39. 39. IPVS Versiones: La versión estable actual es ipvs 1.2.1 y está incluida de serie en los kernel de linux a partir de la versión 2.6.10. Para los kernels 2.4 también tenemos disponible la versión de ipvs 1.0.12 a partir del kernel 2.4.28. Aparte del módulo del kernel disponemos de una aplicación en línea de comandos para administrarlo: ipvsadm
  40. 40. Ejemplo - IPVS Ejemplo: Configuración de un balanceador con IPVS para que distribuya el tráfico que reciba por el puerto 80 a 5 servidores reales.
  41. 41. Ejemplo - IPVS Añadimos un servicio virtual para 207.175.44.110: $ ipvsadm -A -t 207.175.44.110:80 -s rr Añadimos los servidores al servicio virtual: $ ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m $ ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m $ ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m $ ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4:80 -m $ ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5:80 -m
  42. 42. Ejemplo - IPVS Necesitaremos activar el reenvio ip: $ echo &quot;1&quot; > /proc/sys/net/ipv4/ip_forward Listado de rutas existentes y activas: $ ipvsadm -l Nos va a ser muy útil para paradas programadas y mantemiento.
  43. 43. Failover en IPVS ¿Qué ocurre si uno de los equipos del balanceo cae? Para solucionarlo podemos utilizar: Keepalived
  44. 44. Keepalived :: KEEPALIVED :: http://www.keepalived.org/
  45. 45. Keepalived El objetivo principal de Keepalived es añadir una utilidad fuerte y robusta de recuperación ante fallos en el proyecto de Linux Virtual Server. Está escrito en C y nos provee de un sistema de chequeos multicapa sobre la pila TCP/IP. Nos permite trabajar en 3 capas: 3, 4 y 5/7.
  46. 46. Keepalived ¿Cómo funciona keepalived?
  47. 47. Keepalived
  48. 48. Configuración de Keepalived /etc/keepalived/keepalived global_defs { notification_email { [email_address] } notification_email_from balanceador@miservidor.net smtp_server 192.168.18.2 smtp_connect_timeout 30 lvs_id BALANCEADOR1_LVS }
  49. 49. Configuración de Keepalived vrrp_instance VI_EXTERNA { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 150 advert_int 1 smtp_alert authentication { auth_type PASS auth_pass example } virtual_ipaddress { 192.168.17.115} }
  50. 50. Configuración de Keepalived virtual_server 192.168.17.115 110 { delay_loop 6 lb_algo wlc lb_kind NAT nat_mask 255.255.255.0 protocol TCP real_server 192.168.5.1 110 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 110 } } real_server 192.168.5.2 110 { weight 1 TCP_CHECK { connect_timeout 3 connect_port 110 } } }
  51. 51. Almacenamiento compartido
  52. 52. Almacenamiento compartido ¿En qué casos necesitamos almacenamiento compartido?
  53. 53. Almacenamiento compartido <ul><li>Soluciones Software </li></ul>Acitvo/Pasivo DRBD + Ext3/Reiserfs Activo/Activo DRBD 8 + GFS/OCFS2 iSCSI/AoE + GFS/OCFS2
  54. 54. Almacenamiento Compartido <ul><li>Soluciones Hardware </li></ul>Storage Area Network (SAN) + GFS/OCFS2 Network Attached Storage (NAS) + NFS/SMB-CIFS
  55. 55. GFS2 vs OCFS2 Podemos encontrar una extensa comparativa de sistemas de ficheros en: http://en.wikipedia.org/wiki/Comparison_of_file_systems
  56. 56. DRBD :: DRBD :: http://www.drbd.org/ Drbd es un dispositivo de bloques que está diseñado para construir &quot;clusters&quot; de alta disponibilidad. Se realiza por medio de una copia idéntica de todo un dispositivo de bloques através de una red (dedicada). Lo podemos ver como un RAID-1 en red.
  57. 57. DRBD 8 Ventajas de DRBD Version 8
  58. 58. Casos de Exito Veamos algunos casos de éxito.
  59. 59. Preguntas y Contacto ¿ ? www.turegano.net www.twitter.com/setoide Licencia Creative Commons Reconocimiento 2.5 de España

×