En esta página vamos a configurar Keepalived para habilitar la conmutación por error entre dos instancias.
El protocolo que respalda la conmutación por error de alta disponibilidad es VRRP y Keepalived proporciona una implementación de este protocolo.
Puede sonar extraño que estemos usando un protocolo creado para enrutadores pero resulta que esta misma tecnología de red utilizada para brindar redundancia a los equipos de red también puede brindar redundancia en entornos de servidor. A menudo los enrutadores se implementan en pares, donde un enrutador está activo y otro en espera, listo para funcionar en caso de que falle el enrutador activo. Estos mismos conceptos se pueden aplicar a servidores.
VRRP utiliza el concepto de una dirección IP virtual (VIP). Uno o más hosts (enrutadores, servidores, etc.) participan en una elección para determinar el host que controlará ese VIP. Solo un host (el master) controla el VIP a la vez. Si el maestro falla, VRRP proporciona mecanismos para detectar esa falla y cambiar rápidamente a un host en espera.
El entorno que vamos a configurar es el siguiente:
También necesitaremos 1 fIP a parte para usarla de VIP.
Tendremos que añadir la regla VRRP al grupo de seguridad que vamos a asignar a nuestros servidores.
Depende del sistema operativo es posible que necesitemos añadir una regla diferente.
Por último, asignaremos al par de direcciones de cada puerto de las instancias la IP que usaremos como VIP.
Instalar Keepalived es super sencillo, solo hay que ejecutar los siguientes comandos en los dos servidores:
[root@centos-master centos]# yum update -y && yum upgrade -y
[root@centos-master centos]# yum install -y keepalived
[root@centos-master centos]# keepalived --version
Keepalived v1.3.5 (03/19,2017)
[root@centos-master centos]# systemctl status keepalived
keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disab
Active: inactive (dead)
Una vez hemos realizado los pasos anteriores ya podemos empezar con la configuración de nuestro Keepalived:
NOTA: Antes de editar los archivos comprobar el nombre de la interfaz del servidor.
En el servidor MASTER editaremos el archivo /etc/keepalived/keepalived.conf de la siguiente manera para que actue como MASTER y permitir nuestra VIP entre los dos servidores:
[root@centos-master centos]# 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 {
78.136.92.124
}
}
En el servidor BACKUP editaremos el mismo archivo pero con los siguientes parámetros:
[root@centos-backup centos]# 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 {
78.136.92.124
}
}
Una vez editados los archivos de configuración solo falta activar el servicio Keepalived en cada servidor.
[root@centos-master centos]# systemctl start keepalived
[root@centos-backup centos]# systemctl start keepalived
Lo primero es observar las direcciones IP de cada instancia:
[root@centos-master centos]# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 78.136.92.112/27 78.136.92.124/32 fe80::f816:3eff:feab:4e59/64
[root@centos-backup centos]# ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 78.136.92.119/27 fe80::f816:3eff:fe28:e8dc/64
Una vez hayamos confirmado que Keepalived se ha iniciado en ambos servidores y que el servidor 1 es el maestro activo, para probar la funcionalidad de conmutación por error podemos detener Keepalived en el servidor 1 y así el servidor 2 se hará cargo del VIP.
[root@centos-master centos]# systemctl stop keepalived
[root@centos-master centos]# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 78.136.92.112/27 fe80::f816:3eff:feab:4e59/64
[root@centos-backup centos]# ip -brief address show
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP 78.136.92.119/27 78.136.92.124/32 fe80::f816:3eff:fe28:e8dc/64
Como podemos ver esta funcionalidad la podemos extrapolar a instancias donde corramos servicios que necesiten un HA como un servidor de base de datos o un Vrouter
Como configurar KeepAlive
KeepAlive en soax
Soax Keepalive