Wednesday, August 7, 2013

Redundancia de Servidores Linux con VRRP usando Keepalived

Keepalived es un servicio de enrutamiento escrito en C que podemos encontrar disponible en nuestro sistema Linux, nos proporciona una simple y robusta solución para lograr redundancia y balanceo de carga entre dos sistemas Linux.

Para lograr la redundancia keepalived se apoya del protocolo VRRP (Virtual Router Redundancy Protocol), un protocolo que muchos conocen en el mundo de las telecomunicaciones por ser un estandar para la redundancia en Router y Switches.

Podemos instalarlo desde yum con el siguiente comando (Verificado en Centos 6.3):

root@punto-libre.org# yum install keepalived

Como ejemplo vamos a realizar la siguiente configuración en donde tenemos dos servidores compartiendo una direccion IP virtual con VRRP:


Como podemos observar tenemos un servidor con la dirección 192.168.1.1 el cual tiene VRRP configurado con una prioridad 150 y la dirección virtual 192.168.1.100, al tener una prioridad mayor que el servidor 192.168.1.2 es elegido como Maestro. Si el maestro cae, automaticamente subira el servidor secundario con la ip virtual 192.168.1.100 logrando de tal manera la redundancia deseada.

Teniendo todo esto claro, vamos al primer servidor y editamos el archivo /etc/keepalived/keepalived.conf con la siguiente configuración:

vrrp_instance VI_1 {
        interface eth1             #Interfaz por donde se va a escuchar
        virtual_router_id 51   #Numero del Grupo VRRP, debe de ser igual en ambos servidores
        priority 150               #Prioridad VRRP, el mayor sera el Maestro
        authentication {
            auth_type PASS
            auth_pass Contraseña   #Contraseña debe ser igual en ambos
        }
        virtual_ipaddress {
                192.168.1.100     #Direccion IP virtual
        }
}

Luego vamos al segundo servidor y realizamos el mismo procedimiento pero con menos prioridad:

vrrp_instance VI_1 {
        interface eth1             #Interfaz por donde se va a escuchar
        virtual_router_id 51   #Numero del Grupo VRRP, debe de ser igual en ambos servidores
        priority 100               #Prioridad VRRP, el mayor sera el Maestro
        authentication {
            auth_type PASS
            auth_pass Contraseña   #Contraseña debe ser igual en ambos
        }
        virtual_ipaddress {
                192.168.1.100     #Direccion IP virtual
        }
}

Luego en ambos servidores reiniciamos el servicio keepalived:

root@punto-libre # service keepalived restart

Y desde otros equipos ya podriamos hacer ping a la dirección 192.168.1.100, para verificar que equipo esta respondiendo a la dirección IP virtual podemos utilizar el comando "ip addr" en cada servidor:

root@puntolibre1 # ip addr
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:83:45:c7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 10.240.9.255 scope global eth1
    inet 192.168.1.100/32 scope global eth1
    inet6 fe80::250:56ff:fe83:45c7/64 scope link
       valid_lft forever preferred_lft forever

root@puntolibre2 # ip addr
eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:40:56:73:45:c9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 10.240.9.255 scope global eth1
    inet6 fe80::250:56ff:fe83:45c7/64 scope link
       valid_lft forever preferred_lft forever

En los resultados anteriores se puede observar que el servidor 1 es el maestro y puede responder a la direccion 192.168.1.100, en caso de que falle podriamos ver como la direccion IP virtual se activa en el segundo servidor.

0 comentarios:

Post a Comment