Francisco Ferri Pérez

Consultor tecnológico de desarrollo de proyectos informáticos.

Desarrollador de proyectos informáticos, Microsoft Certified IT Professional - Enterprise Administrator

Ver todos los tutoriales del autor

Fecha de publicación del tutorial: 2011-02-28

Tutorial visitado 4.654 veces Descargar en PDF

NIC Bonding, NIC Teaming, Port Trunking, Etherchannel o Ether bonding, con ifenslave en Ubuntu

Network FailOver - Network Balancing

Con los discos duros podemos crear varios tipos de Raids y de varias maneras (ya sea por hardware o por software), a su vez, las tarjetas de red permiten hacer lo mismo (también por hardware y por software).

En este tutorial voy a demostraros mediante una máquina virtual creada con VMWare Workstation 7, provista de 2 interfaces de red, y con un sistema operativo Ubuntu 10.04 LTS, cómo configurar vuestro propio sistema de balanceo de carga o alta disponibilidad sobre los dispositivos de red con unos simples pasos.

En la siguiente imagen podéis ver como vmware me indica que tengo 2 tarjetas de red configuradas en la máquina.



En este ejemplo nuestras dos tarjetas de red van a ser emparejadas/vinculadas/unidas mediante software. Ubuntu 10.04 LTS, permite mediante un simple paquete llamado "ifenslave" crear estos vínculos y gestionarlos para que se comporten del modo que nos interese.

Instalar lo necesario

Simplemente abrimos un terminal



Escribimos: sudo apt-get install ifenslave

Por partes:

sudo => hace que la acción se ejecute con permisos de administrador

apt-get => es el gestor de paquetes (aplicaciones o servicios) de Debian (Ubuntu está basado en Debian)

install => es la acción que vamos a realizar sobre el paquete indicado

ifenslave => es la aplicación/servicio que vamos a instalar

Nos pedirá la contraseña del usuario. La indicaremos y pulsaremos Enter.

Configurando las interfaces de red

Probaremos a hacer desde la consola:

sudo ifconfig

Para averiguar el nombre de nuestras tarjetas de red, en nuestro ejemplo serán: eth0 y eth1.

Ahora ejecutaremos:

sudo ifdown eth0 y sudo ifdown eth1

Seguramente nos diga que la interfaz no existe, puesto que por defecto Ubuntu 10.04 gestiona las interfaces de forma autónoma, mirando los dispositivos, sin usar la configuración indicada en el fichero /etc/network/interfaces, siempre y cuando este no esté relleno.

Esto se soluciona simplemente rellenando correctamente el fichero de configuración.

Por ejemplo en Ubuntu 8.04 debería funcionar sin más.

Editaremos el fichero escribiendo

nano /etc/network/interfaces



El fichero debe quedar muy parecido a esto:



La elección del modo de vinculación es completamente dependiente de nuestra topología de red e intereses. Por lo tanto comentar que disponemos de varias opciones, que no pretendo explicar en este tutorial, puesto que están explicadas de forma muy detalladas en internet.

Con este tutorial podrá probar la mayoría en su máquina virtual, pero para un entorno de producción se aconseja que un profesional DevOp o de TI le indique, según su hardware cuál es la que más le conviene.

Las más usadas:

0 (balance-rr) Round-robin policy.

1 (active-backup) Active-backup policy.

2 (balance-xor) XOR policy.

3 (broadcast) Broadcast policy.

4 (802.3ad) IEEE 802.3ad Dynamic link aggregation.

Algo más específicas

5 (balance-tlb) Adaptive transmit load balancing.

6 (balance-alb) Adaptive load balancing.

Es momento de reiniciar el servicio de networking de la máquina, para ello escribimos en el terminal:

sudo /etc/init.d/networking restart

Con esto la máquina está utilizando la nueva configuración y sólo deberemos ejecutar desde el terminal:

sudo ifup bound0

Confirmando que todo ha ido bien

Escribiendo ifconfig en la consola debemos obtener algo como:



Eso significa que hemos tenido éxito.

Probar nuestro nuevo fail-over

Hacemos ping a una página web que esté mundialmente reconocida y sea imprescindible para cualquier informático que se precie: www.AdictosAlTrabajo.com ;)

Para ello desde la consola escribimos:

ping www.adictosaltrabajo.com

Veremos que aparece algo similar a esto:



Puesto que el bounding/vinculación que hemos configurado en este ejemplo es del tipo FailOver, vamos a poder demostrar que está funcionando, desconectando una tarjeta de red aleatoriamente, y el sistema pasará automáticamente a utilizar la siguiente vinculada, a su vez repetiremos la operación con la otra tarjeta para que no quepa la menor duda.

En el caso de VMWare para desconectar la tarjeta de red principal, hacemos click con el botón derecho sobre ella y seleccionamos desconectar:



Observamos que el estado de la misma cambia a desconectada:



Esto no es equivalente a haber quitado el cable en una máquina real, significa que hemos desconectado físicamente el dispositivo de red, como si hubiésemos quitado de un tirón la tarjeta de red.

Lo cual es suficiente barbaridad para confirmar nuestro caso de ejemplo.

Observaremos que no hay cortes en la operación en curso de ping:



Ahora reconectamos la tarjeta del mismo modo, botón derecho sobre ella y seleccionamos Connect.

y desconectamos la segunda tarjeta de red del mismo modo que lo hicimos con la primera.



Vemos que la operación de ping sigue su curso.

Conclusión

Vemos que mediante software con Ubuntu podemos tener un servidor con una tolerancia a fallos mucho más elevada de lo que sería una instalación simple habitual.

Espero que os sea de utilidad a los que empezáis

Me podéis encontrar en franferri@gmail.com y en twitter @franciscoferri

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: