Supón que tienes un servidor con varias maquinas virtuales dando servicio y que quieres asegurar la conectividad con la red. Al igual que redundamos las fuentes de alimentación o los discos montando RAIDs, también podemos redundar las interfaces de red Ethernet para asegurar una conectividad de alta disponibilidad. El siguiente esquema de red es típico de un entorno de virtualización, pero puede ser extensible a cualquier tipo de servicio crítico como puede ser una maquina de correo.
La técnica que utilizaremos es el bonding (o vinculación) en la cual crearemos una interfaz virtual vinculada a dos (o más) interfaces Ethernets físicas.
Como veis en el siguiente esquema cada interfaz de red se conecta a un switch redundando y cada switch a su backbone.
Lo que haremos es crear una interfaz virtual llamada bond0 y vincularla con eth0 y eth1. Supondremos que estamos en un CentOS 4.5. Editaremos el /etc/modprobe.conf para que el kernel arranque el modulo de bonding:
alias bond0 bonding options bond0 miimon=80 mode=5
Ahora crearemos la interfaz virtual bond0. Creamos el archivo /etc/sysconfig/network-scripts/ifcfg-bond0:
DEVICE=bond0 IPADDR=192.168.1.100 NETMASK=255.255.255.0 NETWORK=192.168.1.0 BROADCAST=192.168.1.255 GATEWAY=192.168.1.1 ONBOOT=yes BOOTPROTO=none USERCTL=no
Una vez creada la interfaz virtual editamos nuestras dos interfaces físicas (eth0 y eth1) con este contenido:
# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=none USERCTL=no MASTER=bond0 SLAVE=yes # cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE=eth1 ONBOOT=yes BOOTPROTO=none USERCTL=no MASTER=bond0 SLAVE=yes
Ahora solo queda reiniciar y hacer pruebas de conectividad con los cables de red para comprobar que efectivamente no perdemos conexión si desconectamos eth0 o eth1.
Si hacemos un ifconfig, veremos como la interfaz virtual es la que coge la dirección IP:
bond0 Link encap:Ethernet HWaddr 00:1E:C9:D6:DA:6E inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::21e:c9ff:fed6:da6e/64 Scope:Link UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1 RX packets:5157067 errors:0 dropped:0 overruns:0 frame:0 TX packets:3927169 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:2601662632 (2.4 GiB) TX bytes:2306432451 (2.1 GiB) eth0 Link encap:Ethernet HWaddr 00:1E:C9:D6:DA:6E UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:3593230 errors:0 dropped:0 overruns:0 frame:0 TX packets:2807046 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2459234475 (2.2 GiB) TX bytes:2154634747 (2.0 GiB) Interrupt:194 Memory:dc000000-dc012800 eth2 Link encap:Ethernet HWaddr 00:1E:C9:D6:DA:72 UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1 RX packets:1563837 errors:0 dropped:0 overruns:0 frame:0 TX packets:1120123 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:142428157 (135.8 MiB) TX bytes:151797704 (144.7 MiB) Interrupt:170 Memory:d8000000-d8012800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:6917 errors:0 dropped:0 overruns:0 frame:0 TX packets:6917 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:6525082 (6.2 MiB) TX bytes:6525082 (6.2 MiB)
En el siguiente post veremos lo diferentes modos de funcionamiento del bonding y las precauciones que tenemos que tomar según el modo seleccionado.
Más información:
+ Linux Channel Bonding
2 comentarios:
cómo es que eth0 y eth1 tienen la misma MAC ?
saludos,
JM
es un error. Ya esta arreglado, gracias
hacer un comentario en esta entrada