Clustering de Alta Disponibilidad
bajo GNU/Linux
Vicente José Aguilar Roselló
<
[email protected]>, <
[email protected]>
Septiembre 2001
Tutor: D. Manuel Marco Such
Departamento de Lenguajes y Sistemas Informáticos
Resumen:
Este trabajo explora las distintas posibilidades que nos ofrece hoy en día el mundo del Software
Libre para implantar servidores de alta disponibilidad en el terreno empresarial y orientados
principalmente al servicio en Internet (servidores HTTP, SMTP, POP, etc), basados en la
replicación de servidores (clustering) con arquitecturas PC Intel x86 y bajo el Sistema Operativo
GNU/Linux.
El presente documento se publica bajo los términos de la licencia FDL (Free Documentation License) de GNU y puede ser
redistribuido o modificado según los mismos. Todos los programas, scripts o ficheros de configuración aquí expuestos se
distribuyen bajo la licencia GPL (General Public License) de GNU, y se garantiza el derecho de redistribución y
modificación bajo los términos de dicha licencia. El texto de ambas licencias se puede encontrar en la página web de
GNU en http://www.gnu.org y en los enlaces de la bibliografía al final de este documento.
(http://www.debian.org)
Este trabajo ha sido desarrollado íntegramente utilizando software libre: la plataforma de desarrollo fue Debian
GNU/Linux
(http://www.gnome.org,
http://www.ximian.com); para la edición del texto se utilizó AbiWord (http://www.abisource.com) y Open Office
(http://www.openoffice.org); para los diagramas, figuras y esquemas, DIA (http://www.lysator.liu.se/~alla/dia/); para los
gráficos de barras, el gnuplot (http://www.gnuplot.org); y para el retoque de gráficos, el GIMP (http://www.gimp.org); y
para convertir el fichero PostScript generado por OpenOffice a PDF con el conversor ps2pdf del paquete GhostScript
(http://www.ghostscript.com).
entorno
de
escritorio GNOME
con
el
2001 ã Vicente José Aguilar Roselló <
[email protected]>, <
[email protected]>.
Índice de contenidos
1. Introducción 1
1.1. GNU/Linux y el Software Libre 2
1.2. Introducción al clustering de servidores 3
1.3. Consideraciones previas 5
2. Gestión del almacenamiento 7
2.1. Gestión avanzada de los discos 7
2.1.1. RAID 7
2.1.2. LVM 10
2.2. Sistemas de Ficheros 13
2.2.1. ext2 13
2.2.1.1. Estructura física 15
2.2.1.2. Los i-nodos 16
2.2.1.3. Uso 17
2.2.1.4. ext3 18
2.2.2. ReiserFS 18
2.2.2.1. Sistemas transaccionales 18
2.2.2.2. Características de ReiserFS 19
2.2.2.3. Árboles B* 20
2.2.2.4. Uso 22
2.2.3. xfs y jfs 24
3. Distribución de los datos 25
3.1. Replicación de archivos 25
3.1.1. rsync 25
3.1.1.2. El algoritmo rsync 26
3.1.1.3. Resultados 27
3.1.1.4. Instalación y uso 28
3.2. Sistemas de ficheros distribuidos 30
3.2.1. NFS 30
3.2.1.1. Los protocolos detrás de NFS 30
3.2.1.2. El servidor 31
3.2.1.3. El cliente 33
3.2.1.4. Precauciones 34
3.2.2. Samba 35
3.2.2.1. Programas 36
3.2.2.2. Configuración 36
3.2.2.3. Accediendo a Windows desde Linux 38
3.2.3. CODA 39
3.2.3.1. Terminología CODA 40
3.2.3.2. Los servidores 41
3.2.3.3. Los clientes 45
3.2.3.4. Características avanzadas 45
3.2.4. GFS 46
3.2.4.1. Sistemas de discos compartidos 47
3.2.4.2. Características de GFS 47
3.2.4.2. Instalación de GFS sobre Canal de Fibra 48
3.2.4.3. Limitaciones de GFS 53
4. Monitorización 55
4.1. daemontools y ucspi-tcp 55
4.1.1. Configuración y uso 55
4.2. mon 57
4.3. heartbeat y fake 58
4.4. Failover de red con iANS de Intel 58
4.4.1. Configuración de iANS en modo AFT 60
4.4.2. Ejemplo de configuración manual 62
5. Clustering de Alta Disponibilidad 63
5.1. Linux Virtual Server 63
5.1.1. Visión general de LVS 63
5.1.2. Cómo distribuir la carga 65
5.1.3. Modos de balanceado de carga en LVS 66
5.1.3.1. Balanceado por NAT (VS-NAT) 66
5.1.3.2. Balanceado por encapsulado IP (VS-Tun) 69
5.1.3.3. Balanceado por enrutamiento directo (VS-DR) 71
5.1.3.4. Resumen de los métodos de balanceado 73
5.1.4. Planificación del balanceo de carga 73
5.1.4.1. Round Robin 73
5.1.4.2. Round Robin Ponderado 74
5.1.4.3. Servidor con menos conexiones activas 74
5.1.4.4. Servidor con menos conexiones activas (ponderado) 75
5.1.4.5. Menos conectado basado en servicio 75
5.1.4.6. Tablas hash por origen y destino 75
5.1.4.7. Conexiones persistentes 75
5.1.5. Alta disponibilidad en LVS 76
5.1.5.1. mon+heartbeat+fake+coda 76
5.1.5.2. ldirectord+heartbeat 78
5.1.6. El software 79
5.1.6.1. lvs-gui 80
5.1.6.2. LVSM 82
5.1.6.3. Módulo webmin para LVS 82
5.1.6.4. Ultra Monkey 82
5.1.6.5. Piranha 85
5.2. Super Sparrow 86
5.2.1. BGP 86
5.2.2. Funcionamiento de Super Sparrow 87
5.2.3. El software 89
5.2.4. Super Sparrow y Apache 91
6. Programas para la instalación y administración 93
6.1. Linux Utility for cluster Installation (LUI) 93
6.2. FAI 95
6.2.1. Funcionamiento 95
6.3. VA SystemInstaller 96
6.3.1. Requerimientos 97
6.3.2. Funcionamiento 98
6.4. webmin 100
7. Probando el software 103
7.1. Instalación de GNU/Linux en un equipo 103
7.2. RAID, LVM, ext2 y reiserfs 103
7.3. Instalación remota con VA System Imager 112
7.3.1. Instalación del software en el servidor 112
7.3.2. Instalación linux en el golden client 113
7.3.3. Instalación del software cliente en el golden client 114
7.3.4. Ejecutar getimage en el servidor 115
7.3.5. Creación del disco de arranque para instalar los clientes 122
7.4. CODA 124
7.4.1. El servidor CODA 125
7.4.2. El cliente CODA 132
7.4.3. Pruebas de rendimiento 135
7.5. mon 141
7.6. iANS 143
8. Conclusiones 147
9. Bibliografía 151
9.1. Documentación, HOWTOs y FAQs 151
9.2. RFCs 152
9.3. Licencias 153
10. Enlaces 155
Índice de imágenes
Imagen 1. RAID: Situación 9
Imagen 2. LVM: Situación 11
Imagen 3. LVM: Asignación de espacio 12
Imagen 4. ext2: Estructura del disco 15
Imagen 5. ext2: Estructura de una partición 15
Imagen 6. ext2: i-nodos 16
Imagen 7. ReiserFS: Árboles B 21
Imagen 8. CODA: Árbol de directorios 40
Imagen 9. CODA: Organización de una celda 43
Imagen 10. GFS: Esquema general 48
Imagen 11. LVS: Esquema general 63
Imagen 12. LVS: VS-NAT 66
Imagen 13. LVS: VS-NAT, esquema físico 67
Imagen 14. LVS: Encapsulado IP 69
Imagen 15. LVS: VS-Tun 69
Imagen 16. LVS: VS-DR 71
Imagen 17. LVS: Alta disponibilidad 77
Imagen 18. LVS: lvs-gui 81
Imagen 19. LVS: Ultra Monkey, método 1 83
Imagen 20. LVS: Ultra Monkey, método 2 83
Imagen 21. LVS: Ultra Monkey, método 3 84
Imagen 22. LVS: Ultra Monkey, método 4 84
Imagen 23. Super Sparrow: Ejemplo BGP 87
Imagen 24. Super Sparrow: Ejemplo de funcionamiento 88
Imagen 25. Super Sparrow: Funcionamiento de mod_supersparrow 90
Imagen 26. Super Sparrow: Integración con Apache 91
Imagen 27. LUI: Interfaz gráfico 94
Imagen 28. VA SystemImager: Instalación, paso 1 99
Imagen 29. VA SystemImager: Instalación, paso 2 99
Imagen 30. VA SystemImager: Instalación, paso 3 99
Imagen 31. webmin: Menú principal 100
Imagen 32. webmin: Administración Cyrus IMAP 101
Imagen 33. Comparativa: ext2 vs. reiserfs (1/2) 104
Imagen 34. Comparativa: ext2 vs. reiserfs (2/2) 105
Imagen 35. Comparativa: RAID + LVM + ext2 (1/2) 106
Imagen 36. Comparativa: RAID + LVM + ext2 (2/2) 107
Imagen 37. Comparativa: RAID + LVM + reiserfs (1/2) 108
Imagen 38. Comparativa: RAID + LVM + reiserfs (2/2) 109
Imagen 39. Comparativa: RAID + ext2 vs. RAID + reiserfs 110
Imagen 40. Comparativa: RAID1 + reiserfs 111
Imagen 41. Comparativa: NFS vs. CODA 140
Imagen 42. Conclusión: Cluster sencillo 147
Índice de tablas
Tabla 1. rsync: Rendimiento 27
Tabla 2. NFS: Demonios 31
Tabla 3. NFS: Servicios, puertos y protocolos 35
Tabla 4. CODA: Procesos servidores 42
Tabla 5. CODA: Particiones en el servidor 44
Tabla 6. LVS: Métodos de direccionamiento 73
Tabla 7. VA SystemImager: Distribuciones soportadas 97
Tabla 8. VA SystemImager: Otras distribuciones 97
1. Introducción
Con el actual ritmo de crecimiento del comercio y el movimiento de datos de todo tipo en Internet
(más de un 100% anual) y la incuestionable importancia de la informática en las empresas actuales
de cualquier tamaño, es cada día más importante que los sistemas informáticos de éstas puedan
funcionar de forma ininterrumpida y sin errores las 24h del día, 7 días a la semana y 365 días al
año, ya sea para dar soporte interno (contabilidad, control de personal, desarrollo...) como para
ofrecer servicios a través de Internet (comercio electrónico, correo, portales, etc). A esta necesidad
de un servicio ininterrumpido y fiable se le conoce como alta disponibilidad.
Dos estudios independientes realizados en 1995 por Oracle Corp. y Datamation revelaron que una
empresa media pierde entre 80,000 y 350,000 dólares (entre 15 y 70 millones de pesetas) por hora
de interrupción no planeada de sus servicios informáticos. Otro ejemplo de la necesidad de la alta
disponibilidad es que tras el atentado en el World Trade Center en 1993, 145 de las 350 empresas
que allí se hospedaban (algo más del 40%) tuvieron que cerrar sus puertas tras este incidente por
no disponer de una infraestructura informática redundante.
La principal técnica para obtener estos sistemas tolerantes a fallos es la redundancia, estrategia
utilizada en la industria aeronáutica prácticamente desde sus principios, que consiste en replicar las
zonas críticas del sistema, teniendo una unidad activa y varias copias inactivas que, tras el fallo de
la principal, sean capaces de retomar su labor en el punto que aquella falló, en el menor tiempo
posible y de forma transparente para el usuario.
Existen gran cantidad de servidores altamente redundantes en el mercado fabricados por SUN,
IBM y demás empresas del ramo. Son grandes máquinas multiprocesador , con varias controladoras
de disco, configuraciones RAID, fuentes de alimentac
Comentarios de: Clustering de Alta Disponibilidad bajo GNU/Linux (0)
No hay comentarios