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.