Redundancia de red con bonding
Introducción
En ocasiones se nos presentan fallas por desconexión de la red, lo que puede deberse a diferentes factores como: Desconexión del cable de red, Falla eléctrica del switch, o por mantenciones de los switches y otros. Casos que podemos reducir haciendo un Bonding de 2 o más interfaces de red. Dichas interfaces se comportan como si fueran una sola, y si una falla, se utiliza otra de forma transparente, incluso replicando su MAC Address.
Otra característica del Bonding, es que puede sumar los ancho de banda de cada interface, de manera similar (o conjunta) a los Trunk de los switches, Pero esta funcionalidad puede presentar inconvenientes con algunos switches dado que la misma MAC aparece en dos puertos, requiriendo en algunos casos alguna configiración adicional en el switch.
El presente artículo obedece a la configiración necesaria sobre Centos 6, aunque se configura de igual manera para Centos 5. Para Centos 7 se recomienda utilizar Teaming que es equivalente.
Configuración
Lo primero que debemos tener presente, es que la configuración de Bonding se orienta principalmente a servidores, con IP estático, por lo que aquí consideraré dicho escenario.
Partimos con la creación de una nueva interface bond0 por medio de módulos de kernel, se crea un nuevo archivo bajo /etc/modprobe.d
que llaremos bonding.conf
. Aquí se especifica el modo de operación como active-backup, en que se cambia de interface solo al detectar una falla, y se especifican los tiempos en milisegundos de monitoreo (miimon) y cuanto tiempo transcurre para dar la interface como fallida (downdelay), el que debe ser un múltiplo de miimon
.
alias bond0 bonding
options bond0 mode=active-backup miimon=100 downdelay=200 updelay=200
La configuración para dicha interface se realiza como cualquier interface en el directorio /etc/sysconfig/network-scripts
por medio del archivo ifcfg-bond0
, donde además se especifican los datos de IP, GATEWAY y DNS.
DEVICE=bond0
NAME=bond0
IPADDR=192.168.2.2
NETMASK=255.255.255.0
GATEWAY=192.168.2.1
DNS1=192.168.2.1
DNS2=8.8.8.8
NM_CONTROLLED=no
BOOTPROTO=none
ONBOOT=yes
USERCTL=no
A continuación debemos asignar las interfaces "esclava", si consideraremos utlizar las interfaces eth0
y eth1
, definimos los archivos ifcfg-eth0
y ifcfg-eth1
como:
DEVICE=eth0
USERCTL=no
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
A continuación la definición para eth1
que solo cambia la definición del DEVICE
DEVICE=eth1
USERCTL=no
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes
BOOTPROTO=none
Para terminar lo más simple es reiniciar el servidor, con lo que validamos que no tendremos inconvenientes en reinicios futuros, pero como buen servidor no siempre es factible de realizar por el tiempo que demora. De todas formas hay que considerar que todos los pasos siguientes pueden afectar la conectividad del servidor, por lo que se recomienda hacerlo bajo condiciones de mantenimiento.
Podemos continuar con la creación manual del dispositivo bond0, con usuario root
ejecutamos:
modprobe bonding mode=active-backup miimon=100 downdelay=200 updelay=200
Con el comando ifconfig bond0
podemos validar que el dispositivo fue creado. Luego reiniciamos la red con el comando:
service network restart
Ahora nos resta validar el estado de nuestro bonding con:
ifconfig bond0
bond0 Link encap:Ethernet HWaddr 08:01:27:61:11:22 inet addr:192.168.2.2 Bcast:192.168.2.255 Mask:255.255.255.0 inet6 addr: fe80::a01:27ff:fe61:1122/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:57654 errors:0 dropped:0 overruns:0 frame:0 TX packets:101138 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:10265709 (9.7 MiB) TX bytes:140817484 (134.2 MiB)
cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.6.0 (September 26, 2009) Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth0 MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 Slave Interface: eth0 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:01:27:61:11:22 Slave queue ID: 0 Slave Interface: eth1 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 08:00:27:81:43:02 Slave queue ID: 0
Generado por Sistema y almacenado en cache
Wyzer Luis Hernán de la Barra |
|
Teléfono: | +56995451689 |
WhatsApp: | +56995451689 |
E-Mail: | info@wyzer.cl |
Web: | www.wyzer.cl |