Академический Документы
Профессиональный Документы
Культура Документы
UNAP
PROYECTO DE GRADO
TEMA:
“DISEÑO DE UNA SOLUCIÓN PARA SERVIDORES DE
ALTA DISPONIBILIDAD Y BALANCEO DE CARGA CON
OPEN SOURCE”
Señor:
Coordinador de Tesis y Proyectos de Grado UNAP
Presente.-
De nuestras consideraciones:
Por consiguiente, otorgamos la aptitud para la presentación del grado oral del
mencionado estudiante.
Agradeciendo su atención
Señores:
Presente.-
De mis consideraciones:
Agradeciendo su atención
Mauricio Gallardo
C.I. 1710049139
A mi esposa, por ser el pilar y soporte en todo lo que hago en mi vida, por ser
la persona que me ha brindado su apoyo y comprensión incondicional en la
culminación de mi carrera, sin lugar a duda es parte esencial para haber
terminado mis estudios universitarios, gracias por todo lo que has hecho para
alcanzar esta meta, este logro también es tuyo.
DEDICATORIA
A mis hijas, quienes comprendieron que el tiempo que debía entregarles a ellas
lo ocupaba en culminar mi carrera, quiero que este logro sea para ellas un
ejemplo de perseverancia y sacrificio y que sea también un ejemplo para la
culminación de sus carreras profesionales en su momento, entiendan que todo
lo que uno se propone en la vida es posible con dedicación y esfuerzo.
INDICE
INTRODUCCION ................................................................................................. i
CAPITULO 1 ....................................................................................................... 1
GENERALIDADES ............................................................................................. 1
1.1. PLANEAMIENTO DEL PROBLEMA ............................................................ 1
1.2. FORMULACION DEL PROBLEMA .............................................................. 2
1.3. SISTEMATIZACION .................................................................................... 2
1.4. OBJETIVO GENERAL ................................................................................. 2
1.5. OBJETIVOS ESPECIFICOS ........................................................................ 3
1.6. JUSTIFICACIÓN .......................................................................................... 3
1.7. ALCANCE .................................................................................................... 4
CAPITULO 2 ....................................................................................................... 6
INTRODUCCION ................................................................................................ 6
FUNDAMENTACION TEORICA ......................................................................... 6
MARCOS DE REFERENCIA (Teórico, Conceptual) ........................................... 6
2.1. MARCO TEORICO ...................................................................................... 6
2.1.1. Clustering .................................................................................................. 6
2.1.1.1. Antecedentes ......................................................................................... 6
2.1.1.2 Que es el clustering? .............................................................................. 7
2.1.1.3. Tipos de clúster ...................................................................................... 8
2.1.1.4. High Performance .................................................................................. 8
2.1.1.5. Clúster Activo/Pasivo ........................................................................... 14
2.1.1.6. Clúster Activo/Activo ............................................................................ 14
2.1.2. Arquitectura de Clustering....................................................................... 15
2.1.2.1. Alta disponibilidad ................................................................................ 16
2.1.2.2. Escalabilidad ........................................................................................ 20
2.1.3. Funcionamiento de un clúster ................................................................. 22
2.1.3.1. Balanceador de carga .......................................................................... 22
2.1.3.2. Sistema para la detección de fallos en los nodos del clúster ............... 24
2.1.3.3. Recursos del clúster ............................................................................ 25
2.1.3.4. Servicio a clusterizar ............................................................................ 25
2.1.4. Balanceo de Carga ................................................................................. 26
2.1.4.1. Balanceadores hardware ..................................................................... 29
2.1.4.2. Balanceadores software....................................................................... 30
2.1.4.3. Linux Virtual Server - LVS .................................................................... 30
2.1.5. Detección de fallos en los nodos del clúster ........................................... 32
2.1.5.1. Heartbeat ............................................................................................. 32
2.1.5.2. Disco de quorum .................................................................................. 34
CAPITULO 3 ..................................................................................................... 36
INTRODUCCION .............................................................................................. 36
DIAGNOSTICO ................................................................................................. 36
3.1. Herramientas de open source para la construcción del Clúster ................. 36
3.2. Comparación de las herramientas de balanceo de carga y alta
disponibilidad .................................................................................................... 40
3.2.1. Herramientas de balanceo de carga y alta disponibilidad ....................... 44
3.2.1.1. Piranha................................................................................................. 44
3.2.1.2. Linux Virtual Server .............................................................................. 45
3.2.1.3. Ultramonkey ......................................................................................... 47
3.2.1.3.1. Componentes Ultramonkey ............................................................... 47
3.2.1.3.1.1. Heartbeat ....................................................................................... 48
3.2.1.3.1.2. Ldirectord ....................................................................................... 48
3.2.1.3.1.3. Mon (Service Monitoring Daemon)................................................. 49
CAPITULO 4 ..................................................................................................... 50
INTRODUCCION .............................................................................................. 50
DISEÑO ............................................................................................................ 50
4.1. Tipos de balanceo de carga ....................................................................... 50
4.1.1. Modos de balanceo de carga en LVS ..................................................... 51
4.1.2. Resumen de los métodos de balanceo ................................................... 56
4.1.3. Planificación del balanceo de carga ........................................................ 57
4.2. Elección de una herramienta para balanceo de carga y alta disponibilidad
.......................................................................................................................... 62
CAPITULO 5 ..................................................................................................... 69
INTRODUCCION .............................................................................................. 69
IMPLEMENTACION EN MAQUINAS VIRTUALES ........................................... 69
5.1 INSTALACION Y CONFIGURACION DEL CLUSTER ................................ 69
5.1.1 SELECCIÓN DE NODOS PARA EL CLÚSTER ...................................... 71
5.1.2 Instalación de los nodos........................................................................... 74
5.1.3. Configuración de los servidores web ...................................................... 76
5.2. Instalación de CentOs ................................................................................ 78
5.3. Instalación de Ultramonkey ........................................................................ 78
5.3.1. Selección de topología de instalación de ultamonkey ............................. 79
5.3.1.1. Directores Linux o Nodos de balanceo ................................................ 80
5.3.1.2. Nodos servidores o servidores reales .................................................. 81
5.4. Configuración de Heartbeat en los nodos de balanceo ............................. 81
5.5. Configuración de la red de trabajo ............................................................. 81
5.6. Configuración del clúster ........................................................................... 82
5.6.1. Directores Linux, nodos de balanceo ...................................................... 82
5.6.2. Heartbeat ................................................................................................ 82
5.7. Instalar y configurar IPROUTE en los nodos servidores ............................ 83
5.8. Pruebas de desempeño ............................................................................. 84
5.8.1. Herramientas para medición de rendimiento .......................................... 86
5.8.1.1. Selección de una herramienta para medición de rendimiento ............. 86
CONCLUSIONES ............................................................................................. 91
Anexo 1 Instalación de Centos ......................................................................... 95
Anexo 2 Instalación de la Solución ................................................................. 118
INDICE DE FIGURAS
INTRODUCCION
de los servicios y pasa a ser el activo para que los servicios ofrecidos estén
siempre disponibles.
CAPITULO 1
GENERALIDADES
Actualmente en el país existen pocas empresas que han optado por instalar
open source en sus servidores debido al poco personal técnico capacitado,
pese a que el gobierno nacional promueve el uso de open source en las
entidades públicas. Este trabajo se enfoca en el uso de software libre para la
implementación de la solución planteada.
1.3. SISTEMATIZACION
Investigar las distintas posibilidades que nos ofrece hoy en día el mundo del
Software Libre para disponer de servidores de alta disponibilidad y balanceo de
carga en el terreno empresarial y orientado principalmente a servicios IP
(servidores HTTP, SMTP, POP, FTP, etc), basados en la replicación de
servidores (clustering) con máquinas virtuales y bajo el Sistema Operativo
GNU/Linux.
1.6. JUSTIFICACIÓN
1.7. ALCANCE
CAPITULO 2
INTRODUCCION
FUNDAMENTACION TEORICA
En este sentido para que una empresa pueda contar con un clúster
es necesario considerar los diferentes tipos existentes dependiendo
de la tarea que se quiera realizar con este, como lo muestra la tabla
2.1.
High Performance
High Availability
Load Balancing
Subtipo Descripción
Homogéneo Es donde todos los nodos poseen una
configuración de hardware y software iguales.
Semi- Es donde se poseen arquitecturas y sistemas
homogéneo operativos similares pero de diferente rendimiento.
Heterogéneo Es donde se poseen hardware y software distintos
para cada nodo.
Componente Descripción
Estas son las conexiones de los nodos a la red de trabajo
Conexiones de red. del clúster siendo tan complejas como lo sean las
tecnologías y medios utilizados en su instalación.
Protocolos de Aquí normalmente se cuenta con el protocolo de
comunicación y comunicaciones TCP/IP y servicios de transporte de datos.
servicios.
Son simples computadoras o sistemas multiprocesador; en
Nodos. estos se hospedan el Sistema Operativo, el middleware y lo
necesario para la comunicación a través de una red.
Se define a grandes rasgos como un programa o conjunto
Sistema Operativo. de ellos que están destinados a gestionar de manera eficaz
los recursos de una computadora. Como ejemplo se tiene
Unix, Mac OSX.
Es un software que actúa entre el Sistema Operativo y las
aplicaciones con la finalidad de proveer a un clúster las
Middleware. características de interfaz, herramientas de optimización y
mantenimiento del sistema, como también un crecimiento o
escalabilidad. Entre los más populares se encuentra
openMosix.
Son todos aquellos programas que se ejecutan sobre el
Aplicaciones. middleware; estos son diseñados para su ejecución en
entornos de cómputo paralelo o aprovechamiento del tipo
de clúster.
Tabla 2.3 Componentes de un Clúster
11
Cálculos matemáticos.
Rendering (construcción/generación) de gráficos.
Compilación de programas.
Compresión de datos.
Descifrado de códigos.
Rendimiento del sistema operativo, (incluyendo en él, el
rendimiento de los recursos de cada nodo).
En general cualquier problema de propósito general que
requiera de gran capacidad de procesamiento.
Configuración Descripción
Elemento Descripción
1
http://www.eurogaran.com/index.php/es/servidores-linux/clusteres/de-alta-disponibilidad
17
2
http://www.seccperu.org/files/Clustering%20and%20Grid%20Computing.pdf
19
La adaptación más común que debe sufrir una aplicación para poder
ser ejecutada en un clúster de alta disponibilidad implementado
sobre GNU/Linux, es añadir scripts. Existen APIs para trabajar
cómodamente con alta disponibilidad; todas ellas incluyen métodos
que permiten el switchover y el failover y que permiten arrancar,
parar o monitorizar una aplicación por mencionar algunas de sus
funcionalidades.
2.1.2.2. Escalabilidad
3
http://www.redes-linux.com/manuales/cluster/clustering.pdf
21
Importante
En un clúster activo / pasivo el incrementar el número de nodos
disponibles en el clúster no incrementa la potencia del clúster ya que
únicamente un nodo estará ofreciendo el servicio.
Balanceador de carga.
Sistema para la detección de fallos en los nodos del
clúster.
Servicio a clusterizar.
Recursos del clúster.
Filesystems.
Scripts para arrancar el servicio
2.1.5.1. Heartbeat
Para implementar esta técnica los nodos tiene líneas dedicadas, bien
sea por red o conexiones serie por las que se comunican de forma
continua para verificar el correcto funcionamiento de los nodos.
Una vez que el esclavo vuelva a escuchar los latidos del maestro,
este tomará el control nuevamente, a menos que dentro de la
configuración de Heartbeat se haya colocado la directiva
auto_failback en off. Esta directiva puesta en off, quiere decir que si
la máquina que era maestro vuelve a funcionar, ya no retomará el
control del servicio, sino se convertirá en la nueva esclava.
Importante
El disco de quorum no es una técnica que sustituya al heartbeat es
una técnica que debe usarse como complemento al heartbeat.
35
CAPITULO 3
INTRODUCCION
DIAGNOSTICO
openMosix.
Oscar.
Piranha.
Linux Virtual Server.
Ultramonkey.
A continuación la tabla 3.1 muestra las principales características de
cada herramienta para la construcción de clústers.
37
Herramienta. Características.
Falla la detección de
algunos componentes
Es una compilación auto de hardware en
instalable. versiones anteriores a
Infraestructura de software la 3.
para instalar y administrar Soporte para
OSCAR un clúster. distribuciones basadas
Posee bibliotecas y en RPMs solamente
39
Múltiples esquemas de
configuración.
Reúne varias herramientas
de una manera sencilla. Los nodos directores
Varios formatos para su tienen que ejecutar
instalación. estrictamente el
Amplia documentación sistema operativo
sobre cada componente. GNU/Linux.
40
No requiere Dependiente
Balanceo de paquetes del kernel y
openMosix RPM, Todas. carga de adicionales y posee
Código procesos sin hace problemas con
fuente. alta migración de memoria
disponibilidad. procesos. compartida.
En versiones
anteriores a la
tercera falla la
Auto instalable detección de
41
Soporte de Actualmente
Red Hat Posee Red Hat, disponible solo
Piranha RPM. Enterprise 4 o herramientas administración en formato
posteriores. propias para y manejo RPM y para
ambos mediante versiones
aspectos. interfaz web. empresariales.
Instalación por
Amplia gama segmentos;
Incluye de con un gran
Linux RPM, DEB, Todas. herramientas configuracione número de
Virtual Código de código s, función a servidores
Server fuente. abierto para nivel TCP/IP y reales el
ambos manejo de tráfico crece
aspectos. distintos de manera
protocolos. significativa.
Los nodos de
Múltiples balance de
Basadas en Uso de configuracione carga deberán
Debian, Red componentes s, manejo de ejecutar el
Hat Enterprise de LVS para distintos sistema
RPM. DEB, 4 y mediante ambos protocolos, operativo
Ultramonke Código compilación aspectos función a nivel GNU/Linux;
y fuente. de código añadiendo TCP/IP, dependiendo
fuente. algunas marcas de del esquema
mejoras y firewall y llega a ser
42
3.2.1.3. Ultramonkey
3.2.1.3.1.1. Heartbeat
3.2.1.3.1.2. Ldirectord
CAPITULO 4
INTRODUCCION
DISEÑO
seleccionados según
el URL solicitado.”4
Este nodo distribuye las Llega a convertirse
conexiones. en cuello de botella.
Se aumenta la Hace uso de un nodo
Uso de nodo sensación de unidad adicional para
de balanceo del clúster. proveer el balanceo
de carga. Única dirección IP de carga.
pública a la cual dirigir Al existir solo un
las peticiones. nodo de balanceo
Es sencillo enmascarar este se convierte en
fallas de los servidores. un punto único de
fallo.
4
http://www.wikilearning.com/monografia/balance_de_carga-la_aproximacion_via_dns/20837-2
52
5
http://www.adslfaqs.com.ar/que-es-nat-network-address-translation/
54
Enrutamiento
NAT Encapsulamiento IP
Directo
Necesita
Servidor Cualquiera Dispositivo no-ARP
Encapsulamiento
Red de
Red Privada LAN/WAN LAN
servidores
57
Algoritmo Funcionamiento
Cada petición se envía a un servidor y la siguiente
Round Robin petición al siguiente servidor de la lista hasta llegar al
último tras lo cual se vuelve a enviar al primero, véase la
figura 4.4.
Igual que el anterior algoritmo pero añadiendo un peso a
cada servidor, este peso es un entero que indica la
Round Robin potencia de cálculo del servidor, de modo que la cola
Ponderado Round Robin se modificará para que aquellos servidores
con mayor capacidad de cálculo reciban peticiones más
a menudo que el resto, véase la figura 4.5.
Este mecanismo de distribución consulta a los servidores
Servidor con para revisar en cada momento cuántas conexiones
menos abiertas posee cada uno con los clientes, y envía cada
conexiones petición al servidor que menos conexiones tenga en ese
activas. momento, véase la figura 4.6.
Servidor con Igual que el algoritmo anterior pero se le añaden pesos a
58
Piranha:
Esta herramienta solamente requiere el uso de un navegador web
para configurarse pero una de sus críticas es el hecho de estar
fuertemente ligada a las versiones empresariales de Red Hat y
por tal motivo los mínimos en hardware dependerán de la versión
de dicha distribución que se utilice. Como un punto a favor,
Piranha posee esa extrema sencillez de configuración brindada
por su interfaz que se basa en web. Para implementarse se tiene
que poseer una licencia de uso del sistema operativo de Red Hat
63
Memoria RAM 64 MB
Memoria RAM 64 MB
Ultramonkey:
Ultramonkey está pensado como una solución muy económica
tanto a nivel de software como en hardware y por tal motivo su
crecimiento se ha dado en gran medida por las contribuciones de
los usuarios de este proyecto dado que es un requisitos dentro de
la comunidad de software libre el compartir sus conocimientos y
estos aportes vienen desde programadores aficionados hasta los
gurúes de la informática. En la tabla 4.7 siguiente se aprecian los
mínimos de hardware para ultramonkey.
Memoria RAM 64 MB
Ultramonkey:
Esta es la herramienta más simple de instalación de las 3, no es
necesario revisar dependencias o instalar paquetes adicionales
manualmente, es un proceso totalmente automatizado y
sumamente útil, pero si el sistema que actúa como nodo director
posee un sistema diferente tendrá que llevarse a cabo la
instalación de dos formas distintas dependiendo de:
Basado en Red Hat: mediante paquetes RPM con la
instrucción “rpm -iv *.rpm” estando dentro del directorio
que contenga todos los paquetes de Ultramonkey.
Basados en código fuente: tendrán que descargarse
todos los paquetes que conformen Ultramonkey, luego
se procede a descomprimir cada uno y posteriormente
se procede a su compilación e instalación.
Piranha:
Esta herramienta es sencilla de instalar si se posee una licencia
del sistema operativo Red Hat Enterprise utilizado, su instalación
puede realizarme mediante un administrador de paquetes gráfico
propio del sistema operativo o bien, mediante la línea de
comandos con el administrador indicado (en este caso yum). De
66
LVS:
Para llevar a cabo la instalación de LVS es necesario activar los
módulos de LVS en el kernel de la distribución utilizada,
posteriormente se debe instalar la aplicación ipvsadm pues esta
será nuestra interfaz de comunicación con LVS. Una vez activado
el soporte y la interfaz con LVS se procede a su configuración y
pruebas pertinentes. Es importante notar que de no contar con un
kernel con soporte activado las alternativas existentes son una
recompilación del mismo kernel o la compilación de uno
totalmente nuevo habilitando dicho soporte en ambos casos; si la
distribución utilizada posee mecanismos para instalar un kernel
con soporte incluido esto facilita la tarea, de otra manera el
proceso de configuración, activación del soporte, compilación e
instalación deberá realizarse de forma manual.
Ultramonkey:
Este proyecto es de fácil adquisición puesto que se encuentra
empaquetado en diversos formatos, basta con agregar un
repositorio al archivo y actualizar dichos repositorios para tener
acceso a los paquetes que conforman Ultramonkey, el sistema de
gestión de paquetes hará notar que debe instalar otros paquetes
que son dependencias y ubicará los archivos en los sitios
correspondientes; esta es la manera más fácil de instalar
Ultramonkey, es limpia, rápida y muy eficiente. Si se desea
instalar sobre una distribución como Red Hat se cuenta con los
paquetes necesarios en formato RPM y se deben de descargar
todos los paquetes y llevar a cabo la instalación de forma manual,
en caso de usar una distribución distinta a estas dos, se
procederá a descargar los paquetes en formato GZIP o BZIP2
dependiendo de las necesidades.
Se concluye de lo anterior que la herramienta Ultramonkey posee
una amplia variedad de medios de distribución y adquisición para
varios sistemas operativos GNU/Linux eliminando la restricción de
dependencia de una distribución en especial. Aunque LVS se
distribuye como código fuente y Piranha en paquetes RPM o
código fuente, la herramienta Ultramonkey brinda una mejor
variedad de formatos y medios de adquisición siendo este punto
el que le brinda ventaja sobre las anteriores y siendo esta la mejor
elección.
CAPITULO 5
INTRODUCCION
Balanceo de carga.
Escalabilidad.
Bajo consumo de recursos.
Diversos esquemas de Balanceo de carga.
configuración. Alta disponibilidad.
Suite
73
Medios de Instalación.
Aspecto. Descripción.
manera directa (ver figura 5.1). Para ello el servidor real deberá contar
con la aplicación iproute (ésta aplicación se compone de un conjunto de
herramientas muy potentes para administrar interfaces de red y
conexiones en sistemas GNU/Linux).
Como las conexiones son redirigidas a los servidores reales usando NAT
es importante que la ruta de regreso para tales conexiones sea a través
del nodo de balanceo. Esto es así porque NAT puede revertir el proceso,
de otra forma el paquete de retorno que es recibido por el usuario final
será del servidor real y no del nodo de balanceo y por lo tanto la
conexión será abandonada.
78
http://www.ultramonkey.org/download/3/
Por último se puede optar por adquirir los paquetes en formato de código
fuente comprimidos, una vez descargados se procederá a copiarlos en la
estación donde se necesiten y se llevará a cabo todo el proceso de
compilación e instalación.
Los directores deben estar habilitados para enrutar el tráfico hacia los
servidores reales. Específicamente, se debe habilitar el seguimiento
IPv4. Esto se hace mediante el comando:
Para que los cambios tengan efecto se debe usar el comando sysctl:
sysctl –p
ipvsadm -A -t 192.168.1.20:80 -s rr
5.6.2. Heartbeat
vim /etc/ha.d/ha.cf
vim /etc/ha.d/ldirectord.cf
RR, WRR: round robin, weighted round robin (con manejo de pesos).
LC, WLC: least connection (menos conexiones), weighted least
connection (el director tiene una tabla con el número de conexiones para
cada servidor real).
chkconfig iptables on
chkconfig httpd on
Ipvsadm
server-address [packet-forwarding-method]
[weight options]
Ejemplos:
Ipvsamd -l
Ipvsamd –lnc
Tcpdump
Ejemplos:
CONCLUSIONES
Una vez instalado todo el conjunto de paquetes necesario, (paquetes RPM, tipo
de paquete utilizado en distribuciones Centos), la configuración resulta sencilla
y solo se tienen que ejecutar comandos para especificar el algoritmo a utilizar
para el balanceo de carga, datos sobre los servidores reales y nodos de
balanceo como también los servicios que proporcionan y las páginas para
control esperadas (servicio en este caso particular de páginas web o HTTP
solamente).
2007, Red Hat, Inc., Linux Clustering Building and Maintaining Linux
Clusters, 2007
http://www.codigolibre.org/index.php?option=com_content&view=article&
id=5389:clustering&catid=36:gnu-cat&Itemid=53
http://www.jumpingbean.co.za/linux-cluster-load-balancing-high-
availability
http://crysol.org/node/339
http://www.taringa.net/posts/linux/8289874/Monitoreo-de-trafico-en-red_-
tcpdump.html
http://linuxmanpages.com/man8/ipvsadm.8.php
http://bulma.net/body.phtml?nIdNoticia=1615&nIdPage=3
http://www.adslfaqs.com.ar/que-es-nat-network-address-translation/
http://wiki.itlinux.cl/doku.php?id=cluster:ultramonkey-lbs
http://mmc.geofisica.unam.mx/LuCAS/Manuales-LuCAS/doc-curso-
salamanca-clustering/html/ch03s04.html
http://www.wikilearning.com/tutorial/el_manual_para_el_clustering_con_
openmosix-clusters_ha_ii/9756-15
http://www.estrellateyarde.org/discover/cluster-ultramonkey-en-linux
http://www.tcpdump.com/
http://linuxmanpages.com/man8/ipvsadm.8.php
http://www.ultramonkey.org
http://www.centos.org