107
UNIVERSIDAD ALFREDO PÉREZ GUERRERO UNAP CARRERA: SISTEMAS DE INFORMACION Y NETWORKING PROYECTO DE GRADO PARA LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN SISTEMAS INFORMATICOS Y NETWORKING TEMA: “DISEÑO DE UNA SOLUCIÓN PARA SERVIDORES DE ALTA DISPONIBILIDAD Y BALANCEO DE CARGA CON OPEN SOURCEAutor: Flavio Mauricio Gallardo Padilla Director: Ing. Nelio Brito Mayo del 2011

Balanceo de Carga en Centos

Embed Size (px)

DESCRIPTION

Balanceo de Carga con open source en Centos - Ing. Mauricio Gallardo

Citation preview

Page 1: Balanceo de Carga en Centos

UNIVERSIDAD ALFREDO PÉREZ GUERRERO

UNAP

CARRERA: SISTEMAS DE INFORMACION Y

NETWORKING

PROYECTO DE GRADO

PARA LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN

SISTEMAS INFORMATICOS Y NETWORKING

TEMA:

“DISEÑO DE UNA SOLUCIÓN PARA SERVIDORES DE

ALTA DISPONIBILIDAD Y BALANCEO DE CARGA CON

OPEN SOURCE”

Autor: Flavio Mauricio Gallardo Padilla

Director: Ing. Nelio Brito

Mayo del 2011

Page 2: Balanceo de Carga en Centos

Quito, 13 de mayo del 2011 Señor: Coordinador de Tesis y Proyectos de Grado UNAP Presente.- De nuestras consideraciones: Por medio de la presente CERTIFICAMOS, que el señor estudiante – egresado Flavio Mauricio Gallardo Padilla, identificado con el número de cédula 1710049139 estudiante de la carrera de Ingeniería en Sistemas y Networking de la UNAP, una vez realizada la dirección y las evaluaciones correspondientes según la normativa de la universidad, ha concluido satisfactoriamente con el trabajo de grado Titulado “DISEÑO DE UNA SOLUCIÓN PARA SERVIDORES DE ALTA DISPONIBILIDAD Y BALANCEO DE CARGA CON OPEN SOURCE”. Por consiguiente, otorgamos la aptitud para la presentación del grado oral del mencionado estudiante. Agradeciendo su atención Ing. Nelio Brito Ing. Fredy Molina Ing. Rommel Caicedo Director Evaluador Evaluador

Page 3: Balanceo de Carga en Centos

Quito, 13 de mayo del 2011

Señores:

Universidad Alfredo Pérez Guerrero UNAP

Presente.-

De mis consideraciones:

Yo, Flavio Mauricio Gallardo Padilla, identificado con el número de cédula

1710049139, estudiante egresado de la UNAP de la Carrera de Ingeniería en

Sistemas y Networking, por medio de la presente CERTIFICO que el presente

Trabajo de Grado titulado: “DISEÑO DE UNA SOLUCIÓN PARA

SERVIDORES DE ALTA DISPONIBILIDAD Y BALANCEO DE CARGA CON

OPEN SOURCE”; es de mi plena autoría y no constituye plagio ni copia alguna

constituyéndose un documento único.

Es todo en cuanto puedo decir en honor a la verdad

Agradeciendo su atención

Mauricio Gallardo

C.I. 1710049139

Estudiante Egresado de la UNAP

Page 4: Balanceo de Carga en Centos

AGRADECIMIENTO

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.

Page 5: Balanceo de Carga en Centos

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.

Page 6: Balanceo de Carga en Centos

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

Page 7: Balanceo de Carga en Centos

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

Page 8: Balanceo de Carga en Centos

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

Page 9: Balanceo de Carga en Centos

INDICE DE FIGURAS

Figura 2.1 Clúster de computadores ............................................................... 7

Figura 2.2 Componentes de un clúster ............................................................ 9

Figura 2.3 Arquitectura de un Clúster ............................................................ 15

Figura 2.4 Alta disponibilidad ......................................................................... 20

Figura 2.5 Balanceador de Carga .................................................................. 23

Figura 2.6 Recursos del Clúster .................................................................... 25

Figura 2.7 Balanceo de Carga ....................................................................... 27

Figura 2.8 Balanceadores de Carga .............................................................. 31

Figura 2.9 Heartbeat ...................................................................................... 32

Figura 2.10 Disco de Quorum ........................................................................ 35

Figura 3.1 Esquema de funcionamiento de Piranha. ..................................... 45

Figura 3.2 Esquema de funcionamiento de LVS. .......................................... 46

Figura 3.3 Componentes de Ultramonkey. .................................................... 48

Figura 3.4 Esquema de funcionamiento de Ultramonkey. ............................. 49

Figura 4.1 Balanceo mediante NAT. .............................................................. 53

Figura 4.2 Balanceo mediante encapsulado IP. ............................................ 54

Figura 4.3 Balanceo mediante enrutamiento directo. .................................... 55

Figura 4.4 Round Robin. ................................................................................ 59

Figura 4.5 Round Robin Ponderado. ............................................................. 59

Figura 4.6 Servidor con menos conexiones activas. ..................................... 60

Figura 4.7 Servidor con menos conexiones activas ponderado. ................... 60

Figura 4.8 Menos conectado basado en servicio. ......................................... 61

Figura 4.9 Tablas Hash por origen y destino. ................................................ 61

Figura 5.1 Funcionamiento del Clúster. ......................................................... 70

Figura 5.2. Configuración final de nodos. ...................................................... 78

Figura 5.3. Página del servidor 1 ................................................................... 85

Figura 5.4. Página del servidor 2 ................................................................... 85

Figura 5.5. Detención del servicio httpd ......................................................... 86

Figura 5.6. Verificación de servidores y conexiones con ipvsadm –l. ............ 88

Figura 5.7. Verificación de servidores y conexiones con ipvsadm –lnc. ........ 89

Page 10: Balanceo de Carga en Centos

Figura 5.8. Tráfico en la red con tcpdump. .................................................... 89

Figura 5.9. Salida de tráfico en la red con tcpdump. ..................................... 90

Page 11: Balanceo de Carga en Centos

INDICE DE TABLAS

Tabla 2.1 Tipos de Clúster ........................................................................... 8

Tabla 2.2 Subtipos de Clúster ...................................................................... 9

Tabla 2.3 Componentes de un Clúster ....................................................... 10

Tabla 2.4 Configuración de un Clúster ....................................................... 14

Tabla 2.5 Estructura de Alta Disponibilidad ................................................ 15

Tabla 3.1 Características de Herramientas para Clústers. ......................... 38

Tabla 3.2 Ventajas y Desventajas de las Herramientas para Clúster. ........ 40

Tabla 3.3 Comparación de herramientas para clúster. ............................... 42

Tabla 4.1 Métodos de balanceo de carga. ................................................. 51

Tabla 4.2 Modos de balanceo de carga en LVS. ........................................ 52

Tabla 4.3 Métodos de direccionamiento. .................................................... 57

Tabla 4.4 Algoritmos de planificación de balanceo de carga. .................... 58

Tabla 4.5 Requisitos mínimos de hardware para Piranha. ......................... 63

Tabla 4.6 Requisitos mínimos de hardware para LVS. .............................. 64

Tabla 4.7 Requisitos mínimos de hardware para Ultramonkey. ................. 64

Tabla 4.8 Comparación de requisitos. ........................................................ 65

Tabla 5.1 Funcionamiento del Clúster. ....................................................... 70

Tabla 5.2 Especificaciones del nodo de balanceo. ..................................... 71

Tabla 5.3 Especificaciones de nodo servidor. ............................................ 71

Tabla 5.4 Herramientas utilizadas en cada nodo. ...................................... 72

Tabla 5.5 Características de herramientas utilizadas. ................................ 74

Tabla 5.6 Proceso de instalación del Sistema Operativo. .......................... 74

Tabla 5.7 Medios de instalación. ................................................................ 75

Tabla 5.8 Proceso de instalación del sistema base. ................................... 76

Tabla 5.9 Servicios activados en los nodos servidores. ............................. 76

Page 12: Balanceo de Carga en Centos

i

INTRODUCCION

Para que un servicio sea eficiente es necesario que se mantenga en

funcionamiento constante y que no ocurran retardos en la entrega de la

información. Así pues se da paso a la investigación y desarrollo de nuevas

tecnologías que garanticen tales sucesos; en este trabajo se presentarán las

soluciones para tales problemas y se expondrán sus características así como

las herramientas que hacen posible la construcción de dichas soluciones de

software con open source.

Un servidor juega un papel muy importante dentro de una organización, y al

mismo tiempo se transforma en un servicio crítico al ser utilizado por la gran

mayoría de los usuarios para acceder a todos los servicios que este brinda,

siendo necesario la implementación de un sistema de clúster que permita

mantener el servicio disponible en caso de que falle un servidor así como

mantener un sistema de balanceo de carga evitando la saturación del propio

servidor.

Un clúster es un conjunto de maquinas, conectadas entre sí en red y

funcionando en paralelo y compartiendo recursos para cooperar en cargas de

trabajo complejas y conseguir mayor eficacia que un solo equipo.

Al hablar de clúster, tenemos un numeroso listado de diversas aplicaciones que

implementan distintos tipos de clúster, dependiendo de las necesidades que

posee la organización y la aplicación a clusterizar.

Dentro de los clúster más comunes, se encuentra el clúster de alta

disponibilidad, en el cual uno de los nodos actúa pasivamente mientras el nodo

activo recibe todas las peticiones a los servicios que ofrece. En caso de que el

nodo activo tenga alguna falla en los servicios, el nodo pasivo toma el control

Page 13: Balanceo de Carga en Centos

ii

de los servicios y pasa a ser el activo para que los servicios ofrecidos estén

siempre disponibles.

Actualmente, debido a la gran cantidad de usuarios que necesitan acceder a

los servicios, es necesario también aprovechar los nodos pertenecientes al

clúster, para que estos pasen a ser activos y la carga se pueda dividir entre

todos los nodos del clúster, constituyendo así un clúster de balanceo de carga.

Page 14: Balanceo de Carga en Centos

1

CAPITULO 1

GENERALIDADES

1.1. PLANEAMIENTO DEL PROBLEMA

Las empresas actualmente se han visto en el problema de suspender

temporalmente sus operaciones debido a incidentes ocurridos en los servidores

de servicios tales como proxy, correo electrónico, ftp, web, etc., dando origen a

prestar servicios de baja calidad a sus clientes poniendo en riesgo la

continuidad del negocio, lo que ocasiona pérdidas económicas.

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.

Existen equipos que permiten balanceo de carga y alta disponibilidad mediante

hardware, pero la adquisición de estos significa una inversión para las

empresas contrariamente a las soluciones de software open source que no

necesitan pagar ningún valor de licenciamiento.

De no contar con una solución al problema de alta disponibilidad y balanceo de

carga por software se perderá la opción de contribuir a una investigación e

implementación de este tipo.

Mediante la implementación de la solución, las empresas aseguran el normal

desenvolvimiento de sus operaciones, minimizando sustancialmente el riesgo

tecnológico dando continuidad al negocio y por consiguiente a sus operaciones,

se centrará en la técnica de obtener una alta disponibilidad y balanceo de carga

Page 15: Balanceo de Carga en Centos

2

por medio de la redundancia, instalando servidores completos en lugar de uno

sólo (se realizará la implementación en máquinas virtuales), que sean capaces

de trabajar en paralelo y de asumir las caídas de algunos de sus compañeros,

y podremos añadir y quitar servidores al grupo (clúster) según las necesidades.

1.2. FORMULACION DEL PROBLEMA

¿Encontrar la solución que permita mantener un alto nivel de disponibilidad y

balanceo de carga, con herramientas open source, dando continuidad a los

servicios?. Considerando la experiencia adquirida en la implementación,

administración y mantenimiento de servidores Linux en los últimos años de

servicio profesional.

1.3. SISTEMATIZACION

¿Qué herramientas open source nos permiten aplicar alta disponibilidad y

balanceo de carga?

¿Qué herramientas open souce se utilizarán para la implementación de la

solución?

¿Qué necesitan las empresas para solucionar su problema de alta

disponibilidad y balanceo de carga?

1.4. OBJETIVO GENERAL

Diseñar una solución de alta disponibilidad y balanceo de carga, para dotar de

servicios que permitan dar continuidad al negocio en las operaciones

realizadas por las empresas, con software open source.

Page 16: Balanceo de Carga en Centos

3

1.5. OBJETIVOS ESPECIFICOS

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.

Diagnosticar el estado actual de la tecnología utilizada en las empresas, que

necesitan balanceo de carga y alta disponibilidad.

Diseñar una solución que permita ofrecer servidores de alta disponibilidad y

balanceo de carga mediante software libre.

Implementar en un ambiente de laboratorio la solución diseñada, para asegurar

el normal desenvolvimiento de las operaciones en cualquier empresa. Dicho

laboratorio se lo implementará en máquinas virtuales.

1.6. JUSTIFICACIÓN

Con el actual ritmo de crecimiento del comercio y el movimiento de datos de

todo tipo en Internet, web 2.0, con el establecimiento no formal de un protocolo

mundial IP generalizo y la incuestionable importancia de las tecnologías de la

información en las empresas actuales de cualquier tamaño, es cada día más

importante que los servicios puedan funcionar con un alto nivel de SLA (calidad

de servicio) , ya sea para dar soporte interno, como para ofrecer servicios a

través de Internet e Intranet (http, correo, ftp, etc). A esta necesidad de un

servicio ininterrumpido y fiable se le conoce como alta disponibilidad, de igual

forma evitar la sobre carga existente en los servidores debido al gran número

de usuarios y que estos no sean saturados, compartiendo con otros la

responsabilidad de dar los servicios conocemos como balanceo de carga.

Page 17: Balanceo de Carga en Centos

4

Para poder incrementar la base científica relacionada con proyectos de

software open source y minimizar el riesgo tecnológico. Se utiliza open source

por que es software libre, es decir no se debe incurrir en gastos de

licenciamiento para su uso.

Desde el punto de vista metodológico, esta investigación generará

conocimiento válido y confiable dentro del área de las TICS , para futuras

implementaciones. Esta investigación abrirá nuevos caminos en empresas que

presenten situaciones similares sirviendo a estas como marco referencial.

1.7. ALCANCE

El proyecto abarcará la investigación sobre las herramientas de clúster que nos

ofrece el software libre, para de esta manera analizar la mejor opción para ser

implementada, esta investigación permitirá además adquirir conocimiento para

futuras implementaciones.

Después de conocer las opciones de cluster con open source, se realizará un

diagnostico sobre las herramientas disponibles para proponer una solución que

permita de forma adecuada implementar la tecnología elegida, tomando en

cuenta siempre la mejor alternativa.

Se creará un laboratorio con máquinas virtuales para la implementación en un

ambiente de pruebas, que contendrá servicios como http, mail, ftp, proxy,

además se obtendrá pruebas de los resultados de funcionamiento de la

solución.

Se contará con un cliente con un sistema operativo distinto al utilizado para la

construcción del clúster (el cliente solamente necesita un navegador web) el

cual realiza las peticiones de la página web principal alojada en el clúster, de

esta manera se puede observar cual servidor real es el que atiende la petición

(en un sistema en producción esto no deberá ser así ya que la intención es que

los usuarios vean al sitio web como un solo equipo). En lo concerniente a las

Page 18: Balanceo de Carga en Centos

5

pruebas de alta disponibilidad, serán realizadas de 3 maneras, la primera es

desconectando un nodo de balanceo, la segunda es detener la ejecución de las

aplicaciones encargadas de monitorear el estado de los nodos de balanceo en

uno de los nodos para simular un fallo físico del nodo y tercera es apagando

uno de los nodos y revisar si el servicio sigue en funcionamiento. Esto nos dará

una visión certera del real funcionamiento de servidores de este tipo en

ambientes de producción.

Page 19: Balanceo de Carga en Centos

6

CAPITULO 2

INTRODUCCION

Este capítulo contiene conceptos fundamentales que son necesarios conocer

para la elaboración del proyecto como: clustering, tipos de clúster, arquitectura

de clustering, alta disponibilidad, balanceo de carga.

Adicionalmente se relata una breve historia del inicio, desarrollo y evolución de

la tecnología relacionada con los clúster.

FUNDAMENTACION TEORICA

MARCOS DE REFERENCIA (Teórico, Conceptual)

2.1. MARCO TEORICO

2.1.1. Clustering

2.1.1.1. Antecedentes

En el verano de 1994 Thomas Sterling y Don Becker, trabajando

para el CESDIS (Center of Excellence in Space Data and Informarion

Sciencies) bajo el patrocinio del Proyecto de las Ciencias de la Tierra

y el Espacio (ESS) de la NASA, construyeron un Clúster de

Computadoras que consistía en 16 procesadores DX4 conectados

por una red Ethernet a 10Mbps, ellos llamaron a su máquina

Beowulf.

La máquina fue un éxito inmediato y su idea de proporcionar

sistemas basados en COTS (equipos de sobremesa) para satisfacer

requisitos de cómputo específicos se propagó rápidamente a través

de la NASA y en las comunidades académicas y de investigación. El

esfuerzo del desarrollo para esta primera máquina creció

rápidamente en lo que ahora llamamos el Proyecto Beowulf.

Este Beowulf construido en la NASA en 1994 fue el primer clúster de

la historia, y su finalidad era el cálculo masivo de datos. Desde

entonces, la tecnología de clusters se ha desarrollado enormemente.

Page 20: Balanceo de Carga en Centos

7

2.1.1.2 Que es el clustering?

Clustering es un conjunto de maquinas, conectadas entre sí en red y

funcionando en paralelo y compartiendo recursos para cooperar en

cargas de trabajo complejas y conseguir mayor eficacia que un solo

equipo. Dado que se comporta como un único gran recurso. Cada

una de las máquinas que forman el clúster recibe el nombre de nodo.

Figura 2.1 Clúster de computadores

Esta tecnología ha evolucionado para beneficio de diversas

actividades que requieren el poder de cómputo y aplicaciones de

misión crítica.

El uso de los clústers es el resultado de una convergencia de

múltiples tecnologías que abarcan la disponibilidad de procesadores

económicos de alto rendimiento y las redes de alta velocidad, como

lo son las redes de fibra óptica así como también el desarrollo de

herramientas de software diseñadas para cómputo distribuido de alto

desempeño.

Page 21: Balanceo de Carga en Centos

8

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.

2.1.1.3. Tipos de clúster

Dependiendo del tipo de solución que busquemos podemos clasificar

los clusters en varios tipos:

High Performance

High Availability

Load Balancing

2.1.1.4. High Performance

Tipo de Clúster Descripción

Alto rendimiento

(High Performance)

Conjunto de computadoras diseñado para brindar

altas prestaciones en cuanto a capacidad de cálculo.

Alta disponibilidad

(High Availability)

Conjunto de dos o más computadoras que se

caracterizan por mantener una serie de servicios

disponibles y compartidos, se caracterizan por estar

constantemente monitorizándose entre sí.

Balanceo de carga

(Load Balancing)

Compuesto por una o más computadoras que actúan

como interfaces primarias del clúster y se ocupan de

repartir las peticiones de servicio que recibe el

clúster a los nodos que lo conforman.

Tabla 2.1 Tipos de Clúster

Page 22: Balanceo de Carga en Centos

9

Además de la clasificación general de los tipos de clúster que se

pueden encontrar, es preciso destacar que se pueden tener los

siguientes subtipos en cada una de las categorías según se muestra

en la tabla 2.2.

Subtipo Descripción

Homogéneo Es donde todos los nodos poseen una

configuración de hardware y software iguales.

Semi-

homogéneo

Es donde se poseen arquitecturas y sistemas

operativos similares pero de diferente rendimiento.

Heterogéneo Es donde se poseen hardware y software distintos

para cada nodo.

Tabla 2.2 Subtipos de Clúster

Un clúster posee varios componentes de software y hardware para

poder funcionar, la figura 2.2 muestra dichos componentes:

Figura 2.2 Componentes de un clúster

Page 23: Balanceo de Carga en Centos

10

Para entender mejor estos componentes, es recomendable el

análisis mediante la tabla 2.3, en ella se puede observar cada

componente y una descripción del mismo comenzando por la

interconexión de los equipos.

Componente Descripción

Conexiones de red.

Estas son las conexiones de los nodos a la red de trabajo

del clúster siendo tan complejas como lo sean las

tecnologías y medios utilizados en su instalación.

Protocolos de

comunicación y

servicios.

Aquí normalmente se cuenta con el protocolo de

comunicaciones TCP/IP y servicios de transporte de datos.

Nodos.

Son simples computadoras o sistemas multiprocesador; en

estos se hospedan el Sistema Operativo, el middleware y lo

necesario para la comunicación a través de una red.

Sistema Operativo.

Se define a grandes rasgos como un programa o conjunto

de ellos que están destinados a gestionar de manera eficaz

los recursos de una computadora. Como ejemplo se tiene

Unix, Mac OSX.

Middleware.

Es un software que actúa entre el Sistema Operativo y las

aplicaciones con la finalidad de proveer a un clúster las

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.

Aplicaciones.

Son todos aquellos programas que se ejecutan sobre el

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

Page 24: Balanceo de Carga en Centos

11

Los clústers permiten una flexibilidad de configuración que no se

encuentra normalmente en los sistemas multiprocesadores

convencionales. El número de nodos, la capacidad de memoria por

nodo, el número de procesadores por nodo y la topología de

interconexión, son todos parámetros de la estructura del sistema que

puede ser especificada en detalle en una base por nodo sin incurrir

en costos adicionales debidos a la configuración personalizada.

Además, permiten una rápida respuesta a las mejoras en la

tecnología. Cuando los nuevos dispositivos, incluyendo

procesadores, memoria, disco y redes están disponibles se pueden

integrar a los nodos del clúster de manera fácil y rápida permitiendo

que sean los sistemas paralelos que primero se benefician de tales

avances. Lo mismo se cumple para los beneficios de un

mejoramiento constante en el rubro de precio-rendimiento en la

tecnología. Los clústers son actualmente la mejor opción para seguir

la pista de los adelantos tecnológicos y responder rápidamente a las

ofertas de nuevos componentes.

Los clústers permiten una flexibilidad de configuración que no se

encuentra normalmente en los sistemas multiprocesadores

convencionales. El número de nodos, la capacidad de memoria por

nodo, el número de procesadores por nodo y la topología de

interconexión, son todos parámetros de la estructura del sistema que

puede ser especificada en detalle en una base por nodo sin incurrir

en costos adicionales debidos a la configuración personalizada.

Un clúster puede ser usado para solucionar una variedad de

problemas dependiendo del tipo que se tenga, como ya se dijo

existen los de alto rendimiento, balanceo de carga y alta

disponibilidad. Los dos primeros resuelven problemas como:

Page 25: Balanceo de Carga en Centos

12

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.

En el caso de los clúster de alta disponibilidad resuelven:

Sistemas de información redundante.

Sistemas tolerantes a fallos.

Balance de procesos entre varios servidores.

Balance de conexiones entre varios servidores.

En general cualquier problema que requiera almacenamiento

de datos siempre disponible con tolerancia a fallos.

De esta manera, se afirma que el problema que se resuelve con el

balanceo de carga está estrechamente relacionado con los que se

pueden solucionar la alta disponibilidad, ya que generalmente se

desea que un servicio esté disponible el mayor tiempo posible y con

la mejor respuesta que se pueda obtener.

Es así que el servicio puede ser diverso; desde un sistema de

archivos distribuidos de carácter muy barato, hasta grandes clústers

de balanceo de carga y conexiones para los grandes portales de

Internet lo que lleva a que la funcionalidad requerida en un entorno

de red puede ser colocada en un clúster e implementar mecanismos

para hacer que éste obtenga la mayor disponibilidad posible.

Page 26: Balanceo de Carga en Centos

13

Realmente no hay sistemas que puedan asumir la alta disponibilidad

en realidad, se requiere que el clúster sea tolerante a los fallos. En

dicho caso se pretende ocultar al usuario final la presencia de los

fallos del sistema empleando redundancia en el hardware y en el

software e incluso redundancia temporal.

La redundancia en el hardware consiste en añadir componentes

replicados para encubrir los posibles fallos mientras que la

redundancia de software incluye la administración del hardware

redundante para asegurar su correcto funcionamiento al hacer frente

a la caída de algún elemento. Y por último la redundancia en el

tiempo hace referencia a la repetición de la ejecución de un conjunto

de instrucciones para asegurar el comportamiento correcto en caso

de que ocurra un fallo.

Por su parte, el balanceo de carga en el contexto del servicio web es

la toma de decisión de cuál nodo deberá hacerse cargo de las

peticiones de servicio de otro que está con un mayor número de

peticiones de servicio que él, con el objetivo de que éstas se

encuentren equilibradas entre el total de nodos que conforman el

clúster. Cuando se genera una creciente demanda de trabajo en

este servicio se hace uso del balanceo de carga, creciendo el

número de nodos que mantienen el servicio a medida que la carga

de trabajo aumenta no siendo requisito el incorporar nodos con los

últimos avances tecnológicos.

En el balanceo de carga en un nodo (o varios según sea el caso) es

una tarea que controlará la distribución entre los servidores que

componen el clúster. Cabe aclarar que dicha labor se puede efectuar

a nivel de aplicación; lo que puede llevar a cuellos de botella si el

número de nodos servidores es grande y en un nivel de dirección IP,

en el cual la cantidad de información que es manejada es mucho

Page 27: Balanceo de Carga en Centos

14

menor, puesto que sólo son manejadas las direcciones IP y no datos

adicionales como el manejo de sesiones e información de control de

la aplicación; por ello en el manejo a nivel de dirección IP, un cuello

de botella es menos factible.

Así pues, para lograr que un sistema tenga características de alta

disponibilidad se hace uso de componentes de hardware redundante

y un software capaz de unir tales componentes. Estos sistemas

poseen dos posibles configuraciones que se listan en la tabla 2.4. Un

clúster de alta disponibilidad puede componerse de uno o varios

nodos para sustentar el acceso al servicio ofrecido, sin embargo se

debe prestar atención cuando sólo se cuenta con un nodo pues este

representa un punto único de fallo lo que se traduce en un nodo que

al fallar, el acceso se ve interrumpido.

Una estructura de alta disponibilidad de este tipo está conformada

como se muestra en la tabla 2.5.

2.1.1.5. Clúster Activo/Pasivo

2.1.1.6. Clúster Activo/Activo

Configuración Descripción

Activo –

Pasivo

Las aplicaciones se ejecutan sobre un conjunto de nodos

activos mientras que los nodos restantes actúan como

respaldos redundantes.

Activo –

Activo

Todos los nodos actúan como servidores activos de una o más

aplicaciones y potencialmente como respaldos para las

aplicaciones que se ejecutan en otros nodos.

Tabla 2.4 Configuración de un Clúster

Page 28: Balanceo de Carga en Centos

15

Elemento Descripción

Infraestructura de

alta disponibilidad.

Consiste en componentes de software que cooperan

entre sí para permitir que el clúster parezca como un

sistema único. Entre sus funciones se encuentran:

Monitorización de nodos y procesos.

Control de acceso a recursos compartidos.

Satisfacción de requerimientos del usuario.

Esta puede ser parte del núcleo del sistema operativo o

una capa situada sobre éste, las ventajas de dichas

integraciones son:

En forma de capa, una solución independiente del

sistema operativo.

En el sistema operativo, una eficiencia y facilidad

de uso.

Servicios de alta

disponibilidad.

Son clientes de la infraestructura y usan las facilidades

que exporta ese nivel para mantener en todo momento el

servicio. Usualmente existe una degradación del sistema

cuando un nodo falla pero no una interrupción del

servicio.

Tabla 2.5 Estructura de Alta Disponibilidad

2.1.2. Arquitectura de Clustering

Page 29: Balanceo de Carga en Centos

16

Figura 2.3 Arquitectura de un Clúster

El propósito de un cluster es:

Redundancia frente a fallos (alta disponibilidad).

Aumento de potencia (escalabilidad).

Estos propósitos no son excluyentes.

Importante.- A la hora de escoger que tipo de clúster se va a

utilizar hay que tener en cuenta las características que nos ofrece

cada tipo y cuál es el que más encaja en nuestro entorno.

2.1.2.1. Alta disponibilidad

“La alta disponibilidad ha sido tradicionalmente un requerimiento

exigido a aquellos sistemas que realizaban misiones críticas. Sin

embargo, actualmente, está siendo cada vez más importante exigir

esta disponibilidad en sistemas comerciales y en áreas académicas

donde el objetivo de prestar los servicios en el menor tiempo posible

es cada vez más perseguido.

El concepto de clúster de disponibilidad continua, se basa en la idea

de mantener la prestación del servicio en todo momento. Esto

representa una situación ideal, sería necesario que el sistema

estuviera compuesto de componentes perfectos que no fallaran

nunca, tanto en hardware como en software. Realmente no hay

sistemas que puedan asumir este tipo de disponibilidad.”1

Se necesita que el clúster sea tolerante a los fallos, en este caso se

encubre la presencia de los fallos del sistema empleando

redundancia en el hardware, el software e incluso redundancia

temporal. La redundancia en el hardware consiste en añadir

componentes replicados para encubrir los posibles fallos. La

1 http://www.eurogaran.com/index.php/es/servidores-linux/clusteres/de-alta-disponibilidad

Page 30: Balanceo de Carga en Centos

17

redundancia software incluye la administración del hardware

redundante para asegurar su correcto funcionamiento al hacer frente

a la caída de algún elemento. La redundancia en el tiempo hace

referencia a la repetición de la ejecución de un conjunto de

instrucciones para asegurar el comportamiento correcto en caso de

que ocurra un fallo.

Definiremos un clúster de alta disponibilidad como un sistema capaz

de encubrir los fallos que se producen en él para mantener una

prestación de servicio continua.

El clúster de alta disponibilidad va a poder diseñarse con distintas

configuraciones. Una posible configuración es activo – pasivo en el

cuál las aplicaciones se ejecutan sobre el conjunto de nodos activos,

mientras que los nodos restantes actúan como backups redundantes

para los servicios ofrecidos.

En el otro extremo, tenemos otra posible configuración, activo -

activo: en este caso, todos los nodos actúan como servidores activos

de una o más aplicaciones y potencialmente como backups para las

aplicaciones que se ejecutan en otros nodos. Cuando un nodo falla,

las aplicaciones que se ejecutaba en él se migran a uno de sus

nodos backup. Esta situación podría producir una sobrecarga de los

nodos de respaldo, con lo que se ejecutarían las aplicaciones con

más retardo.

Sin embargo es aceptable una degradación del servicio y también

suele ser preferible a una caída total del sistema. Otro caso particular

de clúster de alta disponibilidad sería el de un clúster de un solo

nodo, tratándose en este caso, simplemente, de evitar los puntos

únicos de fallo.

Page 31: Balanceo de Carga en Centos

18

“Los conceptos de alta disponibilidad y de clustering están

profundamente relacionados ya que el concepto de alta

disponibilidad de servicios implica directamente una solución

mediante clustering.

La principal prestación de un sistema de alta disponibilidad es que el

fallo de un nodo derive en que las aplicaciones que se ejecutaban en

él sean migradas a otro nodo del sistema. Este migrado puede ser

automático (failover) o manual (switchover).”2

Generalmente este tipo de cluster integra un número relativamente

pequeño de nodos (entre 2 y 8), aunque existen soluciones

comerciales que trabajan en clusters de mayor tamaño. En este

caso, la escalabilidad no sería un objetivo prioritario, en contraste

con el caso de los clusters computacionales.

Las aplicaciones usadas para el diseño y la implementación de este

tipo de clusters no tienen porqué escalar. Sin embargo, actualmente,

existe una cierta tendencia a perseguir la escalabilidad también en

los clusters de alta disponibilidad lo que lleva a que cada vez se

busca más tener un cluster de mayor número de nodos pero más

pequeños en tamaño y prestaciones.

Desde un punto de vista general, una solución de alta disponibilidad

consiste en dos partes: la infraestructura de alta disponibilidad y los

servicios.

La infraestructura consiste en componentes software que cooperan

entre sí para permitir que el cluster aparezca como un único sistema.

Sus funciones incluyen monitorizar los nodos, los procesos de

interrelación entre nodos, controlar el acceso a los recursos

2 http://www.seccperu.org/files/Clustering%20and%20Grid%20Computing.pdf

Page 32: Balanceo de Carga en Centos

19

compartidos y asegurar la integridad de los datos y la satisfacción de

los requerimientos del usuario. La infraestructura debe proveer de

estas funcionalidades cuando el cluster está en estado estable y, lo

que es más importante, cuando algunos nodos dejan de estar

operativos.

Los servicios de alta disponibilidad son clientes de la infraestructura,

y usan las facilidades que exporta ese nivel para mantener en todo

momento el servicio a los usuarios. Normalmente hay una

degradación del sistema cuando algún nodo cae, pero no una

interrupción del servicio.

Los servicios que se mantienen típicamente sobre este tipo de

clusters son las bases de datos, los sistemas de ficheros, los

servidores de correo y los servidores web. Y en general, serán

utilizados para tareas críticas o servicios ofrecidos por una empresa,

grupo de investigación o institución académica, que no puedan, por

sus características concretas, interrumpir el servicio.

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.

La infraestructura puede ser parte del núcleo del sistema operativo o

puede ser una capa situada encima. “Integrar la infraestructura en el

sistema operativo tiene como ventaja la eficiencia y la facilidad de

uso. La principal ventaja de una capa separada es que se

independiza la solución de alta disponibilidad del sistema operativo,

Page 33: Balanceo de Carga en Centos

20

con lo que resulta más portable. En cualquier caso el sistema debe

tener la capacidad de aparecer como un único sistema (SSI Single

System Image). En caso de un clúster de alta disponibilidad para

asegurar esta apariencia única los elementos más importantes son el

sistema de ficheros global, dispositivos globales y la red global.”3

Figura 2.4 Alta disponibilidad

2.1.2.2. Escalabilidad

La escalabilidad es la capacidad de un equipo para hacer frente a

volúmenes de trabajo cada vez mayores brindando siempre nivel de

rendimiento aceptable. Existen dos tipos de escalabilidad:

Escalabilidad del hardware (denominada también «escalamiento

vertical»). Se basa en la utilización de un gran equipo cuya

capacidad se aumenta a medida que lo exige la carga de trabajo

existente.

3 http://www.redes-linux.com/manuales/cluster/clustering.pdf

Page 34: Balanceo de Carga en Centos

21

Escalabilidad del software (denominada también «escalamiento

horizontal»). Se basa, en cambio, en la utilización de un clúster

compuesto de varios equipos de mediana potencia que funcionan en

tándem de forma muy parecida a como lo hacen las unidades de un

RAID (Redundant Array of Inexpensive Disks o Array redundante de

discos de bajo coste).

Se utilizan el término RAC (Redundant Array of Computers o Array

redundante de equipos) para referirse a los clúster de escalamiento

horizontal. Del mismo modo que se añaden discos a un array RAID

para aumentar su rendimiento, se pueden añadir nodos a un clúster

para aumentar también su rendimiento.

La disponibilidad y la fiabilidad son dos conceptos que, si bien se

encuentran íntimamente relacionados, difieren ligeramente. La

disponibilidad es la calidad de estar presente, listo para su uso, a

mano, accesible; mientras que la fiabilidad es la probabilidad de un

funcionamiento correcto.

Pero hasta el más fiable de los equipos acaba fallando, lo que

genera que los fabricantes de hardware intenten anticiparse a los

fallos aplicando la redundancia en áreas clave como son las

unidades de disco, las fuentes de alimentación, las controladoras de

red y los ventiladores, pero dicha redundancia no protege a los

usuarios de los fallos de las aplicaciones. De poco servirá, por lo

tanto, que un servidor sea fiable si el software de base de datos que

se ejecuta en dicho servidor falla, ya que el resultado no será otro

que la ausencia de disponibilidad. Ésa es la razón de que un solo

equipo no pueda ofrecer los niveles de escalabilidad, disponibilidad y

fiabilidad necesarios que sí ofrece un clúster.

Page 35: Balanceo de Carga en Centos

22

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.

2.1.3. Funcionamiento de un clúster

El funcionamiento de los clusters es muy simple: se trata de un

conjunto de piezas, por ejemplo, de varios microprocesadores a

través de una red de alta velocidad que los vincula de forma tal que

funcionan como un único ordenador pero de una potencia mayor al

convencional.

Un clúster se implementa básicamente con varias computadoras

similares de capacidades no necesariamente altas. Las

computadoras deben conectarse en una LAN compartida dedicada

sólo para el clúster. El clúster de alto rendimiento opera bajo

circunstancias en el que las tareas a procesar se reparten

paralelamente a las computadoras.

Un servicio de clúster consta de:

Balanceador de carga.

Sistema para la detección de fallos en los nodos del

clúster.

Servicio a clusterizar.

Recursos del clúster.

2.1.3.1. Balanceador de carga

Los balanceadores de carga permiten optimizar la utilización de

los recursos de un clúster mediante la asignación de tareas a los

Page 36: Balanceo de Carga en Centos

23

nodos con menor carga de trabajo, o con mayor cantidad de

recursos libres.

Son necesarios en las configuraciones que sean Activo / Activo

y/o balanceo de carga.

La función de los balanceadores, también conocidos como

network dispatcher es redireccionar las peticiones a los servidores

que las están atendiendo.

Figura 2.5 Balanceador de Carga

2.1.3.2. Sistema para la detección de fallos en los nodos del clúster

En caso de aparición de fallo en algún componente, la tolerancia a

fallos busca que el sistema siga trabajando, aunque esté

funcionando en modo degradado, hasta que acabe la ejecución, lo

que podrá incidir en mayor o menor medida en sus prestaciones.

Page 37: Balanceo de Carga en Centos

24

La tolerancia a fallos en un sistema se logra mediante la inclusión

de técnicas deredundancia. Puede haber redundancia en

cualquier nivel: utilización de componentes hardware extra

(redundancia en el hardware), repetición de las operaciones y

comparación de los resultados (redundancia temporal),

codificación de los datos (redundancia en la información) e incluso

la realización de varias versiones de un mismo programa y del

uso de técnicas de Replicación de Datos (redundancia de datos) o

de checkpoint (redundancia de estados).

Los mecanismos para tolerancia a fallos pueden tener un soporte

hardware o software, o bien una combinación de ambos. En

sistemas en que la incidencia de fallos sea escasa puede ser

recomendable emplear mecanismos de bajo coste con soporte

software, siempre que el algoritmo pueda proporcionar la garantía

de que acabe la ejecución correctamente aunque se degraden

sus prestaciones.

Es necesario un sistema que detecte cuando existen nodos en el

clúster que no están disponibles para ofrecer el servicio. En este

caso no se enviarán peticiones para ser atendidas si el clúster es

Activo / Activo o no se balanceará el servicio sobre ellos si es

Activo / Pasivo.

Para detectar esta situación se utilizan dos técnicas:

1. Heartbeat.

2. Disco de quorum.

Estos conceptos serán detallados más adelante.

2.1.3.3. Recursos del clúster

Son todos aquellos recursos necesarios para el servicio:

IP de servicio.

Page 38: Balanceo de Carga en Centos

25

Filesystems.

Scripts para arrancar el servicio

Figura 2.6 Recursos del Clúster

2.1.3.4. Servicio a clusterizar

Es el servicio que se quiere clusterizar. Algunos de los servicios

que pueden ser clusterizados son los siguientes:

• Servidores de Bases de Datos.

• Servidores Web.

• Servidores de Balanceo de Carga.

• Servidores de Correo.

• Servidores Firewall.

• Servidores de Archivos.

• Servidores DNS.

• Servidores DHCP.

Page 39: Balanceo de Carga en Centos

26

• Servidores Proxy Cache

2.1.4. Balanceo de Carga

Con el crecimiento de Internet en los últimos años el tráfico en la

red ha aumentado de forma radical y con él, la carga de trabajo

que ha de ser soportada por los servidores de servicios,

especialmente por los servidores web.

Para soportar estos requerimientos hay dos soluciones: o bien el

servidor se basa en una máquina de altas prestaciones, que a

largo plazo probablemente quede obsoleta por el crecimiento de

la carga, o bien se encamina la solución a la utilización de la

tecnología de clustering para mantener un clúster de servidores

de tal manera que cuando la carga de trabajo crezca, se añadirán

más servidores al clúster.

Hay varias formas de construir un clúster de balanceo de carga.

Una solución basada en mantener varios servidores aunque no se

trate de un clúster propiamente es utilizar un balanceo de carga

por DNS. En este caso, se asigna un mismo nombre a distintas

direcciones IP y se realiza un round robin a nivel de DNS entre

ellas.

En una situación ideal la carga se repartirá equitativamente entre

los distintos servidores. Sin embargo, los clientes “cachean” los

datos del DNS, con lo que la carga no va a repartirse

equitativamente y quedaría desbalanceada.

Page 40: Balanceo de Carga en Centos

27

Figura 2.7 Balanceo de Carga

Además, aún cuando el balanceo de los accesos de los clientes a

los servicios se haga de forma balanceada, estos clientes pueden

solicitar cargas muy distintas de trabajo al servidor al que se

conectan: mientras un cliente puede querer tan sólo ver una

página, otro puede solicitar un buen número de ellas. Por otra

parte, si un servidor cae, se van a seguir redirigiendo peticiones a

él.

Una solución mejor es utilizar un balanceador de carga para

distribuir ésta entre los servidores de un clúster. En este caso el

balanceo queda a nivel de conexión, con una granularidad más

fina y con mejores resultados. Además, se podrán enmascarar

más fácilmente las posibles caídas de los nodos del clúster.

El balanceo de carga puede hacerse a dos niveles: de aplicación

y a nivel IP. Sin embargo, el balanceo a nivel de aplicación puede

provocar efectos de cuello de botella si el número de nodos es

grande. Cada solución debe elegirse en función de las

Page 41: Balanceo de Carga en Centos

28

necesidades del problema al que hacemos frente. El Linux Virtual

Server utiliza balanceo a nivel IP.

El proyecto Linux Virtual Server (LVS) ofrece parches y

aplicaciones de mantenimiento y gestión que permiten construir

un cluster de servidores que implementa alta disponibilidad y

balanceo de carga sobre el sistema operativo GNU/Linux. El

sistema aparece al usuario externo como un único servidor

(en realidad, como un único servidor virtual).

Cada uno de los servidores reales que forman el cluster, es

controlado por un nodo director que se encarga de realizar el

balanceo de carga. Este director corre un sistema operativo

GNU/Linux con un kernel parcheado para incluir el código ipvs,

que es la herramienta más importante ofrecida por el proyecto

LVS. El director puede ser entendido en términos generales como

un router con un conjunto concreto de reglas de enrutamiento.

Cuando un cliente solicita un servicio al servidor virtual, el director

escoge un servidor real para que lo ofrezca. Desde ese momento

el director debe mantener la comunicación entre el cliente y el

servidor real. Esta asociación entre cliente y servidor real va a

durar sólo lo que dure la conexión tcp establecida; cuando se

inicie una nueva conexión el director escogerá de nuevo un

servidor real que puede ser distinto del anterior. Así, si el servicio

ofrecido es una página web, el cliente podría obtener las

imágenes o los textos desde distintos servidores reales ocultos

por el servidor virtual.

Con esta arquitectura, además del balanceo de carga, estamos

permitiendo que los servidores reales individuales puedan ser

Page 42: Balanceo de Carga en Centos

29

extraídos del LVS, actualizados o reparados y devueltos al clúster

sin interrumpir la prestación de servicio.

Asimismo, el sistema es fácilmente escalable y la alta

disponibilidad en LVS se diseña utilizando software mon,

heartbeat, fake y coda, que se utilizan para gestionar la alta

disponibilidad y para mantener una gestión segura, la

comunicación (hearbeat) entre máquinas y un sistema de ficheros

tolerante a fallos, respectivamente.

2.1.4.1. Balanceadores hardware

Los balanceadores de carga de Hardware son máquinas con el

propósito específico de balancear la carga.

Este tipo de balanceadores tiene ventajas en cuanto a potencia,

estabilidad y escalabilidad.

Las principales desventajas de este tipo de balanceadores es el

precio que se incurra en el equipo y mantenimiento, así como

también que se desperdicia recursos ya que son exclusivamente

dedicadas al balanceo de carga.

Algunas de estas soluciones hardware de balanceo de carga son:

WebMux Load Balancing, de CAI Networks.

Big IP Local Traffic Manager, de F5. Quizás sea la principal

alternativa.

Barracuda Load Balancer, de Barracuda Networks.

Cisco Arrowpoint.

Page 43: Balanceo de Carga en Centos

30

2.1.4.2. Balanceadores software

Los balanceadores de software son servidores configurados para

realizar la tarea del balanceo. Esto implica instalar en un

computador, un sistema operativo y una aplicación que se

encargue del balanceo de carga.

Las ventajas que tenemos en estos balanceadores es en cuanto

al precio y que cuando necesitemos un servidor más potente para

el balanceo de carga, este servidor puede ser reciclado y utilizado

para otra tarea.

En cuanto a sus desventajas se tiene que estos balanceadores

cuentan con una menor potencia y un mayor tiempo de

mantenimiento.

2.1.4.3. Linux Virtual Server - LVS

Linux Virtual Server es una solución para poder implementar un

servidor virtual altamente escalable y en alta disponibilidad.

Esta solución consiste en un balanceador de carga, también

conocido como director, que será la máquina que será accesible

directamente para los clientes y luego tendremos los servidores

que serán aquellos que recibirán las peticiones de los clientes, vía

el balanceador de carga, y responderán a las peticiones. Para los

clientes, existirán solo los balanceadores de carga, los cuales

distribuirán la carga entre los servidores reales.

Page 44: Balanceo de Carga en Centos

31

Figura 2.8 Balanceadores de Carga

Se obtiene escalabilidad en el servicio añadiendo nodos, mientras

que la disponibilidad se lograra identificando al balanceador que

no funciona, y que el nodo añadido tome la función de

balanceador, para que el servicio no se vea interrumpido.

Esta solución nos permitirá tener el servicio funcionando casi

continuamente ya que no se verá afectado por posibles caídas de

las máquinas debido a fallos en el suministro eléctrico o bien

cortes en el ISP de una determinada granja.

Cualquiera de estos fallos, u otros que pudieran ocurrir, afectarán

a una o varias granjas, pero nunca a todas con lo cual el servicio

seguirá funcionando aunque los clientes podrán experimentar

cierta demora en el servicio.

Para los clientes existirá un único servidor (el balanceador) que se

encargará de distribuir la carga entre los servidores reales.

Page 45: Balanceo de Carga en Centos

32

La escalabilidad en el servicio la conseguiremos añadiendo

nodos, mientras que la disponibilidad se logrará identificando el

nodo o el balanceador que no funciona y reconfigurando el

sistema de tal forma que el servicio no se vea interrumpido. Es

decir no enviando peticiones a un nodo que no pudiera dar

servicio en ese momento.

2.1.5. Detección de fallos en los nodos del clúster

Un clúster debe conocer cuando algún nodo no está disponible para

no enviarle peticiones de servicio. Por lo cual, un sistema de

detección de fallos en los nodos del Clúster es vital para su

funcionamiento.

Esto se hace de dos formas:

Heartbeat

Disco de quórum

2.1.5.1. Heartbeat

Figura 2.9 Heartbeat

Page 46: Balanceo de Carga en Centos

33

Es la técnica más habitual. Consiste en comunicarse o bien a través

de una interface de red o puerto serie cada cierto tiempo. Si se

pierde la comunicación durante un determinado tiempo se supone

que el nodo ha caído.

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.

El funcionamiento de Heartbeat se basa en el envío y recepción de

señales enviadas por los demonios de Hearbeat que se ejecutan en

ambas máquinas, a estas señales se les conocen como “latidos”.

La diferencia entre el servidor maestro y el esclavo, radica en la

prioridad que tienen para ofrecer un servicio. Aquí, el esclavo solo

ofrecerá el servicio cuando deje de escuchar los latidos del maestro

durante periodo de tiempo determinado, pasado el cual se supondrá

que el servidor maestro dejó de funcionar.

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.

El maestro y esclavo pueden comunicarse por medio de dos

interfaces, el puerto serial (RS-232) o las tarjetas Ethernet.

Puede darse el caso de un error en la interfaz que une a ambas

máquinas que imposibilita la llegada de latidos hacia el esclavo. Si

Page 47: Balanceo de Carga en Centos

34

sucede esto, el esclavo interpretará erróneamente que el servidor

maestro ha caído y tratara de tomar el control de la prestación del

servicio, cuando el servicio nunca ha dejado de prestarse.

2.1.5.2. Disco de quorum

Disco de quorum es una técnica complementaria que lo que se hace

es que todos los nodos del clúster escriben su estado en un disco y

de esa forma se determina quien está disponible para dar el servicio.

Si un nodo tiene problemas de red y no llega a los otros nodos

pensará que los otros nodos no están disponibles e intentará

hacerse con el servicio.

Si disponemos de dispositivos serie para el heartbeat entonces

dispondremos de una forma de comprobar que los otros nodos están

funcionando correctamente y el problema es nuestro. De no

disponerlo se asumirá de forma incorrecta que los otros nodos han

fallado, intentando asumir el control del clúster. Para evitar esto se

utiliza el disco de quorum.

Cada nodo escribe de forma continua su estado en el disco y de esta

forma se puede verificar que nodos están disponibles para hacerse

con el servicio en el clúster.

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.

Page 48: Balanceo de Carga en Centos

35

Figura 2.10 Disco de Quorum

Page 49: Balanceo de Carga en Centos

36

CAPITULO 3

INTRODUCCION

En este capítulo se presentarán las soluciones de software libre para

mitigar el problema de alta disponibilidad y balanceo de carga, se

expondrán sus características así como las herramientas que hacen

posible la construcción de dichas soluciones.

Además se llevará a cabo una comparativa de las herramientas

existentes para la realización del clúster, además de ello, se describirán

tales herramientas de forma breve en cuanto a sus componentes y su

funcionamiento.

DIAGNOSTICO

3.1. Herramientas de open source para la construcción del Clúster

Podemos encontrar una amplia variedad de aplicaciones para la

creación de clústers, la utilización de una u otra de estas dependerá

de la complejidad de instalación, uso específico y ventajas de este

sobre otras herramientas. De las opciones que se pueden encontrar

están:

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.

Page 50: Balanceo de Carga en Centos

37

Herramienta. Características.

openMosix

Parche al kernel de GNU/Linux.

Algoritmo interno de balance de carga que migra

los procesos entre nodos.

Migración de procesos totalmente transparente.

Auto descubrimiento de nuevos nodos openMosix

en la red del clúster.

OSCAR

Permite instalar un clúster tipo Beowulf.

Contiene todo el conjunto de paquetes necesarios

para programar y administrar el clúster.

Formado por dos componentes principales SIS

(System Installation Suite) y ODA (OSCAR

Database API).

Piranha

Implementación de software de alta disponibilidad.

Interfaz web para control completo del clúster.

Posee herramientas para su monitorización.

Balance mediante direcciones IP.

Requiere el sistema operativo Red Hat Enterprise.

Linux Virtual Server – LVS

Constituido por un servidor altamente escalable y

de alta disponibilidad.

Balance de carga mediante nodo dedicado con

sistema operativo GNU/Linux.

Clúster completamente transparente al usuario

final.

Mecanismo para que el clúster funcione con una IP

pública.

Permite balance de carga y alta disponibilidad.

Incluye monitorización de servidores reales y

nodos de balance.

Permite el manejo de protocolos como HTTP, FTP,

Page 51: Balanceo de Carga en Centos

38

Ultramonkey

DNS, entre otros.

Permite usar iptables o ipchains para marcar los

paquetes que pertenezcan al servicio prestado por

el clúster.

Usado desde clústers de dos nodos hasta grandes

sistemas.

Tabla 3.1 Características de Herramientas para Clústers.

Por último, se mostrarán las ventajas y desventajas de cada una de

las herramientas anteriormente mencionadas, pues es importante

tener presente esta comparativa para hacer una primera

aproximación a la elección de una sola herramienta para llevar a

cabo una implantación eficaz y sencilla que cubra las necesidades

solicitadas; esto se refleja en la tabla 3.2.

Herramienta. Ventaja. Desventaja.

openMosix

No se requieren paquetes

adicionales.

No son necesarias

modificaciones en el

código de openMosix.

Migración de procesos.

Depende del kernel.

No migra todos los

procesos siempre.

Problemas con

memoria compartida.

OSCAR

Es una compilación auto

instalable.

Infraestructura de software

para instalar y administrar

un clúster.

Posee bibliotecas y

Falla la detección de

algunos componentes

de hardware en

versiones anteriores a

la 3.

Soporte para

distribuciones basadas

en RPMs solamente

Page 52: Balanceo de Carga en Centos

39

compiladores para uso en

clústers.

para versiones

anteriores a la 5.

Requiere que la LAN no

sea usada para instalar

software en el clúster.

Piranha

Soporte por parte de Red

Hat Inc.

Fácil instalación debido al

formato de distribución.

Administración y manejo

mediante interfaz web.

Monitorización de

servidores reales.

Al momento solo

disponible para

versiones

empresariales de Red

Hat.

Dependiente del

sistema operativo Red

Hat Enterprise.

Linux Virtual Server

- LVS

Fácil comprensión de

funcionamiento.

Amplia gama de

configuraciones.

Funciona a nivel TCP/IP.

Manejo de varios tipos de

protocolos como HTTP,

DNS, FTP entre otros.

Algunos esquemas se

ven afectados por la

cantidad de servidores

reales que se pueden

utilizar.

Cuando el número de

servidores reales es

elevado se genera

mucho tráfico en la red

de trabajo.

Múltiples esquemas de

configuración.

Reúne varias herramientas

de una manera sencilla.

Varios formatos para su

instalación.

Amplia documentación

sobre cada componente.

Los nodos directores

tienen que ejecutar

estrictamente el

sistema operativo

GNU/Linux.

Page 53: Balanceo de Carga en Centos

40

Ultramonkey Instrucciones de

instalación para las

distribuciones de

GNU/Linux más comunes

en servidores.

Se apoya en el proyecto

LVS para algunos

componentes.

No es dependiente de una

distribución de GNU/Linux

en particular.

Según el esquema de

configuración puede

llegar a ser complejo.

Mismas que en LVS

para los componentes

que sean utilizados de

dicho proyecto.

Tabla 3.2 Ventajas y Desventajas de las Herramientas para Clúster.

3.2. Comparación de las herramientas de balanceo de carga y alta

disponibilidad

Herramient

a

Formato

de

Distribució

n

Distribucione

s Soportadas

Balanceo de

carga y Alta

disponibilidad

Ventajas

Desventajas

openMosix

RPM,

Código

fuente.

Todas.

Balanceo de

carga de

procesos sin

alta

disponibilidad.

No requiere

paquetes

adicionales y

hace

migración de

procesos.

Dependiente

del kernel y

posee

problemas con

memoria

compartida.

Auto instalable

En versiones

anteriores a la

tercera falla la

detección de

Page 54: Balanceo de Carga en Centos

41

OSCAR

RPM,

Código

fuente.

Red Hat y

basadas en

esta.

Balanceo de

carga de

procesos sin

alta

disponibilidad.

con bibliotecas

y

compiladores

para computo

paralelo.

hardware y no

permite usar la

red interna

para

instalación de

software.

Piranha

RPM.

Red Hat

Enterprise 4 o

posteriores.

Posee

herramientas

propias para

ambos

aspectos.

Soporte de

Red Hat,

administración

y manejo

mediante

interfaz web.

Actualmente

disponible solo

en formato

RPM y para

versiones

empresariales.

Linux

Virtual

Server

RPM, DEB,

Código

fuente.

Todas.

Incluye

herramientas

de código

abierto para

ambos

aspectos.

Amplia gama

de

configuracione

s, función a

nivel TCP/IP y

manejo de

distintos

protocolos.

Instalación por

segmentos;

con un gran

número de

servidores

reales el

tráfico crece

de manera

significativa.

Ultramonke

y

RPM. DEB,

Código

fuente.

Basadas en

Debian, Red

Hat Enterprise

4 y mediante

compilación

de código

fuente.

Uso de

componentes

de LVS para

ambos

aspectos

añadiendo

algunas

mejoras y

Múltiples

configuracione

s, manejo de

distintos

protocolos,

función a nivel

TCP/IP,

marcas de

firewall y

Los nodos de

balance de

carga deberán

ejecutar el

sistema

operativo

GNU/Linux;

dependiendo

del esquema

llega a ser

Page 55: Balanceo de Carga en Centos

42

herramientas. ampliación de

LVS.

complejo de

configurar.

Tabla 3.3 Comparación de herramientas para clúster.

Una de las herramientas las más usadas es Piranha de la empresa

Red Hat., que incorpora balance de carga mediante direcciones IP y

también hace la inclusión de código del proyecto LVS, en esta

herramienta Red Hat incorporó mejoras; para poder hacer uso

eficiente de Piranha es recomendado el uso de Red Hat Enterprise

Linux 4 o posterior, su sencillez en instalación y amplio soporte por

parte de dicha empresa brinda satisfacción al hacer una

implementación con esta. Fuera del pago de la licencia para el

sistema operativo el software de Piranha está disponible de manera

gratuita para usuarios registrados de esta distribución.

Junto a la anterior herramienta se puede encontrar el proyecto LVS

el cual fue iniciado por Wensong Zhang en Mayo de 1998 y su

principal objetivo era desarrollar un servidor GNU/Linux de alto

rendimiento que proporcione un buena escalabilidad, confianza y

robustez usando la tecnología de clúster. De los avances más

importantes de LVS es el desarrollo de un sistema IP avanzado de

balanceo de carga por software (IPVS), balance de carga por

software a nivel de aplicación y componentes para la gestión de

clúster. Se puede usar LVS como solución para construir sistemas

altamente escalables, donde se garantiza una alta disponibilidad de

los servicios de red como el correo electrónico, voz sobre IP y el

servicio web.

La siguiente opción es Ultramonkey, siendo una de las herramientas

más completas en cuanto a balanceo de carga y alta disponibilidad;

ya en su tercera versión cuenta con formatos de instalación para

Page 56: Balanceo de Carga en Centos

43

diversas distribuciones de GNU/Linux como Debian y Red Hat. Esta

herramienta solo puede ser usada en estaciones cuyo sistema

operativo sea GNU/Linux siendo este uno de sus pocos

inconvenientes en lo que respecta a la independencia de plataforma.

Hace uso de las tecnologías de LVS, Linux-HA y Ldirectord para

lograr ambas metas que son el balance de carga y la alta

disponibilidad. De entre los posibles esquemas de configuración se

cuenta con soluciones separadas o una que incorpore ambas, así

como también un esquema estándar o uno más completo.

La herramienta OSCAR es una colección de software de código

abierto para crear un clúster sobre GNU/Linux desarrollada por el

Grupo de Clústers Abiertos (OCG – Open Clúster Group). El objetivo

primario del grupo de trabajo OSCAR es conseguir que la

instalación, la configuración y la administración de un clúster de

tamaño modesto, sea fácil. Cualquier cosa necesaria para un clúster

como instalación y configuración, mantenimiento, programación

(paralela), sistemas de encolamiento, programación de tareas, está

incluida en OSCAR. Su principal labor es para cómputo de alto

rendimiento.

En Open Mosix los procesos no saben en qué nodo del clúster se

ejecutan, y es el propio Open Mosix el responsable de "engañarlos",

y redirigir las llamadas al sistema al nodo del clúster en el que se

lanzó el proceso. Open Mosix implementa un algoritmo de balance

de carga que permite repartir de forma óptima la carga, si está el

clúster bien calibrado. Open Mosix puede migrar cualquier proceso

mientras que no haga uso de los segmentos de memoria

compartida. Según la calibración, migrarán procesos más ligeros, o

más pesados.

Page 57: Balanceo de Carga en Centos

44

Dadas las características vistas con anterioridad en la tabla 3.3 y

esto aunado a los fines que persiguen hacen inclinar la balanza por

las siguientes opciones mejor adaptadas a este campo que son:

Piranha.

Linux Virtual Server.

Ultramonkey.

Se procederá ahora a describir cada una de las tres herramientas

más comunes, cabe destacar que cada una es revisada de manera

breve resaltando mediante figuras el funcionamiento de cada una de

ellas así como mencionando los componentes de cada una.

3.2.1. Herramientas de balanceo de carga y alta disponibilidad

3.2.1.1. Piranha

Es un conjunto de aplicaciones en un ambiente bien unido para los

administradores que desean instalar servicios de clúster en

ambientes GNU/Linux. Un clúster piranha se compone de los

siguientes elementos:

El parche IPVS para el kernel.

El demonio LVS para manejar las tablas IPVS a través de

ipvsadm.

El demonio nanny para monitorizar servicios y servidores.

El demonio pulse para controlar el estado del resto de

demonios del clúster y la entrada en funcionamiento del nodo

de balance de carga de respaldo en caso de fallo del primario.

La interfaz gráfica piranha para administrar el clúster.

Todos estos demonios utilizan el mismo archivo de configuración

ubicado en el directorio /etc/lvs.cf para su funcionamiento. Como un

valor añadido a piranha este es capaz de adaptar los pesos de los

algoritmos de planificación automáticamente según las estadísticas

Page 58: Balanceo de Carga en Centos

45

de funcionamiento de cada servidor. En la figura 3.1 se aprecia

cómo se compone un clúster con Piranha.

Figura 3.1 Esquema de funcionamiento de Piranha.

3.2.1.2. Linux Virtual Server

Es un software para el balanceo de carga que permite crear un

clúster de forma rápida y eficaz sin hacer grandes inversiones en

hardware dedicado. Es una solución ideal para aquellas empresas

que quieren ahorrar costos permitiendo tener tras una única

dirección IP pública muchos servidores reales y servicios de forma

transparente a los usuarios.

Es implementado como un conjunto de parches al kernel de

GNU/Linux y un programa denominado ipvsadm. La principal meta

de LVS es proveer un mecanismo de migración de sockets. Un

clúster de este tipo está formado por dos tipos de máquinas, los

nodos o servidores reales que corren con los servicios habituales

que estos suelen proveer y los nodos directores o de balanceo de

Page 59: Balanceo de Carga en Centos

46

los cuales uno de ellos será el principal y el resto estarán preparados

para actuar de respaldo del principal para cuando este falle. LVS

funciona a nivel TCP/IP, lo que se conoce como un switch de nivel 4

o mejor conocido como capa 4. Lo que en realidad administra LVS

son direcciones y puertos de origen y destino, y toma decisiones

para balancear la carga con esta información.

LVS soporta tres modos de trabajo distintos, estos modos definen el

método en que el nodo de balanceo retransmitirá las

comunicaciones provenientes de los usuarios a los servidores reales

definidos.

LVS permite balancear muchos protocolos distintos. LVS se ha

usado con HTTP, HTTPS, FTP, etc. En la figura 1.10 se muestra su

funcionamiento.

Figura 3.2 Esquema de funcionamiento de LVS.

Page 60: Balanceo de Carga en Centos

47

3.2.1.3. Ultramonkey

Es un proyecto que integra diferentes herramientas de software libre

para conseguir alta disponibilidad y balanceo de carga en redes LAN

redes de área local. Estas herramientas son: LVS, Heartbeat,

Ldirectord y MON como lo muestra la figura 3.3.

3.2.1.3.1. Componentes Ultramonkey

LVS realiza balanceo de carga y facilita la alta disponibilidad entre

los servidores reales. Sin embargo, el nodo de balanceo de carga se

convierte en un punto único de fallo, si se quiere alta disponibilidad

se deberá añadir otro nodo de balanceo de respaldo y usar software

de alta disponibilidad que le permita tomar el papel del nodo de

balanceo de carga principal.

3.2.1.3.1.1. Heartbeat

Funciona enviando periódicamente un paquete, que si no llegara,

indicaría que un servidor no está disponible, por lo tanto se sabe que

el servidor ha caído y se toman las medidas necesarias. Se

recomienda el uso de puertos serie puesto que están aislados de las

tarjetas de red. Soporta múltiples direcciones IP y un modelo

servidor primario/secundario.

Los mensajes de Heartbeat se envían por todas las líneas de

comunicación a la vez, de esta manera, si una línea de apoyo cae,

se avisará de ese problema antes de que la línea principal caiga y no

haya una línea secundaria para continuar el servicio. Heartbeat

también se preocupa por la seguridad, permitiendo firmar los

paquetes con CRC de 32 bits, MD5 y SHA1.

Page 61: Balanceo de Carga en Centos

48

3.2.1.3.1.2. Ldirectord

Se encarga de monitorizar que los servidores reales permanezcan

funcionando periódicamente, enviando una petición a una dirección

URL (Uniform Resource Locator) conocida y comprobando que la

respuesta contenga una cadena concreta. Si un servidor real falla,

entonces el servidor es quitado del conjunto de servidores reales y

será reinsertado cuando vuelva a funcionar correctamente. Si todos

los servidores fallan, se insertará un servidor de fallos, que será

quitado una vez que los servidores vuelvan a funcionar.

3.2.1.3.1.3. Mon (Service Monitoring Daemon)

Es un software para la monitorización del sistema. Este permite

definir una serie de alarmas y acciones a ejecutar cuando un servicio

deja de funcionar y se utiliza ampliamente como componente de

monitorización de recursos para Heartbeat.

Figura 3.3 Componentes de Ultramonkey.

Mientras el software Ultramonkey funciona por sí mismo en

GNU/Linux, este puede proporcionar servicios de clúster para

Page 62: Balanceo de Carga en Centos

49

virtualmente cualquier red de servicios corriendo en un sistema

operativo que pueda comunicarse usando TCP o UDP. Soporta un

amplio rango de protocolos, con comprobación nativa de integridad

para: Web, Mail, FTP, News, LDAP y DNS. También provee de

paquetes binarios para una lista de distribuciones seleccionadas.

La figura 3.4 muestra un esquema típico de funcionamiento de

Ultramonkey en el cual existe balanceo de carga y alta disponibilidad.

Figura 3.4 Esquema de funcionamiento de Ultramonkey.

Page 63: Balanceo de Carga en Centos

50

CAPITULO 4

INTRODUCCION

En este capítulo se llevará a cabo un análisis de los métodos

existentes de balanceo de carga, dado que estos llegan a ser

complejos solamente se tratará la teoría más básica de operación;

adicionalmente se realizará la toma de decisión de una herramienta

para su implementación.

DISEÑO

4.1. Tipos de balanceo de carga

Existen dos formas simples para montar un clúster y distribuir la

carga entre los equipos mostradas en la tabla 4.1 a continuación.

Método Ventajas Desventajas

DNS

Round –

Robin.

Distribución de la carga

entre servidores reales

de forma pseudo-

aleatoria.

Es el más simple de

implementar.

El cache de la

información en la

jerarquía de

servidores DNS y la

forma simple de

tomar decisiones por

parte del servidor

DNS restringen su

utilidad.

“Los servidores no

pueden ser

Page 64: Balanceo de Carga en Centos

51

seleccionados según

el URL solicitado.”4

Uso de nodo

de balanceo

de carga.

Este nodo distribuye las

conexiones.

Se aumenta la

sensación de unidad

del clúster.

Única dirección IP

pública a la cual dirigir

las peticiones.

Es sencillo enmascarar

fallas de los servidores.

Llega a convertirse

en cuello de botella.

Hace uso de un nodo

adicional para

proveer el balanceo

de carga.

Al existir solo un

nodo de balanceo

este se convierte en

un punto único de

fallo.

Tabla 4.1 Métodos de balanceo de carga.

4.1.1. Modos de balanceo de carga en LVS

LVS permite realizar el reenvío de paquetes a los servidores

reales de tres formas. En la tabla 4.2 se muestran los tres modos

de balanceo.

Modo de

balanceo

Ventajas Desventajas

Balanceo

mediante NAT.

(Network

Aprovecha la

posibilidad del kernel

de Linux de funcionar

como router con NAT.

Los servidores reales

pueden ejecutar

El nodo de

balanceo se llega a

convertir en cuello

de botella.

Tiene que reescribir

todos los paquetes

4 http://www.wikilearning.com/monografia/balance_de_carga-la_aproximacion_via_dns/20837-2

Page 65: Balanceo de Carga en Centos

52

Address

Translation).

cualquier sistema

operativo que soporte

TCP/IP.

Uso de solamente

una dirección IP

pública.

TCP/IP.

Número de

servidores reales

dependiente de la

velocidad de

conexión del nodo

de balanceo.

Balanceo

mediante

encapsulado IP

(IP Tunneling)

Escalado de hasta

100 servidores o más.

Se evita que el nodo

de balanceo se

convierta en cuello de

botella.

No todos los

sistemas operativos

son soportados por

este modo.

Los servidores

reales necesitan

tener una IP

pública.

Balanceo

mediante

enrutamiento

directo (Direct

Routing)

El nodo de balanceo

no es cuello de

botella.

No se sobrecarga al

nodo de balanceo en

reescribir paquetes

TCP/IP.

Todos los

servidores deben

poseer una IP

pública en el mismo

segmento de red

del nodo de

balanceo.

No todos los

sistemas operativos

permiten configurar

una IP o dispositivo

para responder a

comandos ARP.

Tabla 4.2 Modos de balanceo de carga en LVS.

Page 66: Balanceo de Carga en Centos

53

Balanceo mediante NAT

“NAT (es un mecanismo utilizado por routers IP para intercambiar

paquetes entre dos redes que se asignan mutuamente

direcciones incompatibles. Consiste en convertir en tiempo real

las direcciones utilizadas en los paquetes transportados. También

es necesario editar los paquetes para permitir la operación de

protocolos que incluyen información de direcciones dentro de la

conversación del protocolo)”.5

A continuación se explica mediante figuras el funcionamiento de

cada uno de los modos de balanceo, en la figura 4.1 siguiente se

puede ver todo el proceso para el modo NAT:

Figura 4.1 Balanceo mediante NAT.

5 http://www.adslfaqs.com.ar/que-es-nat-network-address-translation/

Page 67: Balanceo de Carga en Centos

54

Balanceo mediante encapsulamiento IP

De acuerdo a la figura 4.2 el proceso es el siguiente:

1. El usuario realiza una petición de servicio a la IP pública

del clúster (la del nodo de balanceo de carga o IP virtual

del clúster).

2. El nodo de balanceo planifica a qué servidor real se va a

enviar la petición, reescribe las cabeceras de las tramas

TCP/IP y las envía al servidor.

3. El servidor recibe la petición, la procesa, genera la

respuesta y la envía al nodo de balanceo de carga.

4. El nodo de balanceo reescribe de nuevo las cabeceras de

las tramas TCP/IP con la respuesta del servidor, y las

envía de vuelta al usuario.

5. La respuesta llega al usuario, como si la hubiese generado

la IP pública del clúster.

En el modo de balanceo por encapsulamiento IP, su función se

ilustra a continuación con la figura 4.2:

Page 68: Balanceo de Carga en Centos

55

Figura 4.2 Balanceo mediante encapsulado IP.

El nodo de balanceo recibe todas las conexiones de entrada al

clúster, y decide a qué servidor enviárselas. Para hacer esto,

utiliza el encapsulado IP para enviar cada trama que recibe a la IP

del servidor que vaya a encargarse de ella. Cuando el servidor

elegido recibe el paquete, lo desencapsula y al tener configurada

la IP pública del clúster como propia, acepta la trama original y se

encarga de servir la petición que contuviera enviando éste

servidor la respuesta al cliente directamente.

Balanceo mediante enrutamiento Directo

El último modo de balanceo es mediante enrutamiento directo que

se muestra en la figura 4.3:

Figura 4.3 Balanceo mediante enrutamiento directo.

Page 69: Balanceo de Carga en Centos

56

Todos los equipos tendrán configurado una interfaz con la IP

pública del clúster: el nodo de balanceo la tendrá en su acceso a

Internet y será el punto de entrada al clúster; el resto de equipos

estarán conectados al nodo de balanceo en la misma red física y

en la interfaz conectada a ésta red tendrán configurada la IP

pública del clúster, pero configurando la interfaz para que no

responda a comandos ARP (todos los equipos responderían por

la misma IP con distintas direcciones físicas). Al llegar una

petición al nodo de balanceo éste decide a qué servidor

enviársela y redirige el paquete a nivel de enlace a la dirección

física del servidor elegido en lugar de modificar o encapsular el

paquete TCP/IP. Cuando llega al servidor con la dirección física

de destino y se analiza hasta el nivel de red (TCP/IP), como el

servidor también tiene configurada la IP pública del clúster, acepta

sin más el paquete y genera la respuesta que enviará

directamente al cliente.

4.1.2. Resumen de los métodos de balanceo

En la tabla 4.3 a continuación se resumen las características

principales de los tres métodos de direccionamiento que puede

utilizar el balanceador de carga de Linux Virtual Server:

NAT Encapsulamiento IP Enrutamiento

Directo

Servidor Cualquiera Necesita

Encapsulamiento Dispositivo no-ARP

Red de

servidores Red Privada LAN/WAN LAN

Page 70: Balanceo de Carga en Centos

57

Escalabilidad Baja (10~20) Alta Alta

Salida hacia

Internet

Nodo de

balanceo Router Router

Tabla 4.3 Métodos de direccionamiento.

4.1.3. Planificación del balanceo de carga

Al momento de configurar el nodo de balanceo se podrá elegir

entre una serie de algoritmos para ver cómo se distribuirá la carga

entre los servidores y cómo se elegirá el servidor al que se envía

cada petición. Linux Virtual Server permite utilizar los siguientes

algoritmos que se muestran en la tabla 4.4:

Algoritmo Funcionamiento

Round Robin

Cada petición se envía a un servidor y la siguiente

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.

Round Robin

Ponderado

Igual que el anterior algoritmo pero añadiendo un peso a

cada servidor, este peso es un entero que indica la

potencia de cálculo del servidor, de modo que la cola

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.

Servidor con

menos

conexiones

activas.

Este mecanismo de distribución consulta a los servidores

para revisar en cada momento cuántas conexiones

abiertas posee cada uno con los clientes, y envía cada

petición al servidor que menos conexiones tenga en ese

momento, véase la figura 4.6.

Servidor con Igual que el algoritmo anterior pero se le añaden pesos a

Page 71: Balanceo de Carga en Centos

58

menos

conexiones

activas

Ponderado.

los servidores para que de alguna forma se mida su

capacidad de cálculo para modificar la preferencia al

momento de hacer una elección, véase la figura 4.7.

Menos

conectado

basado en

servicio.

Este algoritmo dirige todas las peticiones a un mismo

servidor, hasta que se sobrecarga (su número de

conexiones activas es mayor que su peso) y entonces

pasa a una estrategia de menos conexiones activas

ponderada sobre el resto de servidores del clúster,

véase la figura 4.8.

Tablas Hash por

origen y destino.

En estos algoritmos se dispone de una tabla de

asignaciones fijas, en las que bien por la IP de origen o

destino, se indica qué servidor deberá atender la

petición. El nodo de balanceo compara las direcciones

de las tramas TCP/IP que reciba con estas tablas y

actúa en consecuencia, véase la figura 4.9.

Conexiones

Persistentes.

A todos los algoritmos de planificación anteriores se les

puede añadir el hecho cuando un cliente se ha

conectado con un servidor, siempre se le dirija al mismo

servidor.

Tabla 4.4 Algoritmos de planificación de balanceo de carga.

Page 72: Balanceo de Carga en Centos

59

Figura 4.4 Round Robin.

Figura 4.5 Round Robin Ponderado.

Page 73: Balanceo de Carga en Centos

60

Figura 4.6 Servidor con menos conexiones activas.

Figura 4.7 Servidor con menos conexiones activas ponderado.

Page 74: Balanceo de Carga en Centos

61

Figura 4.8 Menos conectado basado en servicio.

Figura 4.9 Tablas Hash por origen y destino.

Page 75: Balanceo de Carga en Centos

62

La elección de una u otra técnica depende principalmente del

servicio que se quiera proveer, los conocimientos que se posean

de los sistemas, el sistema operativo de los servidores, los

recursos económicos que se estén dispuestos a gastar, y

consideraciones de rendimiento que afectan al sistema en

conjunto.

4.2. Elección de una herramienta para balanceo de carga y alta

disponibilidad

Para poder tomar una decisión acerca de cuál herramienta es la

mejor opción se debe tomar en cuenta factores como: estabilidad,

fiabilidad, costos de implementación (tanto en hardware como en

conocimientos), escalabilidad entre otros. Como parámetros para

poder evaluar dichas herramientas se usará la cantidad de

requisitos por cada herramienta, facilidad de comprensión e

implementación así como también su disponibilidad para su

adquisición. Las herramientas evaluadas son Piranha, Linux

Virtual Server y Ultramonkey.

Como punto de partida se compararán los requisitos mínimos

para la implementación de cada una en cuanto a los equipos que

actúan como coordinadores o directores.

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

Page 76: Balanceo de Carga en Centos

63

y en particular de una versión empresarial. La tabla 4.5 muestra

los requisitos mínimos de hardware requeridos.

Procesador Pentium II 300 MHz

Memoria RAM 64 MB

Espacio en Disco Duro +2 GB recomendado

Interfaz de Red 10 Mbps

Tabla 4.5 Requisitos mínimos de hardware para Piranha.

Linux Virtual Server:

Este es muy simple de implementar y debido a sus características

los nodos directores o de balanceo pueden poseer o no una

interfaz gráfica ya que su administración es vía línea de

comandos. Como se ha visto, LVS es un parche al kernel de

GNU/Linux y esto es importante de verificar puesto que algunas

versiones del kernel pudiesen no contar con dicho parche de

manera activa siendo uno de los casos todos aquellos kernels

personalizados. Su mayor ventaja es su independencia de la

distribución del sistema operativo (siempre y cuando sea

GNU/Linux, la distribución puede variar) pues está más ligado con

el kernel que con la distribución. Para su implementación bastará

con un equipo que cubra los mínimos requisitos en hardware para

una distribución basada en un kernel 2.4.27 o superior siendo un

ejemplo el de la tabla 4.6.

Procesador Pentium MMX 166 MHz

Memoria RAM 64 MB

Espacio en Disco Duro +1 GB (sin interfaz gráfica)

Interfaz de Red 10 Mbps

Page 77: Balanceo de Carga en Centos

64

Tabla 4.6 Requisitos mínimos de hardware para LVS.

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.

Procesador Pentium MMX 166 MHz

Memoria RAM 64 MB

Espacio en Disco Duro +512 MB (recomendados +1GB)

Interfaz de Red 10 Mbps

Tabla 4.7 Requisitos mínimos de hardware para Ultramonkey.

Se concluye que Ultramonkey es la herramienta que requiere la

menor cantidad de recursos para su instalación y funcionamiento,

la tabla 4.8 compara los requisitos mínimos de hardware de

Piranha, LVS y Ultramonkey.

Herramienta.

Procesador.

Memori

a RAM.

Espacio

en

Disco

Duro.

Interfaz

de Red.

Piranha. Pentium II 300MHz 64 MB +2GB 10

Mbps

Page 78: Balanceo de Carga en Centos

65

LVS. Pentium MMX

166MHz

64 MB +1GB 10

Mbps

Ultramonkey. Pentium MMX

166MHz

64 MB +512MB 10

Mbps

Tabla 4.8 Comparación de requisitos.

El siguiente punto a evaluar es la complejidad de instalación,

tómese en cuenta que todos los parámetros que se están

evaluando son sobre los nodos principales, sin tomar en cuenta

los servidores reales.

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

Page 79: Balanceo de Carga en Centos

66

no poseer tal licencia se deben adquirir los paquetes por separado

y proceder con una instalación manual en la cual dependerá el

tipo de paquete adquirido, si es en formato RPM o en forma de

código fuente. La instalación del conjunto de aplicaciones que

conforman Piranha resulta especialmente compleja si no se posee

la licencia del sistema operativo Red Hat Enterprise en donde se

vaya a realizar la instalación.

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.

Se concluye que Ultramonkey es la herramienta que posee los

mecanismos de instalación más simplificados, ahorrando tiempo y

esfuerzo dada la automatización de los procesos y la facilidad de

acceso a los paquetes que conforman la herramienta. Por último

se verá que tan complejo es obtener las aplicaciones que

conforman la herramienta y los diferentes métodos que posee

cada una para su distribución.

Page 80: Balanceo de Carga en Centos

67

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.

Como se puede apreciar por estos tres indicadores, la mejor

opción para elección es Ultramonkey debido a su sistema de

instalación, variedad de formatos de distribución así como sus

requisitos mínimos de hardware muy bajos. Sin duda las otras

opciones son muy viables, pero presentan limitantes; con esto

presente queda establecido que la mejor opción para

Page 81: Balanceo de Carga en Centos

68

implementación es Ultramonkey ya que está bien acoplado con la

distribución Centos la cual tiene un elevado reconocimiento en

cuanto a estabilidad y seguridad como en el aprovechamiento de

recursos de una estación, sistema de gestión de paquetes muy

avanzado y sencillo de usar que resuelve por si mismo varias de

las dependencias de paquetes necesarias.

Page 82: Balanceo de Carga en Centos

69

CAPITULO 5

INTRODUCCION

Este capítulo tiene como finalidad describir la manera de cómo se lleva a

cabo el proceso de construcción del clúster, así como también de hacer

notar cuales aspectos se deberán tomar en cuenta para su

configuración.

IMPLEMENTACION EN MAQUINAS VIRTUALES

5.1 INSTALACION Y CONFIGURACION DEL CLUSTER

El clúster funcionará de la siguiente manera (figura 5.1), el usuario

realizará una petición de una página web al servicio (el usuario

desconoce que se trata de un clúster), al llegar la petición al nodo de

balance este redireccionará dicha petición a uno de los servidores reales

mediante al algoritmo de balanceo de carga establecido. El servidor real

que atiende dicha petición tiene como origen de la misma al nodo de

balanceo y no al usuario debido al método de direccionamiento

empleado y su respuesta va dirigida a éste nodo. Una vez el nodo de

balanceo recibe la respuesta del servidor real solicitado, la envía al

usuario que la solicitó teniendo como su dirección la IP virtual del clúster

y no la IP real del nodo de balanceo, esto es así porque al hacer el

cliente la petición, se hace a la IP virtual del clúster y es de esta misma

dirección de donde se obtiene la respuesta haciendo creer al usuario

que es atendido por un solo equipo y no por un clúster. Tabla 5.1.

En caso de existir una falla en uno de los servidores reales el

balanceador verifica cuál se encuentra brindando el servicio y lo

direccion hacia dicho servidor. Para el usuario esto es transparente ya

que no afecta el servicio simplemente se ve afectado el rendimiento pero

nunca en una pérdida de servicio, ésta se da cuando todos los nodos

servidores fallan.

Page 83: Balanceo de Carga en Centos

70

Figura 5.1 Funcionamiento del Clúster.

Se hace una petición de página a la IP virtual del clúster.

La petición se envía al nodo de balanceo, éste mediante un

algoritmo envía la petición al servidor real correspondiente.

El servidor real que recibe la petición la procesa y envía el

resultado al nodo de balanceo.

El nodo de balanceo envía la respuesta a la petición al cliente

indicando que la dirección IP del paquete que sale es la IP

virtual del clúster y no la IP del nodo de balanceo.

El cliente recibe la respuesta a su petición por parte de la IP

virtual del clúster, el cliente en ningún momento se da cuenta

que es atendido por un clúster.

Tabla 5.1 Funcionamiento del Clúster.

Page 84: Balanceo de Carga en Centos

71

5.1.1 SELECCIÓN DE NODOS PARA EL CLÚSTER

Para la selección de los nodos que conforman el clúster es importante

hacer notar que aquellos destinados a tomar la función de nodos de

balanceo no necesariamente serán los de mayores prestaciones (con

mayores recursos), con esto en mente se procederá a listar los

componentes primordiales para dicha elección. Primero los nodos que

actuarán como nodos de balanceo tendrán, como mínimo, que cubrir lo

siguiente mostrado en la tabla 5.2:

Procesador Pentium MMX a 166Mhz.

Memoria RAM de 64MB.

Unidad de Disco duro de 2GB.

Tarjeta de Red Ethernet.

Unidad de CDROM 8X (solo para instalación).

Tabla 5.2 Especificaciones del nodo de balanceo.

En lo concerniente a los nodos que funcionan como servidores web,

estos deberán contar con una mayor capacidad que los nodos de

balanceo pues son estos los que realizan el verdadero trabajo de

atención a usuarios. Los requisitos mínimos aquí pueden variar

dependiendo de la complejidad de los servicios web; un punto medio es

la siguiente lista de requisitos mostrada en la tabla 5.3:

Procesador Pentium II 233Mhz.

Memoria RAM de 128MB.

Unidad de Disco duro de 4GB.

Tarjeta de Red Fast Ethernet.

Unidad de CDROM 8X (solo para instalación).

Page 85: Balanceo de Carga en Centos

72

Tabla 5.3 Especificaciones de nodo servidor.

A continuación la tabla 5.4 indica las herramientas utilizadas para los

nodos de balanceo, nodos servidores y los nodos clientes.

Tipo de Nodo Herramientas Utilizadas

Cliente

Sistema Operativo (Windows, etc.)

Navegador Web.

Balanceo de

Carga

Sistema Operativo GNU/Linux CentOs 5.3.

Aplicaciones IPROUTE, IPTABLES, TCPDUMP

[Tcpdump].

Editor de textos VIM.

Servidor Real

Sistema Operativo GNU/Linux CentOs 5.3.

Aplicaciones IPROUTE, IP RULE e IPTABLES.

Editor de textos VIM.

Servidor de páginas web Apache2.

Tabla 5.4 Herramientas utilizadas en cada nodo.

Herramienta. Características. Características Principales.

Suite

Balanceo de carga.

Escalabilidad.

Bajo consumo de recursos.

Diversos esquemas de

configuración.

Balanceo de carga.

Alta disponibilidad.

Page 86: Balanceo de Carga en Centos

73

Ultramonkey Manejo de diversos protocolos

como HTTP, FTP, etc.

Escalabilidad.

Editor de textos

VIM.

Crear y editar archivos de texto.

Manejo de pestañas para múltiples

documentos.

Uso de números de línea.

Búsqueda de patrones dentro del

documento.

Ejecución de comandos sin salir

del editor.

Crear y editar archivos

de texto.

Uso de números de

línea.

Búsqueda de patrones

dentro del documento.

Servidor de

Páginas web

Apache2.

Soporte de lenguajes de

programación mediante módulos.

Soporte para HTTPS.

Soporte para SSL (Secure Socket

Layer) mediante módulo.

Permite crear host virtuales.

Amplia gama de configuraciones.

Soporte de módulos

para lenguajes y otras

aplicaciones.

Soporte de SSL.

Creación de host

virtuales.

Aplicación

IPROUTE.

Calidad de servicio.

Mantenimiento de varias tablas de

ruteo.

Balanceo de carga.

Definición de túneles.

Balanceo de carga.

Mantenimiento de varias

tablas de ruteo.

Aplicación

Permite interceptar y manejar

paquetes de red.

Permite el manejo de paquetes en

diferentes estados del

procesamiento.

Permite construir firewalls basados

en GNU/Linux.

Intercepción y manejo

de paquetes de red.

Construcción de

firewalls basados en

Page 87: Balanceo de Carga en Centos

74

IPTABLES. Realiza traducción de direcciones

(NAT).

GNU/Linux.

Traducción de

direcciones (NAT).

Aplicación

TCPDUMP.

Permite depurar aplicaciones que

utilizan la red para comunicar.

Permite depurar la red misma.

Permite capturar y leer datos

enviados por otros usuarios o

computadoras.

Permite capturar y leer

datos enviados por otros

usuarios o

computadoras.

Tabla 5.5 Características de herramientas utilizadas.

5.1.2 Instalación de los nodos

Antes de iniciar, es necesario revisar la tabla 5.4 donde se indican las

herramientas necesarias a instalar en cada nodo, la instalación se

llevará a cabo en dos partes, la primera comprende la instalación del

sistema operativo tanto en nodos de balanceo como en nodos servidores

y la segunda parte comprende la instalación del software para el

balanceo de carga.

En cuanto a la primer parte que comprende la instalación del sistema

operativo, se debe tomar en cuenta que se realiza con un entorno

gráfico, por tanto se procederá conforme a la tabla 5.6.

Proceso de instalación del Sistema Operativo.

Creación de máquina virtual en VMware

Selección de medio de instalación.

Proceso de instalación del sistema base.

Instalación de paquetes adicionales.

Tabla 5.6 Proceso de instalación del Sistema Operativo.

Page 88: Balanceo de Carga en Centos

75

El primer punto a cubrir nos brinda una variedad de medios de

instalación como pueden ser los listados en la tabla 5.7.

Medios de Instalación.

DVDROM básico para instalación mediante red.

DVD del juego de la distribución.

Juego completo de discos de la distribución.

Archivo ISO guardado en el disco de la máquina virtual

Tabla 5.7 Medios de instalación.

Es importante contar con una conexión a Internet para hacer las

actualizaciones pertinentes y facilitar la instalación de la herramienta de

balanceo de carga.

El segundo punto, la instalación del sistema base cuyo proceso se cubre

en la tabla 5.8 a continuación:

Aspecto. Descripción.

Zona Horaria.

Debe especificarse a qué zona horaria pertenece el

servidor seleccionando el país/estado/ciudad en

donde se ubica el servidor y esto ajustará el reloj del

sistema sin necesidad de saber la franja horaria.

Contraseña de

administrador y

usuario(s).

Simplemente se pedirán las contraseñas para la

cuenta de administrador y la(s) cuenta(s) de los

usuarios comunes que utilizarán el sistema.

Muestra las opciones de configuración automática

mediante el protocolo DHCP; de forma manual en la

Page 89: Balanceo de Carga en Centos

76

Configuración de la

red.

cual se proporcionan datos como la dirección IP y la

puerta de enlace y por último permite dejar de

momento sin configuración la interfaz de red.

Selección de

aplicaciones.

Aquí se marcarán aquellos servicios que sean

necesarios de los presentes en la lista mostrada, si

alguno no se encuentra en dicha lista, posteriormente

se podrá instalar. Algunos de estos servicios son

bases de datos y servidores web.

Tabla 5.8 Proceso de instalación del sistema base.

El resto del proceso de instalación y detalles relacionados se cubren en

el anexo 1 (Instalación del sistema operativo en maquinas virtuales). La

tabla 5.9 a continuación muestra los servicios que se deberán activar en

los nodos servidores.

Servidor de páginas web Apache.

Editor de textos VIM.

Aplicaciones IPROUTE e IPTABLES.

Tabla 5.9 Servicios activados en los nodos servidores.

5.1.3. Configuración de los servidores web

Los servidores reales deben ser configurados para ejecutar el servicio

web provisto por el clúster usando como aplicación para tal efecto un

software como Apache.

Cuando se trabaja con servidores web es altamente recomendable hacer

uso de direcciones IP estáticas y para ello se debe editar la

configuración del dispositivo de red; para mayor detalle debe consultarse

el Anexo 2, sobre el manejo de la interfaz de red.

Se deben configurar los servidores reales para que acepten peticiones

en la dirección IP virtual dado que estos no responden al cliente de

Page 90: Balanceo de Carga en Centos

77

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).

Las características que brinda esta configuración de balanceo de carga

(ver figura 5.2) en primera instancia son brindar un equilibrio de la carga

de trabajo en cuanto a las conexiones que puede atender cada servidor

real haciendo posible, dependiendo del algoritmo de balanceo, el asignar

más trabajo a un servidor con mayor capacidad que otro, repartir el total

de conexiones si todos los servidores son iguales en características para

no saturar ninguno y poder atender de manera eficiente al usuario final.

Después permite que al incorporarse nuevos nodos servidores con

mayores prestaciones estos sean quienes atiendan las peticiones con

mayores prioridades y consumo de recursos dejando al resto libre para

atender a otros usuarios finales. Las aplicaciones IPROUTE e

IPTABLES son necesarios de configurar, pues las configuraciones que

posee por defecto al instalarse no son suficientes.

En lo que respecta a la alta disponibilidad cabe señalar que esta se

brinda mediante la redundancia de nodos de balanceo pues es aquí

donde reside el balanceo de la carga ya que tales nodos son los

encargados de distribuir las conexiones. Esta alta disponibilidad requiere

que no solo exista la redundancia en los nodos de balanceo sino

también cierto grado en los servidores reales pues aunque con solo un

servidor real se puede todavía brindar el servicio, en realidad no existe

ningún balanceo de esta manera, siendo primordial la existencia de por

lo menos dos nodos para tal efecto.

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.

Page 91: Balanceo de Carga en Centos

78

Figura 5.2. Configuración final de nodos.

5.2. Instalación de CentOs

Para la instalación del sistema operativo utilizado (CentOs 5.3), es

necesario tener el dvd con la distribución respectiva, para el caso de

este proyecto se utilizó el archivo ISO de la distribución el mismo que se

lo tiene guardado en un directorio del equipo principal. Cabe señalar que

se utilizó en software de virtualización VMware Workstation en la versión

6.0.0. Este proceso se lo realizó para todos los servidores utilizados en

el proyecto.

El proceso de instalación del sistema operativo CentOs se encuentra

detallado en el Anexo 1 Instalación de CentOs.

5.3. Instalación de Ultramonkey

En cuanto a los medios de instalación de Ultramonkey, los podemos

encontrar en forma de paquetes de código fuente, paquetes pre-

Page 92: Balanceo de Carga en Centos

79

compilados que se pueden descargar desde la página web del proyecto

y también en el repositorio siguiente:

http://www.ultramonkey.org/download/3/

La manera más sencilla de llevar a cabo la instalación ejecutar como

superusuario el comando yum install para instalar la lista de paquetes

disponibles. Este método es el que se utilizará para su instalación.

Si no se cuenta con una conexión a Internet en el momento de instalar

los paquetes que se proveen, se puede optar por descargar en otro

equipo con acceso a Internet los paquetes que conforma la herramienta

desde la página del proyecto, en este caso se entraría a la sección de

descargas y se especifica que los paquetes a descargar son para la

distribución GNU/Linux Redhat (cabe señalar que CentOs es la versión

liberada de Redhat Enterprise, por esta razón su usan los paquetes

disponibles para Redhat).

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.

Como se puede apreciar, existen métodos de instalación para casi todas

las distribuciones o preferencias; la mejor forma es mediante los

repositorios, pero si se desea conservar un respaldo de dichos paquetes

se sugiere su descarga y posterior respaldo en medios como discos

compactos o en un servidor de respaldos.

5.3.1. Selección de topología de instalación de ultamonkey

Aquí se determina como instalar la solución de alta disponibilidad y

balanceo de carga que provee Ultramonkey de acuerdo a un esquema

determinado, posteriormente se detallará el proceso de instalación.

Como muestra la figura 5.2. “Configuración final de nodos”, la red está

compuesta por 3 computadoras unidas mediante un router. Las

direcciones IP 192.168.1.20 y 192.168.22.2 están asignadas al nodo

director del clúster y las direcciones IP 192.168.22.4 y 192.168.22.5 a los

Page 93: Balanceo de Carga en Centos

80

servidores reales. La VIP (dirección IP virtual) del clúster es

192.168.1.20.

Esta topología permite el máximo rendimiento (en cuanto a tasa de

transferencia) a través de la red, ya que el tráfico de retorno ya no tiene

que viajar a través de un nodo de balanceo.

5.3.1.1. Directores Linux o Nodos de balanceo

En cualquier momento uno de los nodos directores está activo, mientras

el otro está en una espera atenta. El nodo de balanceo activo acepta el

tráfico desde una IP virtual. Ésta es la IP que es anunciada a los

usuarios finales. La carga de conexiones es balanceada hacia uno de los

servidores reales usando LVS.

Los dos nodos de balanceo se monitorean el uno al otro usando

Heartbeat y en el evento de que el nodo de balanceo activo falle, el que

está en espera asume la dirección virtual y el servicio se mantiene. Las

conexiones son sincronizadas entre el nodo de balanceo activo y los que

están en espera, de tal forma que cuando una falla ocurre las

conexiones existentes pueden continuar.

Cuando un nodo de balanceo recibe una conexión desde un usuario

final, éste toma la decisión acerca de a cuál nodo servidor enviar la

conexión. Todos los paquetes del tiempo de vida de esta conexión son

enviados al mismo servidor real de tal forma que la integridad de la

conexión entre el usuario final y el servidor real se mantiene.

El director monitorea la salud o estado de los servidores reales, por

medio de consultas periódicas de una página conocida y verificando que

la respuesta contenga una cadena esperada. Si el servidor real falla,

entonces el servidor es sacado del pool (los servidores reales

seleccionables) de los servidores reales y se reinserta una vez que

vuelve a estar en línea.

Como el nodo de balanceo no es el router de entrada para los servidores

reales, el tráfico no tiene que viajar a través del nodo de balanceo en el

retorno si es que se usa “ruteo directo” o “tunneling”. Esto permite un

mayor rendimiento (tasa de transferencia) ya que el nodo de balanceo

no tiene que manejar los paquetes de retorno. Puede ser posible enviar

tráfico de retorno a través de diferentes routers y/o switch cuando la

conectividad externa lo permita.

Page 94: Balanceo de Carga en Centos

81

5.3.1.2. Nodos servidores o servidores reales

Los servidores reales pueden ejecutar una variedad de servicios

incluyendo el servidor web HTTP Apache. Más servidores reales pueden

ser añadidos a la red si se requiere capacidad extra dado que este

esquema permite escalabilidad.

5.4. Configuración de Heartbeat en los nodos de balanceo

Ultramonkey viene con paquetes adicionales. Estos paquetes sólo son

requeridos para los nodos de balanceo que van a ejecutar Heartbeat.

Pueden ser obtenidos usando el comando yum:

yum install ultramonkey

Otra alternativa para obtener los paquetes es desde el directorio de

descargas en la página: http://www.ultramonkey.org/download/3/

El proceso de instalación de toda la solución se encuentra documentado

en el Anexo 2 Instalación de la solución.

5.5. Configuración de la red de trabajo

Como muestra la figura 5.1, la red está compuesta por 4 computadoras

unidas mediante un switch. Las direcciones IP 192.168.1.20 y

192.168.22.2 están asignadas a al nodo director del clúster (nodo de

balanceo) y las direcciones IP 192.168.22.4 y 192.168.22.5 a los nodos

servidores A y B). La VIP del clúster LVS es 192.168.1.20.

Para editar la configuración de un dispositivo de red usamos las

herramientas administrativas para esto: system-config-network.

Después de los cambios en el archivo es necesario reiniciar los servicios

de red para que estos surtan efecto mediante el comando service

network restart.

Page 95: Balanceo de Carga en Centos

82

5.6. Configuración del clúster

5.6.1. Directores Linux, nodos de balanceo

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:

echo 1 > /proc/sys/net/ipv4/ip_forward

Para que los cambios tengan efecto se debe usar el comando sysctl:

sysctl –p

Configuramos el componente IPVS de ultramonkey para designar la

dirección IP virtual y los servidores reales, además indicamos que se lo

realizará mediante NAT y con el algoritmo round robin.

ipvsadm -A -t 192.168.1.20:80 -s rr

ipvsadm -a -t 192.168.1.20:80 -r 192.168.22.4:80 -m -w1

ipvsadm -a -t 192.168.1.20:80 -r 192.168.22.5:80 -m -w1

5.6.2. Heartbeat

Para configurar el Heartbeat, deben estar instalados los archivos

/etc/ha.d/ha.cf, /etc/ha.d/haresources y /etc/ha.d/authkeys.

Para visualizar el archivo /etc/ha.d/ha.cf se debe ejecutar el siguiente

comando:

vim /etc/ha.d/ha.cf

El monitoreo de los servidores reales y su inserción y eliminación del

conjunto de servidores disponibles es controlado por ldirectord, el cual

es ejecutado por Heartbeat. Para configurar ldirectord, el archivo

/etc/ha.d/ldirectord.cf debe estar instalado.

Page 96: Balanceo de Carga en Centos

83

vim /etc/ha.d/ldirectord.cf

Al recibir una petición de conexión desde un cliente, el nodo de balanceo

asigna un servidor real al cliente basado en un algoritmo. El tipo del

algoritmo se define en este archivo. Algunos de los algoritmos

disponibles son:

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).

Los algoritmos RR, WRR, LC y WLC deberían todos funcionar de forma

similar cuando el nodo de balanceo está dirigiendo servidores reales

idénticos con servicios idénticos. El algoritmo LC será mejor manejando

situaciones donde las máquinas son dadas de baja y activadas

nuevamente. Si los servidores reales están ofreciendo diferentes

servicios y algunos tienen usuarios conectados por un largo tiempo

mientras otros están conectados por un corto periodo, entonces ninguno

de los algoritmos va a hacer un buen trabajo distribuyendo la carga entre

los servidores reales.

Como el clúster a implementar posee servidores reales idénticos con

servicios idénticos, se optó por implementarlo con un algoritmo RR

(round robin).

5.7. Instalar y configurar IPROUTE en los nodos servidores

Finalmente debemos configurar los nodos servidores 1 y 2 para que

acepten peticiones de la IP 192.168.22.2. En los nodos 1 y 2

ejecutamos:

ip route add default via 192.168.22.2 table 1

ip rule add fwmark 80 table 1

Es necesario utilizar firewall iptables para marcar todo el tráfico http, y

luego la ruta es a través de una tabla de rutas alternativas.

iptables -t mangle -I PREROUTING -p tcp --dport 80 -j MARK --set-mark

80

Aceptar conexiones web en los servidores por el puerto 80 y la interface

de red eth1.

Page 97: Balanceo de Carga en Centos

84

iptables -A INPUT –i eth1 -p tcp --dport 80 -j ACCEPT

Guardamos la configuración de las reglas iptables.

service iptables save

Configuramos que el servicio de iptables en los nodos servidores este

corriendo y se active en el inicio:

chkconfig iptables on

Iniciamos el servicio iptables

service iptables start

Configuramos para que el servicio http en los nodos servidores este

corriendo y se active en el inicio, con el comando:

chkconfig httpd on

Iniciamos el servicio http

service httpd start

Asegurarse que los servidores reales (192.168.22.4 y 192.168.22.5)

reenvíen los paquetes a través del linux director (192.168.22.2), es decir,

los servidores reales deben tener como default gw a linux director.

Encontrar toda la documentación acerca de la instalación en el Anexo 2.

5.8. Pruebas de desempeño

Los servidores reales poseen una página web alojada en /var/www/html/

la misma que simplemente es informativa y nos indica que servidor es el

que está mostrando la página así (servidor 1, servidor 2). Ver figuras 5.3

y 5.4 respectivamente.

Page 98: Balanceo de Carga en Centos

85

El cliente realiza una petición al servidor director mediante la dirección IP

Virtual del mismo 192.168.1.20 (www.tesismg.com), el servidor director

realiza el balanceo y redirecciona la petición al servidor real disponible,

si realizamos nuevamente una petición veremos que ahora es el otro

servidor el que está mostrando su página.

Figura 5.3. Página del servidor 1

Page 99: Balanceo de Carga en Centos

86

Figura 5.4. Página del servidor 2

Simulamos una caída del servidor 1 deteniendo el servicio http asi:

service httpd stop

Figura 5.5. Detención del servicio httpd

Observamos que ahora el balanceador muestra solamente la página del

servidor 2 en todas las peticiones.

5.8.1. Herramientas para medición de rendimiento

5.8.1.1. Selección de una herramienta para medición de rendimiento

Existen varias herramientas para comprobar el correcto funcionamiento

del clúster entre todas estas se ha decidido utilizar ipvmsad, tcpdump,

tomando en cuenta que ipvsadm en el administrador de LVS

componente de ultramonkey usado en la implementación.

Page 100: Balanceo de Carga en Centos

87

Ipvsadm

Ipvsadm se utiliza para establecer, mantener o inspeccionar la tabla del

servidor virtual en el kernel de Linux. El Servidor Virtual Linux puede ser

utilizado para construir los servicios de red escalable basada en un conjunto

de dos o más nodos. El nodo activo del clúster redirecciona las peticiones

de servicio a un nodo del clúster, un servidor que va a entregar los

servicios. Entre sus características soportadas incluyen dos protocolos

(TCP y UDP), tres métodos de reenvío de paquetes (NAT, túneles, y el

encaminamiento directo), y ocho algoritmos de balanceo.

El comando tiene dos formatos básicos para la ejecución:

ipvsadm COMMAND [protocol] service-address

[scheduling-method] [persistence options]

ipvsadm command [protocol] service-address

server-address [packet-forwarding-method]

[weight options]

El primer formato manipula un servicio virtual y el algoritmo para la

asignación de las solicitudes de servicio a los servidores reales. De manera

opcional, un tiempo de espera persistentes y la máscara de red para la

granularidad de un servicio persistente puede ser especificado. El segundo

formato manipula un servidor real que está asociado con un servicio virtual

existente. Cuando se especifica un servidor real, el método de reenvío de

paquetes y el peso del servidor real, en comparación con otros servidores

reales para el servicio virtual, se puede especificar, de lo contrario se usará

por defecto.

Ejemplos:

Ipvsamd -l

Lista la tabla del servidor virtual, las conexiones activas e inactivas

existentes en el servidor.

Ipvsamd –lnc

Lista las conexiones entrantes, el estado de la conexión, el origen y el

destino de la conexión.

Page 101: Balanceo de Carga en Centos

88

Tcpdump

Tcpdump es una excelente herramienta que nos permite monitorear a

través de la consola de Linux todos los paquetes que atraviesen una

interfaz indicada. A su vez, los múltiples filtros, parámetros y opciones que

tcpdump nos ofrece, nos permite infinidades de combinaciones, al punto de

poder monitorear todo el tráfico completo que pase por la interfaz, como el

tráfico que ingrese de una ip, un host o una página específica, podemos

solicitar el tráfico de un puerto específico o pedirle a la herramienta que nos

muestre todos los paquetes cuyo destino sea una dirección MAC específica.

Ejemplos:

tcpdump –i eth0 port 80

Muestra todo el tráfico por la interface de red eth0 y el puerto 80.

De las pruebas obtenidas con estas herramientas podemos verificar el

estado de los servidores asi:

Figura 5.6. Verificación de servidores y conexiones con ipvsadm –l.

Page 102: Balanceo de Carga en Centos

89

Figura 5.7. Verificación de servidores y conexiones con ipvsadm –lnc.

Figura 5.8. Tráfico en la red con tcpdump.

Page 103: Balanceo de Carga en Centos

90

Figura 5.9. Salida de tráfico en la red con tcpdump.

Page 104: Balanceo de Carga en Centos

91

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).

Para las pruebas de funcionamiento se utilizó configuraciones generales del

clúster que incluye los nodos de balanceo, los algoritmos para balanceo de

carga, instalación y configuración del servidor de páginas web Apache, pruebas

simples para nodos de balanceo e instalación y configuración del paquete

iproute en los nodos servidores.

Sobre las pruebas realizadas, estas me ofrecen un panorama muy general,

puesto que la mayoría de ellas son bien controladas y se esperan ciertos

resultados, la mejor parte de las pruebas se pudo explorar esos aspectos no

previstos e investigar el comportamiento del clúster en dichos casos; en las

pruebas llevadas a cabo se contaba con un cliente con un sistema operativo

distinto al utilizado para la construcción del clúster (recuérdese que el cliente

solamente necesita un navegador web) el cual realiza las peticiones de la

página web principal alojada en el clúster, de esta manera se pudo observar

cual servidor real es el que atiende la petición (en un sistema en producción

esto no deberá ser así ya que la intención es que los usuarios vean al sitio web

como un solo equipo). La página web solicitada en las pruebas solamente

contiene una cadena indicando a que nodo servidor real pertenece. Es

importante aclarar que debido a las características de los nodos de balanceo

empleados, estos no pueden procesar miles de peticiones sin embargo las

pruebas realizadas demuestran que son suficientemente competentes para el

Page 105: Balanceo de Carga en Centos

92

manejo de un sitio de dimensiones bajas a medias como lo son las pequeñas

empresas.

En el transcurso de las pruebas se observó que existían problemas no

previstos en la elaboración del proyecto como la seguridad que debe

mantenerse en los servidores lo cual fue solventado denegando la aceptación

de paquetes y puertos por parte de los nodos servidores.

Al final del proyecto se concluye que la solución desarrollada es aplicable en

pequeñas empresas tomando en cuenta el correcto funcionamiento, la fácil

instalación y mantenimiento del sistema además que, por tratarse de open

source las empresas no incurre en gastos por licenciamiento.

Page 106: Balanceo de Carga en Centos

BIBLIOGRAFIA

2007, José Angel de Bustos Pérez, GNU/Linux, software libre para la

comunidad universitaria, 2007.

Septiembre 2001, Vicente José Aguilar Roselló, Clustering de Alta

Disponibilidad bajo GNU/Linux, septiembre 2001

2005, Rosa María Yánez Gómez, Introducción a las tecnologías de

clustering en GNU/Linux, 2005.

30 de diciembre de 2003, Emilio José Plaza Nieto, Cluster Heterogéneo

de computadoras, 30 de diciembre de 2003.

Edición junio 2010, Joel Barrios Dueñas, Implementación de Servidores

con GNU/Linux, 26 de junio 2010.

2007, Red Hat, Inc., Linux Clustering Building and Maintaining Linux

Clusters, 2007

2004, Federico Esteban Pereda, Mini-Howto Servidores de Alta

Disponibilidad (heartbeat + drbd), 2004.

Junio 30, 2007, Tom Adestein, Bill Lubanovic, Administración de

sistemas Linux, junio 30, 2007, Anaya Multimedia

2005, Charles Bookman, Clustering con Linux, 2005, Pearson Educación

2007, José Angel de Bustos Pérez, GNU/Linux, software libre para la

comunidad universitaria, 2007.

Septiembre 2001, Vicente José Aguilar Roselló, Clustering de Alta

Disponibilidad bajo GNU/Linux, septiembre 2001

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

Page 107: Balanceo de Carga en Centos

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