Alta disponibilidad con Keepalived

Cuando hablamos del término “alta disponibilidad” siempre pensamos en configuraciones y arquitecturas super complejas que escapa al conocimiento de cualquier administrador de sistemas.

Keepalived, junto con Virtual Router Redundancy Protocol (VRRP), establecen una herramienta que nos permite implementar un servicio de alta disponibilidad para controlar situaciones de fallo general o responder a otro tipo de eventos

server1server2

Puede ser extraño el uso de de un protocolo creado para routers en nuestros servidores, pero la misma tecnología utilizada para proveer de redundancia a nivel de routers también se puede implementar para servidores. Mientras un servidor está activo, el otro está en stand by esperando que falle para activarse.

VRRP utiliza el concepto de IP Virtuales. Básicamente varios servidores participan en la administración del control de esa IP virtual. Solo 1 de ellos (Master) la controla a la vez. Se puede consultar la RFC 3768 (Version 2) y RFC 5798 (Version 3) para mayor información.

Instalaremos keepalived según nuestra distribución y a continuación lo configuraremos. Dicha configuración se encuentra en /etc/keepalived/keepalived.conf. La configuración mas básica establece una IP compartida entre 2 servidores. Uno es el master y el otro el respaldo.

master# cat /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
 state MASTER 
 interface eth0 
 virtual_router_id 51 
 priority 255 
 advert_int 1 
 authentication { 
  auth_type PASS 
  auth_pass 12345 
 } virtual_ipaddress { 192.168.100.100/24 } 
}
respaldo# cat /etc/keepalived/keepalived.conf 
vrrp_instance VI_1 {
 state BACKUP 
 interface eth0 
 virtual_router_id 51 
 priority 254 
 advert_int 1 
 authentication { 
  auth_type PASS 
  auth_pass 12345 
 } virtual_ipaddress { 192.168.100.100/24 } 
}

Muchas de las configuraciones parecen ser obvias por su nombre, pero a continuación las detallo:
– vrrp_instance define una única instancia del protocolo VRRP.
– state define la instancia inicial.
– interface define en qué interface trabaja VRRP.
– virtual_router_id es el identificador.
– priority es la prioridad asociada al VRRP.
– advert_int la frecuencia en la que se comunica. 1 segundo en este caso.
– autentication especifica la información necesaria para los servidores que participan en el cluster VRRP.
– virtual_ipaddress define la Virtual IP (que pueden ser múltiples).

Si tenemos un firewall en el servidor necesitamos agregar que permita el tráfico al puerto 112. De lo contrario no funcionará el servicio.

Finalmente iniciamos el servicio keepalived en ambos servidores. Veremos que en el servidor principal veremos la IP Virtual, mientras que en el respaldo la ip permanecerá sin cambiar.

Fuente: https://www.redhat.com/sysadmin/ha-cluster-linux