Tag Archives: Linux

Auto inicio de dominios en Xen

Algo muy útil es iniciar/apagar automáticamente dominios XEN cuando se reinicia o apaga el anfitrión (dom0), cuando se instala XEN, por defecto deberemos ver creado un directorio llamado /etc/xen/auto

En este directorio el script /etc/init.d/xendomains buscará las configuraciones de las máquinas virtuales a iniciar/detener estos pueden ser vínculos simbólicos a las verdaderas configuraciones.

Para que todo esto suceda en primer lugar debes de tener el script /etc/init.d/xendomains que se instala junto con /etc/init.d/xend

También debes haber habilitado el inicio de este script con el siguiente comando:

update-rc.d xendomains defaults 21 20

 
El script /etc/init.d/xendomains necesita del archivo de configuración: /etc/sysconfig/xendomains

En este verás una línea que contiene:

XENDOMAINS_AUTO=/etc/xen/auto

Con esto definimos el directorio donde se buscarán los dominios que se auto iniciarán

Solución a “Failed to find an unused loop device”

En Xen, si no configuras de antemano linux verás que después de iniciar varios servidores virtuales te marcará un error que dice: “Failed to find an unused loop device

Esto significa que linux ya no tiene “lugar” para montar más dispositivos loop (montar tu disco duro virtual o swap), por defecto tienes ochos dispositivos loop permitidos, que son para cuatro máquinas virtuales (debido a que utilizan al menos dos imágnes, una para el swap y otra para el disco duro)

Para aumentar este límite es muy fácil, primero detienes las instancias virtuales de Xen:

/etc/init.d/xendomains stop

Agregas al archivo /etc/modprobe.d/local-loop lo siguiente (o crealo si no existe):

options loop max_loop=64

Después vuelves a cargar el módulo

rmmod loop
modprobe loop

Por último inicias las instancias virtuales

/etc/init.d/xendomains start

Con esto puede tener hasta 32 instancias de Xen sin problemas.

Ruteo en Xen

Hace poco instalé un servidor Xen, después para terminar de configurarlo solicitamos IP’s adicionales para que cada servidor virtual tuviera su IP dedicada.

Lamentablemente nos dieron IPs en otra subred, esto puede ocasionar algunos problemas pero aqui está una solución =)

Vamos a suponer que nuestro servidor Xen tiene ip 192.168.1.90 y que nuestras nuevas ips a asignar son 192.168.247.130 y 192.168.247.131, y que el gateway de nuestra máquina anfitrión es 192.168.1.1

 

Configuración de Xen

Debido a que en mi caso necesitaba rutear los datos entre mi máquina anfitrión (dom0) y mis máquinas virtuales (domU) habilité lo siguiente en xen:

(network-script network-route)
(vif-script vif-route)

Tanto network-script  y vif-script deben ser las únicas configuraciones disponibles (esto es comentar todos los otro network-script y vif-script)

 

Reiniciamos el servidor Xen:

/etc/init.d/xend restart
/etc/init.d/xendomains restart 

Es muy importante que verifiques si te marca un error, ya que a mi me mandaba un error por un script que no reconocía la interfaz que ibamos a utilizar, así que hice el siguiente cambio en el archivo: /etc/xen/scripts/network-route

dir=$(dirname "$0")

. "$dir/xen-script-common.sh"

evalVariables "$@"

 

#netdev=${netdev:-eth${vifnum}}

netdev=eth0 #definir por defecto la interfaz a utilizar

echo 1 >/proc/sys/net/ipv4/ip_forward
echo 1 >/proc/sys/net/ipv4/conf/${netdev}/proxy_arp

 

Básicamente lo que hace el script de Xen es habilitar el ruteo en linux y crear unas reglas de iptables (que tu puedes configurar si quieres personalizar el rendimiento o seguridad de tus máquinas virtuales por medio del anfitrión)

Ya por último debes borrar el puente que hace Xen en la configuración por defecto de bridge (usando el comando brctl)

 

Configuración de la Imagen

Al crear la imagen. proporciona la IP, el gateway de tu máquina anfitrión (dom0) y la máscara de red correspondiente, en nuestro ejemplo 255.255.0.0, ejemplo:

xen-create-image --hostname=misitio.com --ip=192.168.247.130 --netmask=255.255.0.0 --gateway=192.168.1.1 --passwd

 

Con esto tus máquinas clientes podrán ser vistas y accesar a internet sin problemas.

Xen 3.3 y Debian Etch

Recientemente me tocó configurar un servidor para tener máquinas virtuales mediante XEN. Anteriormente sólo había trabajado con un poco con VMWare ESXi y XenServer (la versión “comercial” de XEN), el problema es que se tenía que instalar en un servidor remoto que solo se tiene acceso mediante ssh.

Con algo de trabajo y pruebas (y con las buenas herramientas de ServerBeach, que sólo le faltan una vista a la consola para diagnosticar kernel panics) por fin pude instalarlo.

Debian tiene una versión de Xen, pero es la 3.0.3 que para mi gusto es demasiado vieja (se liberó en 2006) y la versión Lenny (testing) tiene la versión 3.2, pero también algo “inestable” a mi gusto para un servidor de batalla.

Como dije después de hacer varias pruebas logré instalar la versión Xen 3.3 utilizando el kernel que viene en Debian preparado para Xen.

Una breve descripción de Xen, es que está separado en varias partes, en primer lugar Xen tiene un kernel modificado para llevar a cabo la virtualización, la ventaja es que la versión 3.3 utiliza la versión 2.6.18 que es la que viene con Debian.

Después la parte “fuerte” de Xen es el denominado hypervisor que es un servidor que se encarga de hacer la virtualización propiamente dicha. Después vienen las máquinas virtuales que utilizan por lo general otro kernel que se denomina domU (y el kernel de la máquina base se denomina dom0).

Pues bien, para lograr esto simplemente primero instalé la imagen del kernel apropiado y compilar solamente el hypervisor de Xen 3.3

En pasos simples:

#Instalar la imagen del kernel con parche para xen
apt-get install linux-image-2.6.18-6-xen-amd64

#Descargar el código fuente de xen
wget http://bits.xensource.com/oss-xen/release/3.3.0/xen-3.3.0.tar.gz
tar zxvf xen-3.3.0.tar.gz
cd xen-3.3.0

#Compilar solamente el hypervisor
make xen
make install-xen

#Compilar los archivos ejecutables como xm y herramientas de red
make tools
make install-tools

#Hacer que Debian cree las entradas correspondientes en los rc.X
#para que cuando el servidor se inicie ejecute los servidores de Xen
update-rc.d xend defaults 20 21
update-rc.d xendomains defaults 21 20

#Hacer que grub reconozca el nuevo kernel con la configuración de Xen 3.3.0
update-grub

Con eso deberían de ver una entrada en el grub como:

title           Xen 3.3.0 / Debian GNU/Linux, kernel 2.6.18-6-xen-amd64
root            (hd0,0)
kernel          /xen-3.3.0.gz
module          /vmlinuz-2.6.18-6-xen-amd64 root=/dev/sda6 ro console=tty0
module          /initrd.img-2.6.18-6-xen-amd64
savedefault

Que debería de bootear con el hypervisor 3.3

Incluyo algunas ligas de sitios (en inglés) que me ayudaron muchísimo para entender algo más de Xen ;)

Consejo para actualizar la hora y fecha en Linux

Aqui les dejo un comando cuya finalidad es actualizar la hora y fecha actual utilizando un servidor de tiempo (ptocolo NTP):

/usr/sbin/ntpdate time.nist.gov

obviamente necesitan privilegios de administrador para ejecutarlo y necesitan que su configuración de linux esté en la zona horaria correspondiente