blog del equipo de tecnología de 11870.com

Bonding: alta disponibilidad de red

El Bonding permite unir varios interfaces de red de una misma máquina en un único interfaz virtual. Esto nos permite:

  • Alta disponibilidad: En caso de fallo físico de una de las tarjetas, el servicio sigue funcionando.
  • Mejora del rendimiento: En determinados modos de funcionamiento, el tráfico se balancea entre las tarjetas, multiplicando así el ancho de banda.

A continuación vamos a explicar la instalación y configuración del Bonding en un servidor Linux, concretamente en un Ubuntu.

MODOS

El Bonding permite 7 modos de funcionamiento:

  • mode=0 (balance-rr): Se balancea por Round Robin entre las tarjetas. Hay balanceo y tolerancia a fallos.
  • mode=1 (active backup): Se utiliza la primera interfaz configurada y las otras sólo en caso de fallo. No hay balanceo y, por lo tanto, el ancho de banda es el mismo que el de una sola tarjeta.
  • mode=2 (balance-xor): Fija una misma interfaz por cada interfaz de destino mediante una fórmula. Hay balanceo, pero no hay tolerancia a fallos:
  •  (MAC-Origen XOR MAC-Dest) MOD (Nº Esclavos)
  • mode=3 (broadcast): Todas las tarjetas envían a la vez. No hay balanceo, pero sí tolerancia a fallos.
  • mode=4 (802.3ad): Se forman grupos de tarjetas activos y grupos inactivos.
  • mode=5 (balace-tbl): El trafico saliente se distribuye en función de la carga de cada tarjeta. El entrante es active backup.
  • mode=6 (balance-alb): Lo mismo que el modo 5 pero con balanceo también para el entrante.


INSTALACIÓN

El Bonding suele estar presente como un módulo del Kernel, por lo que debemos cargarlo, pero antes debemos definir una serie de parámetros. Para ello creamos el fichero:

/etc/modprobe.d/bonding

y lo editamos con:

options bonding mode=modo miimon=100 downdelay=200 updelay=200

Donde:

  • mode: modo de funcionamiento elegido.
  • miimon: tiempo en mseg entre chequeos de las interfaces.
  • downdelay: tiempo para considerar caído una interfaz.
  • updelay: tiempo para considerar levantada una interfaz.

Ahora ya podemos cargar el módulo:

# modprobe bonding

Al hacerlo, nos aparece un nuevo interfaz de red: bond0.

También necesitamos instalar el paquete: ifenslave, encargado de realizar el bonding:

# apt-get install ifenslave


CONFIGURACIÓN

Necesitamos tener levantado el interfaz bond0:

# ifconfig bond0 0.0.0.0

Asociamos las interfaces de red al nuevo interfaz:

# ifenslave bond0 eth0 eth1 …  (tantas como queramos… y tengamos, claro)

Al hacerlo, las interfaces realies pierden la IP que pudieran tener. Nos falta asignar una IP al nuevo interfaz:

# ifconfig bond0 192.168.0.10  (o la IP que sea…)

Si estamos haciendo esto en una consola remota y no queremos perder la conexión, debemos hacer estos dos pasos en una misma secuencia:

# ifenslave bond0 eth0 eth1; ifconfig bond0 192.168.0.10

Si la IP es la misma que teníamos, la conexión no llega a cortarse.

ARRANQUE

Para que la configuración funcione en el arranque debemos cargar el módulo:

# echo “bonding” >> /etc/modules

y dar de alta el interfaz de red (con la IP que corresponda)en el fichero:
/etc/networking/interfaces

auto bond0
iface bond0 inet static
       address 192.168.0.10
       netmask 255.255.255.0
       gateway 192.168.0.1
       post-up /sbin/ifenslave bond0 eth0 eth1
       pre-down /sbin/ifenslave -d bond0 eth0 eth1

Ojo a los scripts para montar y desmontar el bonding cuando se levante o se tire el interfaz.

SWITCHES

Todo esto está muy bien, pero ¿dónde se conectan estas tarjetas?

Podemos conectarlas todas al mismo switch en el caso de que sólo busque mejorar el rendimiento, pero hay que tener en cuenta que esto sólo debe hacerse en modos sin balanceo (modos 0, 2…), ya que si las conectamos al mismo switch en modo 1, éste puede entrar en conflicto al ver la misma MAC en varios puertos.

En ése caso el switch debe permitir hacer truncking o etherchannel que permite hacer bonding de puertos en un switch.

La otra posibilidad es conectar cada tarjeta a un switch diferente, lo que permite tener alta disponibilidad no sólo frente a caída de tarjetas, sino también de switches.

Para que este modelo funcione, es necesario que los switches estén conectados entre sí, ya que en caso contrario, la caída de una tarjeta puede hacer que parte del tráfico no llegue al servidor.

Pero en este caso, en el que interconecto los switches, vuelvo a tener la necesidad de que los switches permitan hacer truncking o etherchannel.

Para evitar esta necesidad, podemos usar los modos 5 y 6, ya que hacen balanceo manteniendo la MAC de cada tarjeta.

Tags: , , ,

No hay comentarios

rssComments RSS transmitTrackBack Identifier URI

No comments. Be the first.

addDeja un comentario