8
Hello, IT. Acerca de You are here: Inicio » Sistemas » Balanceador de carga con LVS y Piranha 24 diciembre 2012 at 15:38 by Adrián Pérez En este artículo veremos cómo configurar un balanceador de carga con LVS y Piranha, en un servidor CentOS, con un único router LVS. Hay muchos artículos por Internet que explican cómo hacerlo con 2 routers, para conseguir así tener alta disponibilidad en el balanceador, pero no siempre se disponen de dos máquinas para conseguir la alta disponibilidad. Como añadido, el servicio a balancear será MySQL, no Apache como suele ser habitual. Para el test, los sevidores tienen las siguientes características, además de selinux deshabilitado e iptables configurado: Hostname: balancer IP: (eth0) 192.168.2.228. Default gw: 192.168.2.1 Hostname: mysql1 IP: (eth0) 192.168.2.241. Default gw: 192.168.2.1 Hostname: mysql2 IP: (eth1) 192.168.2.242. Default gw: 192.168.2.1 1- BALANCEADOR- Instalación $ 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- Configuración http://helloit.es/2012/12/ba Go Mail Account http://www.proxy-service.de/proxy-service.php?u=http... 1 de 8 22/06/15 12:44

Balanceador de Carga Con LVS y Piranha

Embed Size (px)

DESCRIPTION

Balanceador de Carga con LVS y Piranha

Citation preview

  • 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