Beruflich Dokumente
Kultur Dokumente
TABLA DE CONTENIDOS
1 Introducción ........................................................................................................................................ 3
1.1 Acerca de este documento .......................................................................................................... 3
1.2 Registro de versiones .................................................................................................................. 3
2 Descripción General............................................................................................................................ 4
2.1 Visión general de la adición de equilibrador de carga ................................................................ 4
2.2 Configuración básica de la adición de equilibrador de carga ..................................................... 4
3 Arquitectura de lvs .............................................................................................................................. 6
3.1 Terminologia ............................................................................................................................... 6
4 instalacion de rhel ............................................................................................................................... 8
4.1 Instalacion de rhel ....................................................................................................................... 8
Configuraciones importantes de lvs ...................................................................................................... 10
NTP ................................................................................................................................................... 10
Configuracion de Network ................................................................................................................ 10
Referencia : https://access.redhat.com/documentation/en-
US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-networkscripts-interfaces.html ..... 10
Instalacion de lvs................................................................................................................................... 11
5 Configuracion de lvs ......................................................................................................................... 13
Configuración de Directores ................................................................................................................. 13
Script : ................................................................................................................................................... 13
Configuracion de piranha ...................................................................................................................... 14
Configuración de real server ................................................................................................................. 15
Ejemplo de automatizacion ................................................................................................................... 15
Definiciones de lvs .....................................................................................Error! Bookmark not defined.
1 INTRODUCCIÓN
El objetivo de este documento es entregar la información necesaria para poder hacer despliegues de LVS de forma simple y
automatizada .
Copyright 2014© Red Hat, Inc. Todos los derechos reservados. Ninguna parte de la obra amparada por el derecho de autor
en este documento puede ser reproducida o utilizada de ninguna forma ni por ningún medio-gráfico, electrónico o mecánico,
incluyendo el fotocopiado, grabación o sistemas de almacenamiento y recuperación de información, sin permiso por escrito de
Red Hat con excepción de lo que se requiere para compartir esta información según lo previsto con las partes confidenciales
antes mencionados.
Este documento tiene por objetivo entregar un reporte ejecutivo del uso de LVS
2 DESCRIPCIÓN GENERAL
La adición de equilibrador de carga es un conjunto de componentes de software que proporcionan Servidores virtuales de Linux (LVS) para
balancear la carga IP a través de un set de servidores reales. La adición de equilibrador de cargas se ejecuta en un par de computadores
configurados similarmente:
Uno de ellos es un enrutador LVS activo y el otro es un enrutador LVS de respaldo. El enrutador LVS activo tiene dos roles:
Las solicitudes de servicios que llegan al enrutador LVS son dirigidas a una IP virtual o VIP. Esta es una dirección de ruta pública que el
administrador del sitio asocia con un nombre de dominio completamente calificado, como www.ejemplo.com, y asigna uno o más servidores
virtuales. Un servidor virtual es un servicio configurado para escuchar en una IP virtual específica.
VIRTUALES” para obtener mayor información sobre cómo configurar un servidor virtual con la Piranha
Configuration Tool. Una dirección VIP migra de un enrutador LVS a otro durante un proceso de recuperación contra fallos, de esta forma se
mantiene una presencia en la dirección IP (también conocida como dirección IP flotante).
Las direcciones VIP pueden tener sobrenombres que se dirijan al mismo dispositivo que conecta al enrutador LVS con la red pública. Por
ejemplo, si eth0 está conectado a Internet, puede haber varios servidores virtuales con sobrenombres a eth0:1. Alternativamente, cada servidor
virtual puede estar asociado con un dispositivo separado por cada servicio. Por ejemplo, el tráfico HTTP puede ser manejado en eth0:1 y el
tráfico FTP puede ser manejado en eth0:2.
Solamente un enrutador LVS está activo a la vez. El rol del enrutador activo es el de redirigir las solicitudes de la dirección IP virtual a los
servidores reales. La redirección está basada en uno de ocho algoritmos que estan detalladas en la documentacion oficial de RedHat.
El enrutador LVS activo, sondea dinámicamente la salud de los servicios especificados en los servidores reales a través de un script de envío
y espera. Para ayudar en la detección de servicios que requieren datos dinámicos, tal como HTTPS o SSL, se puede incluso llamar a programas
ejecutables externos. Si un servicio en un servidor real no funciona adecuadamente, el enrutador LVS activo no envía solicitudes a ese
servidor hasta que retorne a la operación normal.
El enrutador de respaldo ejecuta el rol de sistema en espera. Periódicamente, los enrutadores LVS intercambian mensajes a través de la
interfaz pública externa primaria y, en caso de fallos, a través de la interfaz privada. Si el enrutador LVS de respaldo no recibe un mensaje
dentro de un intervalo de tiempo esperado, éste inicia un proceso de recuperación contra fallos y asume el rol de enrutador
3 ARQUITECTURA DE LVS
En este apartado se detalla la arquitectura planteada para LVS , el que esta compuesto por dos maquinas directores, los que se
encargan de hacer el trabajo de balanceo entre los servidores Reales.
3.1 Terminologia
Termino Descripción
RHEL Red Hat Enterprise Linux
LVS Servidores virtuales de Linux
SATELLITE Servicio de repositorios centralizados
IdM IPA Identity Managment - Identity, Policy, Audit
MS ACTIVE DIRECTORY (AD) Servicio de directorio en una red distribuida de computadores
SUDOERS Usuarios que tienen permisos de administración total y limitados del sistema
4 INSTALACION DE RHEL
Instalacion de rhel
Instalacion base de rhel se puede hacer por kickstart usando el siguiente :
# Date Created : 19:15:50.0
install
text
network --bootproto=static --device=eth0 --gateway=10.0.25.1 --ip=10.1.12.12 --nameserver=10.0.25.165 --
netmask=255.255.255.0
cdrom
lang en_US.UTF-8
keyboard la-latin1
timezone America/Santiago
auth --enablemd5 --enableshadow
rootpw redhat
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto"
# Disk partitioning information
clearpart --drives=sda,sdb,sdc --initlabel
# Create primary partitions
part /boot --fstype "ext4" --size=512 --asprimary
part pv.01 --size=1 --grow
reboot
%packages
@ Base
kexec-tools
postfix
logwatch
audit
%end
%post --interpreter=/bin/bash
MEDIO=192.168.1.X
HOST=cliente.example.com
# ----- Config YUM ----- #
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://$MEDIO/rhel-server-6.3/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
EOF
# ----- FIN Config YUM ----- #
# Detalles
chkconfig kdump on
#----- FIN Config KDUMP ----- #
NTP
Es relevante tomar en comsideracion que las configuraciones de hora es relevantesya que sin esto la conexión tcp no funciona de forma
correcta .
Para esto es necesario tener el NTP configurado en RHEL.
Referencia: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sect-
Date_and_Time_Configuration-Command_Line_Configuration-Network_Time_Protocol.html
Configuracion de Network
Es importante que las configuraciones de red esten configuradas sin el control de Network Manager, ya que este puede interferir en el
correcto funcionamiento del sistema que se encuentre en produccion.
Referencia : https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s1-networkscripts-
interfaces.html
Repositorio de sistema
Para poder obtener los paquetes de rhel necesarios para la instalacion es lvs es necesario tener el repositorio de HA en nuestro rhel .
Referencia: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-
Configuring_Yum_and_Yum_Repositories.html
Ejemplo:
cat <<EOF > /etc/yum.repos.d/ha.repo
[Base]
name=RHEL -
failovermethod=priority
baseurl=http://instructor.example.com/rhel/repo/
enabled=1
gpgcheck=0
[HighAvailability]
name=RHEL -
failovermethod=priority
baseurl=http://instructor.example.com/rhel/repo/HighAvailability/
enabled=1
gpgcheck=0
[LoadBalancer]
name=RHEL -
failovermethod=priority
baseurl=http://instructor.example.com/rhel/repo/LoadBalancer/
enabled=1
gpgcheck=0
[ResilientStorage]
name=RHEL -
failovermethod=priority
baseurl=http://instructor.example.com/rhel/repo/ResilientStorage/
enabled=1
gpgcheck=0
[ScalableFileSystem]
name=RHEL -
failovermethod=priority
baseurl=http://instructor.example.com/rhel/repo/ScalableFileSystem/
enabled=1
gpgcheck=0
EOF
Instalacion de lvs
Una ves que tenemos los repositorios listos podemos hacer la instalacion de los paquetes de LVS en ambos servidores directores
Ejemplo :
5 CONFIGURACION DE LVS
Configuración de Directores
En este apartado detallamos la configuración de lvs a traves de un script, el cual se encarga de hacer la configuracion inicial
del servicio de forma automatizada .
Script :
#------------------CAMBIOS EN DIRECTORES------------------
# CREACION DE CONFIGURACION LVS, EN AMBOS DIRECTORES
DIRECTOR_PRIMARIO=10.0.25.229
DIRECTOR_SECUNDARIO=10.0.25.230
IP_REAL1=10.0.25.223
IP_REAL2=10.0.25.224
VIP=10.0.25.235
VIP_BROADCAST=10.0.25.255
VIP_MASK=255.255.255.128
Configuration de iptables
#Configuracion iptables
cat <<EOF> /etc/sysconfig/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
#lvs http service
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
#directores
-A INPUT -s $DIRECTOR_PRIMARIO -j ACCEPT
-A INPUT -s $DIRECTOR_SECUNDARIO -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOF
Replicacion de iptables
#replicacion iptables
scp /etc/sysconfig/iptables $DIRECTOR_SECUNDARIO:/etc/sysconfig/iptables
chkconfig pulse on
chkconfig piranha-gui on # SÓLO EN UNO DE LOS DIRECTORES, y sólo si se usará a futuro
chkconfig httpd on
chkconfig ipvsadm on
chkconfig iptables on
Configuracion de piranha
# CONFIGURACION DE PIRANHA-GUI (sólo en 1 director)
http://localhost:3636
user=piranha
pass=redhat
En cada server que se define como real, debemos incluir la correspondiente sentencia en /etc/rc.local para asegurarnos que en cada reunicio
del servidor el balanceo funcione, tal como lo incica la documentacion oficial de RedHat, ejemplo de cómo podriamos hacer esta sentencia:
Una vez creado el alias y configurado en el rc.local, instalaremos y configuraremos arptables en cada los servers:
NOTA: En la documentación oficial de Red Hat, las reglas arptables están definidas de forma ligeramente diferente:
Una vez configurado, ejecutaremos las dos siguientes sentencias en cada Real Server para guardarlo y asegurarnos de ejecutarlo al inicio
#variables
IP_REAL1=10.0.25.223
IP_REAL2=10.0.25.224
VIP=10.0.25.235
VIP_BROADCAST=10.0.25.255
VIP_MASK=255.255.255.128
#real server 1
#real server 2
service arptables_jf start
arptables -A IN -d $VIP -j DROP
arptables -A OUT -d $VIP -j mangle --mangle-ip-s $IP_REAL2
service arptables_jf save
chkconfig arptables_jf on
service arptables_jf restart
[root@lnxqbal2 ~]#
DEFINICIONES DE LVS
Tipos de algorismos de balanceo de carga:
Algoritmos de programación
La estructura que la tabla IPVS adquiere depende del algoritmo de programación que el administrador elige para cualquier
servidor virtual determinado. Para permitir mayor flexibilidad en los tipos de servicios que se pueden agrupar en cluster y
para controlar la manera como se programan estos servicios, Red Hat Enterprise Linux proporciona los siguientes algoritmos
de programación. Para
obtener instrucciones sobre cómo asignar algoritmos de programación.
Programación Round-Robin
Distribuye cada solicitud secuencialmente a lo largo del grupo de servidores reales. Con este algoritmo, todos los servidores
reales son tratados como iguales sin importar la capacidad o
carga. Este modelo de programación se asemeja a DNS de Round-Robin, pero es más detallado porque se basa en las
conexiones de red y no en el host. La programación de roundrobin de la adición de equilibrador de carga tampoco sufre
desbalances causados por el proceso de cache de las solicitudes de DNS.
Conexión mínima
Distribuye más solicitudes a los servidores reales con menos conexiones activas.
Visión general de la adición de equilibrador de carga 13 rastrea las conexiones vivas a los servidores reales a través de la
tabla IPVS, la conexión mínima es un tipo de algoritmo de programación dinámica, siendo una mejor opción si hay un alto
grado de variaciones en la carga de solicitudes. Es adecuado para grupos de servidores
reales en donde cada nodo miembro tiene la misma capacidad. Si un grupo de servidores tiene capacidades diferentes, la
programación de conexión mínima ponderada es una mejor opción.
Distribuye más solicitudes a los servidores con menos conexiones activas en relación con sus capacidades. La capacidad es
indicada por el usuario y es ajustada por la información de carga dinámica. La adición del parámetro de capacidad hace que
este algoritmo sea ideal cuando la
infraestructura tiene servidores reales con capacidades de hardware variado. Consulte la Sección 1.3.2, “Peso del servidor y
programación” para obtener mayor información sobre servidores reales.
Distribuye más solicitudes a los servidores con menos conexiones activas en relación con sus IP de destino. Este algoritmo se
utiliza en cluster de servidores de cache proxy. Envía el paquete para una dirección IP al servidor con esa dirección a menos
que ese servidor esté por encima de su capacidad y tenga un servidor a media carga, en dicho caso se asigna la dirección IP al
servidor real con menos carga.
Programación mínima basada en localidad con programación de réplica Distribuye más solicitudes a los servidores con
menos conexiones activas de acuerdo al IP de
destino. Este algoritmo es usado en servidores de cache de proxy. Se diferencia de la programación "Conexión mínima
basada en localidad" al relacionar la dirección IP objetivo con un grupo de servidores reales. Las solicitudes son luego
enviadas al servidor en el grupo con menos número de conexiones. Si la capacidad de todos los nodos para el IP de destino
está sobre el límite, este método añade un nuevo servidor real del grupo general al grupo de servidores para el IP de destino.
El nodo con mayor carga es desplazado fuera del grupo para evitar un exceso de replicación.