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:
- 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.
(MAC-Origen XOR MAC-Dest) MOD (Nº Esclavos)
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: alta disponibilidad, bonding, maestro esclavo, redes
No hay comentarios
Comments RSS
TrackBack Identifier URI
No comments. Be the first.
Deja un comentario

