martes, 5 de noviembre de 2013

Crear network-bridges en Xen 4.1 usando Debian Wheezy

1.   BRIDGE

Un bridge en el ambiente de redes es un dispositivo que une dos o más segmentos de red de forma transparente, por ende un bridge es independiente de cualquier protocolo de red o transporte, ya que actúa únicamente en la capa 2.

Un bridge no re-enruta paquetes como lo haría un router por el contrario al trabajar únicamente en la capa 2 del modelo OSI, este se dedica a aprender las direcciones MAC de las máquinas conectadas a él, direcciones que luego utiliza para comunicar una estación con otra separando a ambas en dominios de colisiones distintos.

2.   ALCANCE

Básicamente el alcance de este documento tiene como finalidad crear una interfaz tipo Bridge en una interfaz física para el balanceo de cargas en máquinas virtuales de Xen 4.1 en Debian Wheezy, ya que los scripts que Xen 4.1 trae por default tienen errores para generar dicha solución en esta distribución.

3.   SISTEMA OPERATIVO

La presente instalación, se la hará en un Sistema Operativo Linux, Distribución Debian, Versión 7 (Squeeze).

4.   PAQUETES INSTALADOS

bridge-utils (Mismo que se encuentra al instalar Xen 4.1)

5.   INSTALACIÓN DEL PAQUETE

Primeramente instalar el paquete (Si es que aún no está instalado):

# apt-get install bridge-utils

Ahora previo a la configuración de las interfaces físicas y puentes, verificar que el script network-bridge, propio de xen, esté configurado por default.

5.1.     CONFIGURACIÓN DE INTERFACES

Identificar el número de interfaces físicas de red en el equipo. Luego editar el archivo:

# nano /etc/udev/rules.d/70-persistent-net.rules

Y se verán las n interfaces de red que se tienen conectadas al equipo. En este ejemplo se ven 2 interfaces:

# PCI device 0x1186:/sys/devices/pci0000:00/0000:00:1e.0/0000:03:00.0 (skge)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:21:91:91:82:38", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:19.0 (e1000e)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="70:71:bc:19:44:99", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

Donde NAME=”ethx” determina el nombre de la interfaz. Ahora con la interfaz eth0 no existe problemas con el script de network-bridge de xen, así que nos centraremos en las demás interfaces donde se desea crear el puente, en este caso eth1 se renombrará a peth1, para trabajar bajo el mismo esquema de la eth0 que se verá más adelante.

Cambiar:

NAME="eth1"

Por:

NAME="peth1"

Para que tome los efectos necesarios, se debe reiniciar el equipo. Una vez reiniciado, verificar que efectivamente se cambió el nombre del dispositivo con el comando:

# dmesg | grep eth

Aquí se podrá verificar que

[    6.050968] udevd[426]: renamed network interface eth1 to peth1

Ahora el siguiente paso será crear el script de inicio que permita levantar las interfaces de red al inicio y el puente de la interfaz peth1. Para ello crear el archivo

# nano /etc/init.d/red.sh

Y pegar el siguiente contenido

#!/bin/bash
### BEGIN INIT INFO
# Provides: red
# Required-Start: $syslog $remote_fs xen
# Required-Stop: $syslog $remote_fs $network
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: LEVANTA INTERFACES DE RED SOLUCIONANDO EL PROBLEMA DEL SCRIPT DE XEN 4.1
### END INIT INFO

# EN ESTA SECCION SE LEVANTAN LAS INTERFACES DE RED FÍSICAS
/etc/init.d/networking stop
echo "eth0=eth0" >> /etc/network/run/ifstate
echo "peth1=peth1" >> /etc/network/run/ifstate
ifdown eth0
ifdown peth1
ifup eth0
ifup peth1

# EN ESTA SECCION SE CREA LA INTERFAZ TIPO BRIDGE PARA PETH1
brctl addbr eth1
brctl addif eth1 peth1
ifconfig eth1 up

Grabar el archivo y ejecutar:

insserv red

Y con esto quedará creado el script de inicio para que se levanten las interfaces de red y su respectivo puente.

Ahora para verificar que los puentes están creados en la respectiva interfaz de red, ejecutar:

root@debian:/etc/xen# brctl show

Y deberá desplegarse una información similar a esto:

bridge name  bridge id           STP enabled  interfaces
eth0          8000.002191918238   no           peth0
eth1         8000.7071bc194499   no           peth1

Donde nos indica el nombre del bridge, el id, y cual interfaz física está sirviendo como switch.

Finalmente, ejecutar una máquinas virtual utilizando cada bridge configurado y volver a ejecutar brctl show, y se deberá visualizar algo similar a esto:

bridge name  bridge id           STP enabled  interfaces
eth0         8000.002191918238   no           peth0
                                               vif1.0
eth1         8000.7071bc194499   no           peth1
                                               vif8.0

Donde se pueden ver las distintas interfaces virtuales vif que utilizan los distintos puentes peth.


6.   RECOMENDACIONES