Alta disponibilidad en servicios dentro de OpenBSD

OpenBSD, Secure by default
Puffy... Puffy...

Lizardo Desilos
OpenBSD México
lizardo@OpenBSD.Org.MX


Licencia

Copyright (c) 2003, Lizardo Desilos, lizardo@openbsd.org.mx
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
   derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

Introducción

El protocolo CARP (Common Address Redundancy Protocol) proporciona al sistema un ambiente de alta disponibilidad que asegura que las aplicaciones críticas en su sistema estén siempre disponibles a los usuarios finales.

CARP permite a multiples computadoras compartir direcciones IP de tipo IPv4 e IPv6 dentro de la misma red local. El propósito principal es asegurarse de que esas direcciones esten siempre disponibles, pero en algunas configuraciones, CARP puede también proveer la funcionabilidad de balanceo de cargas, misma qué a su ves puede realizarse con Packet Filter.

Para utilizar CARP, el administrador necesitará configurar como minimo un ID para un host virtual y una dirección IP virtual en cada una de las maquinas las cuales formaran parte del grupo virtual. Los parámetros advbase y advskew son utilizados para controlar la frecuencia con la que la máquina maestra envía los mensajes a los demás hosts, pass es utilizado para autentificar los mensajes de CARP. Estas configuraciones pueden ser realizadas utilizando ifconfig(8).

Adicionalmente, existen varios parametros globales que pueden ser configurados mediante el uso de sysctl(8).

NOTA: CARP aún se encuentra en su fase de desarrollo en OpenBSD, razón por la cual lo encontrará únicamente dentro de los snapshots (versión -current). El lanzamiento estable se espera que sea hasta el día 1o de Mayo de 2004.


Ejemplo

Procedamos a configurar dos hosts para proveer un soporte a fallos al servicio de WWW y DNS para la dirección IPv4: 123.456.789.1 y la direccion IPv6: 3ffe:8114:2000:1b00:0:0:0:1. Se considera que los dos hosts estan dentro de sus respectivos segmentos de red.

Primero, debemos configurar las intefaces de CARP en el host A. El parámetro advskew con un valor de 100 en el segundo host virtual significa que los anuncios serian enviados con menos frecuencia.

Para IPv4:
# ifconfig carp0 vhid 1 pass mipassword 123.456.789.1
# ifconfig carp1 vhid 2 advskew 100 pass mipassword 123.456.789.1
Para IPv6:
# ifconfig carp0 vhid 1 pass mipassword 3ffe:8114:2000:1b00:0:0:0:1
# ifconfig carp1 vhid 2 advskew 100 pass mipassword 3ffe:8114:2000:1b00:0:0:0:1

Ahora configuremos el host B. La configuracion es idéntica.

Para IPv4:
# ifconfig carp0 vhid 1 advskew 100 pass mipassword 123.456.789.1
# ifconfig carp1 vhid 2 pass mipassword 123.456.789.1
Para IPv6:
# ifconfig carp0 vhid 1 advskew 100 pass mipassword 3ffe:8114:2000:1b00:0:0:0:1
# ifconfig carp1 vhid 2 pass mipassword 3ffe:8114:2000:1b00:0:0:0:1

Probando la configuración

Asegurese de que se ha activado el servico de HTTP y DNS dentro de las dos maquinas con iguales configuraciones. Ahora que se ha configurado CARP en ambas máquinas, puede realizar la prueba de alta disponibilidad en el servicio que se requiera (http, ftp, dns, firewall, etc), para lo cual, obviamente las dos máquinas deberán de contar con las mismas configuraciones especificadas. Sabiendo lo anterior, puede proceder a apagar, desconectar de red, o lo que a usted se le ocurra hacer con la máquina maestra.


Representación Gráfica

El siguiente esquema muestra una consulta desde internet hacia el servidor el cual fue configurado con Alta Disponibilidad, en este mismo puede observar como al estar activa la conexión através de las interfaces que CARP necesita, el servidor maestro será el que brinde respuesta a esas peticiones. La línea roja representa la vía de comunicación que la consulta accesa para hacer la petición y obtener una respuesta, las líneas azules representan la comunicación de los dos servidores utilizando el protocolo CARP para proveer la Alta Disponiblidad entre estos mismos. Puede observar además como no es necesario que alguno de los servidores requiera la dirección IP sobre la cual necesite la Alta Disponibilidad. CARP se mantiene en constante comunicación entre ambos servidores por medio de los paquetes que son enviados a la red, no será necesario contar con algún tipo de hardware costoso o extraño, tan sólo necesitará una tarjeta de red en ambos servidores, esto es una opción muy viable en comparación con servicios de Alta Disponibilidad brindados por compañías como IBM con su servicio de HACMP, aunque CARP, única y exclusivamente brindará el mencionado servicio. Tome en cuenta que deberá contar con un excelente servicio de red ya que, como se mencionó anteriormente, CARP utiliza la red como método de comunicación.
El esquema de la izquierda muestra, al igual que el anterior, una consulta hacia el servidor con Alta Disponibilidad, más sin embargo se puede apreciar como la máquina maestra ha sufrido un problema razón por la cual ha dejado de emitir y recibir los paquetes que CARP envía, además de que su interfaz de red se encuentra desconectado. Escenarios como este, son muy comunes debido a distintos tipos de problemas, ya sean de software o hardware, lo cual nos hace reflexionar en cuan útil es contar con Alta Disponibilidad sobre todo en servicios críticos. Observe como la vía de comunicación a la cual la consulta accesa para hacer la petición y obtener una respuesta ha cambiado, y la máquina esclava ha tomado el control sobre la dirección IP sobre la cual se brindaba Alta Disponibilidad y que ambás máquinas compartian.

$Id: carp.html,v 1.5 2003/11/10 22:28:14 lynx Exp $