sábado, 20 de marzo de 2010

Configurar bonding de tarjetas de red

Muchas personas no saben que existe este tipo de configuracion en la que se puede aumentar el rendimiento y seguridad en las interfaces de red en nuestros servidores linux bueno eso hace bonding por nosotros y muchas cosas mas bien manos a la obra.

Instalamos los paquetes necesarios

aptitude install ifenslave

Antes de empesar a configurar o acer algo es importante saber los tipos de bonding que existe y sus funciones.

- (modo 0) balance-rr: se emplea un algoritmo round robin entre la cola virtual y las de los esclavos. Es algo así como: un paquetillo para un esclavo, otro para otro esclavo, un paquetillo para un esclavo, otro para el otro... etc. Es el algoritmo que se usa por defecto.

- (modo 1) active backup: realmente no balancea la carga, usa sólo un esclavo y en caso de fallar, usa el siguiente disponible.

- (modo 2) balance-xor: emplea una formulita para decidir por qué interfaz sale: (source-MAC xor dest-MAC) mod n-slaves.

- (modo 3) broadcast: se transmite todo por todas las interfaces. Este método no balancea tampoco, pero provee tolerancia a fallos.

- (modo 4) 802.3ad: emplea algoritmos definidos en el estándar IEEE 802.3ad.

- (modo 5) balace-tbl: balancea la carga de transmisión entre los esclavos dependiendo de la velocidad de estos y de la carga total. El tráfico es recibido por un esclavo, en caso de fallar otro esclavo toma su MAC y continúa recibiendo tráfico.

- (modo 6) balance-alb: realiza el balanceo anterior además de un balanceo también en la recepción. Este método debe modificar las MAC de los esclavos estando las tarjetas activas, esto debe estar soportado por el driver para poder usar este método.

Aunque todo esto parezca muy bonito, hay que tener en cuenta una cosa: algunos métodos necesitan ciertas configuraciones/capacidades en el switch al que estés conectados los esclavos. Ah! se me olvidaba: si el switch tiene un único link de salida a la red y va a la misma velocidad que nuestros esclavos, el balanceo se hace inútil ya que se produce un cuello de botella en el link de salida del switch.

Tipos de bonding que necesitan configuraciones especiales de los switch

Los modos 1, 5 y 6 no requiere ninguna configuración especial en el switch, ideales si no tenemos acceso a la configuración del equipamiento de red .

El modo 4 requiere que el switch tenga los puertos donde conectamos los esclavos en modo 802.3ad aggregation. Esto depende de cada switch, por ejemplo, en los switch's de Cisco esta capacidad se llama EtherChannel y debe estar en modo lacp.

Por último, los modos 0, 2 y 3 generalmente requiere poder agrupar puertos. Las nomenclaturas de estos grupos dependen del fabricante del switch, como hemos dicho antes, Cisco llama a estas agrupaciones EtherChannel, también se usa trunk group.

Ya con esto podemos empesar a configurar nuestro bonding.

En este ejemplo utilizaremos las interfaces eth0, eth1.

Editamos el archivo /etc/network/interfaces y agregamos lo siguiente

iface bond0 inet static
address 10.0.1.5
netmask 255.255.255.0
network 10.0.1.0
gateway 10.0.1.254
bond_mode 802.3.ad
bond_miimon 100
bond_downdelay 200
bond_updelay 200
slaves eth0 eth1

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.

Otra manera de configurar el bondig en debian es la siguiente

Editamos el archivo /etc/modprobe.d/aliases y le agregamos lo siguiente

alias eth0 e100
alias eth1 e100
alias bond0 bonding
options bonding mode=5 miimon=100

Y configuramos en /etc/network/interfaces

auto bond0
iface bond0 inet static
address 172.31.0.3
netmask 255.255.252.0
broadcast 172.31.3.255
gateway 172.31.0.1
slaves eth0 eth1

Ya con esto tenemos el bonding configurado en nuestro servidor pero como se habran dado cuenta en el ejeplo pongo bonding 4 el cual necesita configurar el switch de manera especial aqui les dejo como se configura el switch.

switch(config)#interface range fastethernet 0/1 - 3
switch(config-if-range)#channel-protocol lacp
switch(config-if-range)#channel-group 1 mode active
switch(config)#port-channel load-balance src-dst-mac

Ya con esto tenemos nuestro switch y servidor configurado para usar bonding solo resta reiniciar el servidor y listo.

No hay comentarios:

Publicar un comentario