En esta página vamos a configurar Keepalived para habilitar la conmutación automática ante un error entre dos instancias.
El protocolo que respalda la conmutación por error de alta disponibilidad se declara como VRRP. Keepalived proporciona una implementación directa usando este mismo 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 estado de espera.
El entorno de ejemplo que vamos a configurar es el siguiente:

A modo de ejemplo se despliegan dos instancias Rocky directamente sobre la red externa de Soax como podemos observar en la imagen.
Por otro lado, también añadiremos la regla VRRP al grupo de seguridad que vayamos a asociar a los puertos de ambos servidores.

Dependiendo del sistema operativo, es posible que necesitemos añadir una regla diferente.
Continuamos creando una IP flotante para ser usada como IP Virtual (VIP). Para realizarlo, podemos utilizar el Drag & Drop o desde Conectividad --> IPs flotantes y haciendo click en el botón
para crear una fIP nueva en nuestro proyecto.


Por último, asignaremos la VIP al par de direcciones de los puertos de las máquinas que hemos creado. Para realizar esto, haremos click derecho en el puerto y seleccionamos en el desplegable la opción Pares de direcciones, nos aparecerá el formulario donde pondremos la VIP creada. Repetiremos el proceso de manera idéntica en la segunda máquina.
Puede consultar la información de cómo gestionar los pares de direcciones aquí:
Instalar Keepalived es muy sencillo, solo hay que ejecutar los siguientes comandos en ambos servidores:
sudo dnf update -y
sudo dnf install keepalived -y
keepalived --version
sudo systemctl start keepalived
sudo systemctl status keepalived
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 actúe como MASTER y permitir nuestra VIP entre los dos servidores:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
x.x.x.x
}
}
En el servidor BACKUP editaremos el mismo archivo pero con los siguientes parámetros:
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
x.x.x.x
}
}
Una vez editados los archivos de configuración, reiniciaremos el servicio.
sudo systemctl restart keepalived
Lo primero es observar las direcciones IP de cada instancia:
[rocky@rocky-master ~]$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP x.x.x.x/24 x.x.x.x/32 fe80::f816:3eff:fec2:9bf1/64
[rocky@rocky-backup ~]$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP x.x.x.x/24 fe80::f816:3eff:fea5:f007/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.
[rocky@rocky-master ~]$ sudo systemctl stop keepalived
[rocky@rocky-master ~]$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP x.x.x.x/24 fe80::f816:3eff:fec2:9bf1/64
[rocky@rocky-backup ~]$ ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
eth0 UP x.x.x.x/24 x.x.x.x/32 fe80::f816:3eff:fea5:f007/64
Esta funcionalidad puede ser implementada en otras configuraciones que requieran el mismo servicio como puede ser el caso de requerir cualquier servicio en HA ya sea como ejemplo un servidor de base de datos o un VRouter.
Como configurar KeepAlive
KeepAlive en soax
Soax Keepalive