-
Hello, IT.Acerca de
You are here: Inicio Sistemas
Balanceador de carga con LVS y Piranha24 diciembre 2012 at 15:38
by Adrin Prez
En este artculo veremos cmo configurar unbalanceador de carga
con LVS y Piranha, en un servidor CentOS, con un nico router LVS.
Hay muchos artculos por Internet que explicancmo hacerlo con 2
routers, para conseguir as tener alta disponibilidad en el
balanceador, pero no siempre se disponen de dos mquinaspara
conseguir la alta disponibilidad. Como aadido, el servicio a
balancear ser MySQL, no Apache como suele ser habitual.Para el
test, los sevidores tienen las siguientes caractersticas, adems de
selinux deshabilitado e iptables configurado:Hostname: balancerIP:
(eth0) 192.168.2.228. Default gw: 192.168.2.1Hostname: mysql1IP:
(eth0) 192.168.2.241. Default gw: 192.168.2.1Hostname: mysql2IP:
(eth1) 192.168.2.242. Default gw: 192.168.2.11- BALANCEADOR-
Instalacin
$ yum install ipvsadm$ yum install piranha
2- BALANCEADOR- Inicio de servicios$ vi /etc/hosts ->
Confirmar que el hostname est en el fichero de hosts$ service
piranha-gui start$ chkconfig piranha-gui on$ chkconfig pulse on
3- BALANCEADOR- Configuracin
http://helloit.es/2012/12/balanceador-de-carga-coGo
MailAccount
http://www.proxy-service.de/proxy-service.php?u=http...
1 de 8 22/06/15 12:44
-
$ piranha-passwd -> Introducir el password que servir para
acceder a la web Piranha$ vi /etc/sysctl.conf -> Poner a "1" el
parmetro "net.ipv4.ip_forward = 1"$ sysctl -p -> Para activar la
conf del ip forward
4- CLIENTE - Acceso web y configuracinDesde un PC cliente,
accederemos a la interfaz web de Piranha (ser importante restringir
el acceso a esta web, nicamente a nuestrasdirecciones
IP)http://192.168.2.228:3636/user: piranhapass: el indicado en el
punto 3A continuacin, nos moveremos por la web de configuracin de
piranha, modificando convenientemente los valores siguientes:
Pestaa "Global Settings"Primary server public IP: La IP del
pblica del servidor (192.168.2.228 en el ejemplo)Use network type:
Direct. Este punto es crucial, y cambiar toda la configuracin y la
forma de trabajar de la solucin final.Direct Routing proporciona
mayor rendimiento que el resto de configuraciones, permitindo a los
Real Servers devolver lasrespuestas directamente a los clientes,
sin pasar por el router LVS. Por esta razn, al usar Direct Routing,
los Real Serversno han de configurar su red para usar el router LVS
como default gateway (cosa que s se debera hacer al configurar
estepunto como NAT, que no es nuestor caso).
Pestaa "Redundancy".En esta pestaa podramos configurar la alta
disponibilidad del balanceador de carga. En este ejemplo, como se
hacomentado, no la configuraremos.
Pestaa "Virtual Servers":En esta seccin, se configurar un
virtual server con una nueva IP para referirnos al conjunto de
nodos tras el balanceador.En el ejemplo, usaremos la direccin
192.168.2.240, que estaba sin asignar. Por defecto, nos Piranha nos
marcar el Deviceeth0:1, lo cual, efectivamente, nos crear de forma
automtica un alias para nuestra interfaz de red, con la IP que
leindicamos.
NOTA: Pulsa en la imgen para verla a tamao
completo.Posteriormente se configurar una entrada "Real Server" por
cada uno de los servidores tras el balanceador. nicamentebastar con
indicar la IP del servidor y el servicio que estamos balanceando.
En nuestro ejemplo aadiremos 2 RealServers.
http://www.proxy-service.de/proxy-service.php?u=http...
2 de 8 22/06/15 12:44
-
Una vez aadido el servidor virtual, y los servidores reales,
deberemos activarlos. Esta parte no es demasiado intuitiva,pero es
necesaria. Para activar los Real Servers, deberemos ir a la pestaa
principal "Virtual Servers" > Nos Aparecer elservidor virtual
que hemos creado > Pulsaremos "Edit" > Seleccionaremos la
nueva pestaa "Real Servers". Aquaparecern nuestros real servers.
Deberemos marcar uno y pinchar en "(de)activate". Veremos como el
servidor cambia suestado a "UP". Marcaremos el resto de servidores
uno a uno, activndolos (en el ejemplo slo tenemos 2).
NOTA: Pulsa en la imgen para verla a tamao completo.Finalmente,
habilitaremos el virtual server, desde la pestaa principal "Virtual
Servers" > Nos Aparecer el servidor virtualque hemos creado >
nos aseguraremos de tenerlo marcado y pulsaremos en
"(de)activate".
NOTA: Pulsa en la imgen para verla a tamao completo.5-
Monitorizacin de MySQLComo se querr balancear un MySQL, ser
necesario que el balanceador pueda comprobar la disponibilidad del
servicio MySQL en los RealServers. Para ello, deberemos hacer algo
de trabajo adicional. ste apartado est sacado de aqu.BalanceadorEn
el balanceador, instalaremos el cliente de mysql para poder
conectarnos con los Real Servers:
yum install mysqlA continuacin, crearemos un script de
monitorizacin, que conectar con los Real Servers. Podremos dejar
este script en /root, para queotros usuarios del sistema no puedan
leerlo:
vi
/root/mysql_mon.sh#!/bin/shUSER=monitorPASS=MiPass123####################################################################CMD=/usr/bin/mysqladminIS_ALIVE=`$CMD
-h $1 -u $USER -p$PASS ping | grep -c "alive"`if [ "$IS_ALIVE" =
"1" ]; thenecho "UP"elseecho "DOWN"fichmod 755
/root/mysql_mon.sh
ClienteUna vez configurado el script de monitorizacin,
volveremos a loguearnos desde un cliente, a la interfaz web de
administracin dePiranha, e iremos a la pestaa principal "Virtual
Servers" > Nos Aparecer el servidor virtual que hemos creado
> Pulsaremos "Edit" >Seleccionaremos la nueva pestaa
"Monitoring Scripts". Aqu modificaremos la configuracin para usar
el nuevo script:
Sending program: "/root/mysql_mon.sh %h" (no hace falta poner
las comillas)Send: Expect: "UP" (no hace falta poner las
comillas)Treat expect string as a regular expression: marcado
http://www.proxy-service.de/proxy-service.php?u=http...
3 de 8 22/06/15 12:44
-
Pulsaremos "Accept". Tras pulsarlo, veremos la configuracin que
hemos salvado:
NOTA: Pulsa en la imgen para verla a tamao completo.Real
ServersEn el script de monitorizacin, se ha definido un usuario y
password que se usar para conectar contra el MySQL de los Real
Servers, ycomprobar as la salud del servicio. Se deber, pues, en
cada Real Server, crear este usuario. Para ello, en cada Real
Server, se dar de altaun usuario MySQL:
mysql> GRANT USAGE ON *.* TO monitor@'%' IDENTIFIED BY
'MiPass123';mysql> flush privileges;
6- BALANCEADOR- Inicio de serviciosUna vez realizada la
configuracin a travs de la interficie web de Piranha, pasaremos a
iniciar los servicios:
$ service pulse restartTras ello, se podr verificar el estado
del balanceador con:
[root@balancer log]# ipvsadmIP Virtual Server version 1.2.1
(size=4096)Prot LocalAddress:Port Scheduler Flags->
RemoteAddress:Port Forward Weight ActiveConn InActConnTCP
192.168.2.240:mysql lc-> 192.168.2.242:mysql Route 1 0 0->
192.168.2.241:mysql Route 1 0 0
7- REAL SERVERS - RedEn cada uno de los nodos que irn tras el
balanceador (los 2 servidores reales en el ejemplo) deberemos crear
un alias en la tarjeta de red,con la IP virtual que hemos indicado
para el virtual server:
mysql1$ ip addr add 192.168.2.240 dev eth0:1mysql2$ ip addr add
192.168.2.240 dev eth1:1
En cada server, adems, deberemos incluir la correspondiente
sentencia en el /etc/rc.local para asegurarnos de crear el alias
tras cadareinicio del servidor. Si lo hubieramos preferido, tal y
como indica la documentacin oficial de Red Hat, tambin podramos
haber usadoifconfig para crear los alias (NOTA: sto no ser
necesario, si ya hemos ejecutado las anteriores instrucciones con
"ip addr"):
mysql1$ ifconfig eth0:1 192.168.2.240 netmask 255.255.252.0
broadcast 192.168.2.255 upmysql2$ ifconfig eth1:1 192.168.2.240
netmask 255.255.252.0 broadcast 192.168.2.255 up
Una vez creado el alias y configurado en el rc.local,
instalaremos y configuraremos arptables en cada uno de los real
servers:mysql1$ yum install arptables_jfmysql1$ arptables -A IN -d
192.168.2.240 -j DROPmysql1$ arptables -A IN -d 192.168.2.240 -j
mangle --mangle-ip-s 192.168.2.241mysql2$ yum install
arptables_jfmysql2$ arptables -A IN -d 192.168.2.240 -j DROPmysql2$
arptables -A IN -d 192.168.2.240 -j mangle --mangle-ip-s
192.168.2.242
NOTA: En la documentacin oficial de Red Hat, las reglas
arptables estn definidas de forma ligeramente diferente:arptables
-A IN -d -j DROParptables -A OUT -s -j mangle --mangle-ip-s
Una vez configurado, ejecutaremos las dos siguientes sentencias
en cada Real Server para guardarlo y asegurarnos de ejecutarlo al
inicio:service arptables_jf savechkconfig --level 2345 arptables_jf
on
8- ComprobacionesPara comprobar el alias de la tarjeta de red,
con la ip virtual, creada con "ip addr" tanto en los real servers
como en el router LVS, se podr
http://www.proxy-service.de/proxy-service.php?u=http...
4 de 8 22/06/15 12:44
-
ejecutar el comando siguiente (cualquiera de los servidores dar
una respuesta similar). Si se ha creado el alias con ifconfig, se
deberejecutar "ifconfig" para realizar la comprobacin:
[root@balancer ~]# ip addr1: lo: mtu 16436 qdisc
noqueuelink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet
127.0.0.1/8 scope host lo2: eth0: mtu 1500 qdisc pfifo_fast qlen
1000link/ether 00:15:b7:f5:07:55 brd ff:ff:ff:ff:ff:ffinet
192.168.2.228/24 brd 192.168.2.255 scope global eth0inet
192.168.2.240/24 brd 192.168.2.255 scope global secondary eth0:13:
wlan0: mtu 1500 qdisc noop qlen 1000link/ether 00:18:de:ce:e8:31
brd ff:ff:ff:ff:ff:ff
En los Real Servers, se podr ver la tabla de arptables_jf, con
el siguiente comando:[root@mysql1 ~]# /etc/init.d/arptables_jf
statusTabla: filterChain IN (policy ACCEPT)target source-ip
destination-ip source-hw destination-hw hlen op hrd proDROP
anywhere 192.168.2.240 anywhere anywhere any any any anymangle
anywhere 192.168.2.240 anywhere anywhere any any any any
--mangle-ip-s 192.168.2.241Chain OUT (policy ACCEPT)target
source-ip destination-ip source-hw destination-hw hlen op hrd
proChain FORWARD (policy ACCEPT)target source-ip destination-ip
source-hw destination-hw hlen op hrd pro
Unos segundos tras configurar todo el sistema, pero antes de
haber iniciado ninguna conexin contra el balanceador para
testearlo, elbalanceador devolver una tabla de conexiones como la
siguiente:
[root@balancer log]# ipvsadmIP Virtual Server version 1.2.1
(size=4096)Prot LocalAddress:Port Scheduler Flags->
RemoteAddress:Port Forward Weight ActiveConn InActConnTCP
192.168.2.240:mysql lc-> 192.168.2.242:mysql Route 1 0 0->
192.168.2.241:mysql Route 1 0 0
Sin embargo, si se inicia desde un cliente, una conexin mysql
contra la IP Virtual del balanceador (192.168.2.240 en el ejemplo),
se vercomo se incrementa el nmero de conexiones activas de
entrada:
[root@balancer log]# ipvsadmIP Virtual Server version 1.2.1
(size=4096)Prot LocalAddress:Port Scheduler Flags->
RemoteAddress:Port Forward Weight ActiveConn InActConnTCP
192.168.2.240:mysql lc-> 192.168.2.242:mysql Route 1 0 1->
192.168.2.241:mysql Route 1 1 0
NOTAS DE INTERSComo ltimo apunte, seguramente sea interesante
saber ms sobre los servicios que intervienen en la solucin de
balanceo que hemosmontado. En la documentacin oficial de Red Hat
describen perfectamente estos servicios:
Pulse: el proceso encargado de iniciar todos los otros procesos
relacionados con el router LVS. En caso de contar con ms de
unrouter LVS para alta disponibilidad, pulse se encarga de
determinar cual ha de ser el router activo y cuales los pasivos,
iniciandoconvenientemente los servicios LVS en cada uno de
ellos.LVS: el router LVS activo (en caso de tener ms de un router
LVS) tendr corriendo el servicio LVS, que se habr iniciado
mediantePulse. ste servicio lee la configuracin descrita en
/etc/sysconfig/ha/lvs.cf (configurada automticamente a travs de
Piranha) llama a"ipvsadm", y levanta un proceso "nanny" por cada
uno de los Real Servers configurados.[root@balancer log]# ps -ef |
grep nannyroot 31605 31596 0 11:54 ? 00:00:00 /usr/sbin/nanny -c -h
192.168.2.241 -p 3306 -r 3306 -s GET / HTTP/1.0\r\n\r\n -x HTTP -a
15 -I/sbin/ipvsadm -t 6 -w 1 -V 192.168.2.240 -M g -U none
--lvsroot 31606 31596 0 11:54 ? 00:00:00 /usr/sbin/nanny -c -h
192.168.2.242 -p 3306 -r 3306 -s GET / HTTP/1.0\r\n\r\n -x HTTP -a
15 -I/sbin/ipvsadm -t 6 -w 1 -V 192.168.2.240 -M g -U none
--lvsIpvsadm: LVS llama a ipvsadm para que ste aada, cambie o
elimine entradas en la tabla de routing IPVS.Nanny: Slo el router
LVS activo tendr servicios nanny corriendo. Mediante estos
demonios, el balanceador determina la salud delos Real
Servers.Piranha: La herramienta web que nos permite configurar todo
el sistema sin apenas tocar ficheros de configuracin.
http://www.proxy-service.de/proxy-service.php?u=http...
5 de 8 22/06/15 12:44
-
Fuentes:http://dak1n1.com/blog/13-load-balancing-lvshttp://blog.secaserver.com/2012/11/high-availability-configure-piranha-http-https-mysql/http://blog.secaserver.com/2012/07/centos-configure-piranha-load-balancer-direct-routing-method/https://access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Load_Balancer_Administration/index.html
Foto por karindalziel
Tags: balanceador centos ipvs ipvsadm load balancer lvs nanny
piranha red hat7 Comments
David Suarez says:9 diciembre 2013 at 21:42Muy buen post!!
Gracias por el gran aporte.Ya lo he instalado y configurado y al
parecer funciona muy bien.Solo queria preguntar donde puedo ver el
log del balanceador para ver en tiempo real como este reparte las
peticiones al mysql entrelos dos servidores reales, y asi poder
constatar que funciona el balanceador.Gracias.
1.
Adrin Prez says:10 diciembre 2013 at 9:41Hola David,Una opcin es
desde el mismo cliente que conecta contra el balanceador, hacer una
query del estilo "SELECT @@hostname". Verscomo te va devolviendo un
hostname diferente en funcin del servidor al que va conectando. Ten
en cuenta que sto funcionardependiendo del algorismo de balanceo
que hayas elegido.A parte, en el mismo balanceador puedes usar
"ipvsadm" para ver las conexiones que hay en cada nodo. Mrate el
comando porquetiene opciones interesantes.Finalmente, en los
servidores MySQL, puedes ejecutar un "netstat -nat | grep ":3306"
para ver las conexiones contra el mysql.Si descubres un mtodo
mejor, no dudes en compartirlo Saludos,Adri
2.
Pedrox78 says:18 junio 2014 at 21:09porque es bueno usar la tool
pirana y hacer un balanceo?para que se haria un balanceo de carga?
a que ayudaria esto, estoy aprendiendo gracias
3.
Adrin Prez says:19 junio 2014 at 8:42Hola @Pedrox78. Tienes
cientos de enlaces sobre lo que es un balanceador de carga y para
qu sirve. Si ests aprendiendo, Google estu amigo En esencia, un
balanceador de carga es una aplicacin que permite distribuir las
peticiones entre varios servidores, para que aspuedas atender ms
peticiones de las que hubieras gestionar podido con un nico
servidor.Si tienes una web con millones de visitas, necesitars
seguramente repartir las peticiones que recibes entre varios
servidores, parapoder soportar tantas peticiones.Saludos
4.
Mijhael says:6 noviembre 2014 at 4:43Muy bueno el post!
5.
0 0Share 0 0Share 0
http://www.proxy-service.de/proxy-service.php?u=http...
6 de 8 22/06/15 12:44
-
Has probado alguna vez LVS con CENTOS 6 o 7? Funcionar bien?
Adrin Prez says:6 noviembre 2014 at 9:36Buenas @Mihael, gracias
por comentar!Seguro que funcionar bien, con CentOS 6, e imagino que
tambin con el nuevo CentOS 7.Es muy probable que lo conozcas
tambin, pero mrate HAProxy si lo que quieres es balancear. Fcil,
rpido y muy popular.Adri
6.
Pingback: Entradas ms vistas en 2014 y estadsticas | Hello,
IT.7. Leave a ReplyTu direccin de correo electrnico no ser
publicada.Your Name
Your Email
Your Website
CommentPuedes usar las siguientes etiquetas y atributos
HTML:
Submit
BuscadorSearch
Hello, IT.
Blog de carcter totalmente personal sobre el mundo de las
tecnologas de informacin.Social
TwitterRSSLinkedIn
CategorasActive Directory (4)Bases de datos (32)canon digital
(1)Cloud Computing (4)Control Remoto (2)Encuestas (1)General
(3)
http://www.proxy-service.de/proxy-service.php?u=http...
7 de 8 22/06/15 12:44
-
Google (5)hosting (4)Humor (1)Internet (3)ITIL (6)Programacin
(5)Reviews (1)Seguridad (30)Sin categora (4)Sistemas (113)Software
(3)videojuegos (2)Virtualizacin (7)Web (37)Windows Mobile (2)
Nube de tags
amazon apache backup centos Control Remoto directorio activo DNS
e-commerce email Fedora galera cluster Google google analytics
hosting httpd ITIL v3Foundations linux log magento migracin mongo
mongodb mysql mysql cluster mysql master slave mysql replication
nagios paypal perconapercona xtradb cluster Permisos php raid red
hat script Seguridad seo spam ssh Virtualizacin vmware Windows
wordpress www yumEnlaces
El blog de iguanafireEl Sandro RapFlesh BazookaHistory LinuxI am
YellowKustom PixelLa base de datos de
videjuegosMicroTechingOcttolabs. Diseo grfico e ilustracinPaco
MaldonadoSamurai Programming
Hello, IT. 2015 | Este blog est bajo una licencia | Designed
by
http://www.proxy-service.de/proxy-service.php?u=http...
8 de 8 22/06/15 12:44