Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MIDDLEWARES
CONTENIDO
CONCEPTOS INICIALES........................................................................................................................2
RECONFIGURACIONES DE UN CLÚSTER DE ALTA DISPONIBILIDAD.......................................3
RECURSOS CON TOLERANCIA A FALLOS Y SU SOPORTE DE ALTA DISPONIBILIDAD EN
UN CLUSTER...........................................................................................................................................4
LINUX VIRTUAL SERVER.....................................................................................................................5
Configuraciones de LVS........................................................................................................................5
Algoritmos.............................................................................................................................................6
Interfaces para LVS...............................................................................................................................8
ARQUITECTURA DEL CLUSTER DE ALTA DISPONIBILIDAD (EJEMPLO) CON TOLERANCIA
A FALLOS MEDIANTE LVS...................................................................................................................9
KEEPALIVED EN MAQUINAS VIRTUALES (VIRTUALBOX)........................................................13
BIBLIOGRAFIA:....................................................................................................................................15
CONCEPTOS INICIALES
Son sistemas que saben que hacer cuando se presenta algun error para seguir dando
servicio. En el principio de la computación basada en cluster, la tolerancia a fallos era
proporcionada por los grandes fabricantes que mediante hardware muy caro y propietario
que garantizaban algunas situaciones de error (fallas eléctricas, fallas en algunos equipos
(cintas, discos), fallas en redes, etc).
Con el paso del tiempo y el empuje de la alta disponibilidad se fueron creando soluciones
mucho mas económicas y accesibles a la mayoría de las empresas.
ALTA DISPONIBILIDAD
La alta disponibilidad (HA, high availability) está basada en la duplicidad de elementos, que
resulta mucho más económico que un sólo elemento propietario tolerante a fallos . Si se
habla de replicar servidores, entonces nos referimos a un clúster de alta disponibilidad
En la actualidad el avance de los sistemas HA han incluido sin mucho problema
características de tolerancia a fallos, ya que va implícita en ella.
RECONFIGURACIONES DE UN CLÚSTER DE ALTA
DISPONIBILIDAD
Es la dinámica que seguirán los nodos de un clúster HA al responder a una falla
Failover
Es un término genérico que se usa cuando un nodo debe cubrir a otro nodo que ha fallado,
sin importar sus recursos y manteniendo el servicio activo. El failover es una situación
excepcional, para la cual se ha creado la alta disponibilidad. También se ha de entender que
el servicio de datos debe seguir levantado, que es el objetivo de la alta disponibilidad.
Takeover
Es un failover automático que se produce cuando un nodo de control nota un fallo en el
servicio. El takeover requiere monitorización en el servicio para detectar el fallo. El nodo que
se declara fallido es forzado a ceder el servicio y recursos, o simplemente eliminado.
Switchover o Giveaway
Es un failover manual, consiste en ceder los recursos de un servicio ( o el servicio mismo) a
otro nodo del clúster, mientras se realizan ciertas tareas administrativas. A este
procedimiento se le denomina “Node outage”.
Splitbrain
Para la administración de un clúster HA es necesario un mecanismo de comunicación y
verificación de los nodos que lo forman. Por este mecanismo, cada nodo debe administrar los
recursos que le corresponden, segun el estado del clúster. A su vez cada nodo debe hacer
chequeos o latidos (beats) a sus compañeros.
Los recursos que se pueden replicar son: Unidades de Procesamiento (CPU, Cores), equipos
de comunicaciones (red, NIC, switchs, router, etc) y almacenamiento (Cintas, DVD, disco
duro, RAID, almacenamiento en nube, etc).
El balanceo de la carga es una técnica que se utiliza para repartir el trabajo entre varios
procesos, ordenadores, discos u otros recursos. El balanceo de carga se puede hacer
mediante diferentes algoritmos.
LVS ademas permite balancear la carga entre varios servidores. LVS está integrado dentro
del kernel de Linux con lo cual se consigue un mejor rendimiento. Aunado a esto existe gran
cantidad de documentación en la red. LVS también es la opción más genérica, con LVS se
puede balancear tanto HTTP ,FTP ,MySQL o cualquier otro protocolo de red.
Configuraciones de LVS.
LVS nos permite diferentes configuraciones de red. Las configuraciones que disponemos
son:
• NAT: Con esta técnica se modifica el datagrama IP. En esta técnica hay un dispositivo
intermedio actuando como puerta de enlace. Este dispositivo recibe un paquete,
modifica el datagrama, y lo envía a uno de los servidores que tenga asignado para ese
servicio. El servidor procesa esa petición y se la envía a la puerta de enlace de nuevo.
La puerta de enlace vuelve a cambiar el datagrama y se lo envía al cliente. La
configuración de un servidor virtual mediante NAT es muy transparente, ya que no
requiere modificaciones ni configuraciones especiales en los sistemas operativos de
los servidores reales, lo cual facilita su implementación. Una de las principales
desventajas de esta técnica es que los servidores deben de encontrarse en la misma
red que el balanceador pero esto no es un gran impedimento.
La principal desventaja de esta técnica es el cuello de botella que puede causar el
tener que pasar todos los paquetes tanto de ida como de vuelta por la puerta de
enlace. En este caso el balanceador tiene que cambiar tanto la dirección IP como la
MAC de los paquetes de los clientes y de los servidores reales.
• Direct Routing(Enrutamiento directo): En este caso el balanceador de carga sigue
siendo el que recibe las peticiones pero son los servidores los que envían la
respuesta. El balanceador y los servidores deben de estar conectados por una LAN.
En esta técnica el principal inconveniente es el Protocolo de Resolución de
Direcciones (ARP), ya que todos los servidores reales tienen que saber que la ip
virtual es suya, pero si lo ponemos en una interfaz física con ARP, todos dirán que la
dirección virtual es la suya. Para arreglar esto hay dos métodos, unos es desactivar el
ARP de los servidores, por lo que ya solo el balanceador contestará y otra es
asignarle la dirección a la interfaz loopback, por lo que el servidor real sabrá que
pertenece a él pero no contestará a las peticiones arp ya que son en otra red. Para
que funcione bien, los servidores no deben responder a los mensajes ARP. En este
caso el balanceador de carga solo tiene que cambiar la dirección MAC para
direccionar las peticiones al servidor real.
• IP Tunneling(Encapsulación IP): En el IP Tunneling, los servidores no tienen que estar
conectados directamente a una red donde se encuentre el balanceador. En este caso
el balanceador recibe el datagrama del cliente con destino el servicio virtual. El
datagrama lo reenvía con dirección Ip del cliente como origen y dirección IP del
servicio virtual como destino, este datagrama va metido dentro de otro datagrama con
dirección Ip del balanceador como origen y dirección Ip del servidor como destino. El
paquete pueden ser enviados por dispositivos intermedios como routers.
Algoritmos.
Estas configuraciones de red pueden utilizar diferentes algoritmos para balancear las cargas.
Los algoritmos que podemos utilizar son:
Round-Robin (rr):
La clásica cola Round Robin o FIFO: 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.
Es la solución más sencilla y que menos recursos consume, a pesar de que no es la más
justa, es posible que toda la carga “pesada” vaya a parar al mismo servidor mientras que el
resto sólo reciban peticiones triviales.
Un problema de este método es que todos los servidores recibirán el mismo número de
peticiones, independientemente de si su potencia de cálculo es la misma o no.
Least-Connection (lc):
Este mecanismo de distribución consulta a los servidores para ver en cada momento cuántas
conexiones abiertas tiene cada uno con los clientes, y envía cada petición al servidor que
menos conexiones tenga en ese momento. Es una forma de distribuir las peticiones hacia los
servidores con menos carga.
A pesar de que sobre el papel parece que este método si que será capaz de repartir la carga
sobre todos los servidores de una forma equitativa. En la práctica falla cuando la potencia de
los servidores no es la misma: si todos tienen más o menos las mismas características, este
algoritmo funciona como se espera, si hay diferencias en las prestaciones de los equipos, lo
que ocurre en la práctica es que debido a la espera en TIME_WAIT de las conexiones
perdidas (alrededor de 2 minutos por lo general), los servidores rápidos tendrán en un
momento dado una gran cantidad de conexiones activas siendo atendidas, y otra cantidad
también grande de conexiones realmente inactivas, pero aún abiertas en TIME_WAIT,
mientras que los servidores lentos tendrán muchas menos conexiones tanto activas como en
TIME_WAIT, de forma que se enviará más carga a los servidores lentos.
Source-Hashing/Destination-Hashing (sh/dh):
En estos dos últimos métodos se dispone de una tabla de asignaciones fijas, en las que bien
por la IP de origen o de destino, se indica qué servidor deberá atender la petición.
El balanceador compara las direcciones de los paquetes TCP/IP que reciba con estas tablas
y actúa en consecuencia.
UltraMonkey
Es una solución que se basa en LVS y Heartbeat para ofrecer clústers de alta disponibilidad y
balanceo de carga. El nodo máster LVS se pone en alta disponibilidad. Además incorpora
una interfaz para configurar el clúster.
Pirahna
Es el nombre que Red Hat ha dado a su solución basada en LVS, el añadido es una interfaz
para configurarlo.
Kimberlite
Es considerado un proyecto único ya que es una completa infraestructura de alta
disponibilidad de código abierto que incluye incluso garantía sobre la integridad de los datos.
Es una solución que soporta un clúster de 2 nodos. Permite fácilmente, definir un dispositivo
de quórum, monitorizar los servicios de datos, así como gestionarlo.
ARQUITECTURA DEL CLUSTER DE ALTA
DISPONIBILIDAD (EJEMPLO) CON TOLERANCIA A
FALLOS MEDIANTE LVS
A
Instalar dos maquinas con servidor web Apache
Poner en cada una una pagina diferente
Configurar IP y GW como se indica en el diagrama
Instalar y configurar LVS con keepalived en dos maquinas que funcionaran como routers:
$sudo apt-get update
$sudo apt-get upgrade
$sudo apt-get install keepalived
$sudo nano /etc/keepalived/keepalived.conf (ver la siguiente pagina para conf. de c/u)
Configurar en cada maquina las ips reales que se indican en el diagrama
• Para que Keepalived sea capaz de rastrear las conexiones entre los servidores y
volver a asignar las direcciones IP flotantes entre los routers según sea necesario,se
necesita hacer los siguientes ajustes al nf_conntrack (que rastrea las conexiones entre
servidores)
$modprobe nf_conntrack //Verifica modulo
$nano /etc/sysctl.conf
Ajustes al final del archivo:
net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
net.nf_conntrack_max = 1000000
$sudo sysctl -p
• Iniciar keepalived
$sudo systemctl start keepalived
• Detener keepalived
$sudo systemctl stop keepalived
Lo siguiente es añadir a nuestro archivo hosts nuestra ip con : $ sudo gedit /etc/hosts
Y le agregamos lo siguiente:
127.0.1.1 router1VBox
192.168.1.101 vmtest01.router1VBox vmtest01
Recordar que en la configuración de la máquina virtual, el adaptador de red tiene que estar
en “Adaptador Puente”.
BIBLIOGRAFIA:
Manual sobre “Alta disponibilidad para Linux” de Juan Pedro Paredes en
https://www.google.com.mx/url?
sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjUy8bx-
obTAhVO42MKHZ8oDcYQFggcMAA&url=http%3A%2F%2Fwww.othlo.com%2Fhtecnologia
%2Fdocumentacion
%2Fhispalinux04%2F11disponibilidad.pdf&usg=AFQjCNHMZSLjknZvPAFmzUptiOfc2FX12w
&sig2=4uIeWRjflEhXnoTioFH7oQ
Comentarios: Da buena teoria sobre sistemas tolerantes a fallos con redundancia y sistemas
alta disponibilidad, sin embargo es algo viejo el documento.
Manual “Cluster Web en Alta Disponibilidad con LVS” de Juan Luis Sanchez Crespo. En
http://informatica.gonzalonazareno.org/proyectos/2011-12/jlsc.pdf
Comentarios: Manual detallado sobre la instalacion del web server HA pero ademas incluye
los demas recursos necesarios para publicar web mas profesionalmente.