Alta disponibilidad en FreeBSD: La IP de servicio, parte 1

NOTA: Esta entrada es una adaptación de la versión para Linux.

En una entrada anterior vimos qué es la alta disponibilidad y qué debemos conseguir cuando un consumidor intenta acceder a un servicio: Una disponibilidad lo mas cercana posible al 100% del tiempo.

Esta entrada describe qué es la dirección IP de servicio, punto de entrada a los mismos, y cómo prepararla utilizando dos servidores.

Para poder implementar lo descrito bajo estas líneas es necesario disponer de dos servidores físicos o virtuales y FreeBSD ya instalado en ellos.

Con el fin de no hacer excesivamente largas las entradas, esta está dividida en dos partes. Esta primera parte sirve de introducción y preparación de los sistemas, mientras que la segunda muestra cómo configurar la propia IP de servicio.

La dirección IP de servicio

Cuando accedemos a un servicio la conexión se realiza hacia una dirección IP, de forma directa (192.0.2.100) o a través de un nombre de host (www.example.com).

Supongamos que queremos acceder a una página web (http://www.example.com) y que su dirección IP asociada es “192.0.2.100”. Esta dirección IP, a través de la cual la página es accesible, es denominada “IP de servicio”.

El objetivo es que esta dirección IP esté siempre disponible. Para el consumidor la percepción debe ser como la siguiente imagen:

Conexion a Host (es)

Para conseguirlo, teniendo un mínimo de dos servidores, uno tendrá asignada la dirección IP de servicio y el otro estará en espera por si el primero de ellos falla para tomarla.

IP de servicio compartida

Conexion a Host (es)

Si el servidor “servidor-1” no fuese funcional, entonces el servidor “servidor-2” sería quien utilizase la dirección IP de servicio.  El servicio estaría degradado -un componente en estado de fallo-, pero operativo y accesible de cara al consumidor.

IP de servicio compartida - Servidor servidor-1 en fallo

Conexion a Host (es)

En caso de no tener ningún servidor disponible el servicio no se podrá prestar ya que la dirección IP de servicio no podría asignarse a ninguno de ellos.

IP de servicio compartida - Todos los servidores en fallo

Conexion a Host en fallo(es)

El consumidor no podrá acceder al servicio. Su percepción variará:

Conexion a Host en fallo(es)

La técnica que permite a un servidor utilizar una dirección IP de servicio previamente asignada a otro cuando este ya no está disponible se denomina “IP failover”.

Existen varios protocolos estandarizados que implementan métodos de “IP failover”. En este artículo utilizaremos CARP.

Configuración previa necesaria

Antes de comenzar hemos de tener preparado el material necesario.

Utilizaremos 2 servidores llamados “servidor-1” y “servidor-2”. He utilizado FreeBSD 11.2.

Ambos servidores están conectados mediante la interfaz de red “em0” a un switch y pertenecen a la subred 192.0.2.0/24. El switch está conectado a su vez a un router con dirección IP 192.0.2.1 que actúa como puerta de enlace (“gateway“).

El siguiente diagrama muestra la interconexión:

Anotaremos los datos de ambos servidores para su posterior consulta:

Preparando los sistemas

En FreeBSD lo único que debemos hacer es cargar el módulo del kernel. Indicaremos al sistema que lo cargue en cada arranque añadiendo una entrada al fichero /boot/loader.conf:

Y cargaremos el módulo para su uso sin reiniciar el sistema:

Llegados a este punto verificaremos lo siguiente:

– El módulo “carp” está cargado y configurado en ambos nodos

Una vez que se haya revisado todo, podemos comenzar con la configuración de la dirección IP de servicio, pero eso será en la próxima entrada de esta serie.

Esta entrada también está disponible en: enEnglish (Inglés)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *