INSTALACION DE DUPLA ARGENTO CON XEN EN

Anuncio
INSTALACION DE DUPLA ARGENTO CON XEN EN UBUNTU SERVER.
Juan Carlos Reyes
bajo licencia GPL [email protected] Caracas-Venezuela
En esta guía rápida trataré el tema de brazilfw y la dupla Argento bajo Xen,
para sacar el máximo provecho (según he leído) a xen, la mejor forma es la
paravirtualizacion, pero como bien sabemos el kernel de brazilfw esta en la
versión 2.4, el mismo no soporta el parche para correr en xen de forma
paravirtualizada, por lo que tendremos que hacerlo con full virtualización que
es más lento.
Empezamos con los “ingredientes” y pasos necesarios necesarios.
Necesitaremos un PC cuyo procesador provea instrucciones de virtualización,
y cuya tarjeta madre nos dé el porte para estas instrucciones, en este caso
de estoy usando:
•
•
•
•
Procesador AMD Athlon X2 AM2 4400+
1.5 GB RAM
Tarjeta Madre Asrock ALiveNF6P-VSTA
Disco Duro Sata2 80GB
La tarjeta madre fue de la gama media-baja que encontré con soporte para
virtualización las gamas bajas de MSI no lo tienen.
INSTALANDO UBUNTU Y XEN
Procedemos con la instalación de Ubuntu Server, en este caso para sacar
mejor provecho al procesador he usado la versión para AMD64 (también se
puede usar la versión i386 con este procesador) puedes bajarlo aquí
http://www.ubuntu.com/getubuntu/download
La instalación de Ubuntu es realmente sencilla y una vez instalado este, igual
la de XEN, si no tienes instalado el sistema puede ver aquí la forma de
hacerlo
http://www.howtoforge.com/perfect_setup_ubuntu_5.10_p2
Básicamente es el mismo procedimiento para la versión hardy 8.0.4 que es
la que trataremos en este manual, una vez instalado Ubuntu procedemos a
instalar XEN de la siguiente forma y con el comando siguiente
apt-get install ubuntu-xen-server
Una vez terminando el proceso de instalación procedemos a configurar xen
(dom0):
Al instalar XEN se crea en /etc dos carpetas xen y xen-tools, que tenemos
allí?
/etc/xen : Posee los archivos de configuración y los directorios
•
•
•
•
•
xend-config-xenapi.sxp
xend-pci-quirks.sxp
xend-config.sxp
auto (directorio)
script (directorio)
Nos avocaremos al archivo xend-config.sxp este es el archivo que nos
permite configurar el demonio xend, configuramos como queremos que
trabaje xen, las formas de trabajo son:
•
•
•
Como router
Como bridge
Como nat
Configuraremos según nuestras necesidades. Nos interesa crear un puente
ethernet que estará formado por una interfaz ethernet falsa para cada
máquina virtual y todas ellas unidas a la verdadera conexión ethernet. Si
contamos con una única interfaz la configuración es muy sencilla. Para esto
procedemos de la siguiente forma:
•
•
•
Comentaremos la directiva (network-script network-dummy)
Descomentaremos la directiva (network-script network-bridge).
También nos hará falta la directiva (vif-script vif-bridge), pero ésta ya
viene descomentada por defecto.
Descomentamos la directiva (vnc-listen '0.0.0.0') y cambiamos
127.0.0.1 por 0.0.0.0 para llegarle al vnc desde cualquier maquina.
Si nos interesa agrupar todas nuestras máquinas virtuales en una red
diferente, por ejemplo 192.168.0.x para dom0 y las demás máquinas físicas
de la red y 10.0.0.x para las máquinas virtuales, y luego usar DNAT con
iptables para enrutar el tráfico, necesitaremos usar las directivas (networkscript network-nat) y (vif-script vif-nat). Pero en el caso medio la solución
ofrecida por un ethernet bridge cubrirá nuestras necesidades.
Ya tenemos configurado nuestro demonio xend.
/etc/xen-tools: Posee los archivos de configuración y los directorios
• xen-tools.conf
• xm-nfs.tmpl
• xm.tmpl
• partitions.d (directorio)
• role.d (directorio)
• skel (directorio)
editamos el archivo y :
•
•
Descomentamos la directiva dir =/home/xen (se puede usar la ruta
que queramos)
Descomentamos la directiva passwd=1 (es en caso de querer montar
un Linux virtualizado, con esto al terminar nos pide que creemos una
clave root, puede dejarse como viene por defecto)
Todo listo, ahora procedemos a reiniciar el equipo, e iniciar con el kernel
XEN, una vez iniciado si todo ha marchado bien procedemos a verificar
nuestro kernel con
root@Server:/home/xen/domains/BRIDGE1# uname -a
Linux Server 2.6.24-19-xen #1 SMP Sat Jul 12 00:15:59 UTC 2008 x86_64
GNU/Linux
Ya tenemos nuestro kernel xen , para verificar que el dom0 esta ativo
hacemos
root@Server:/home/xen/domains/BRIDGE1# xm list
Name
Domain-0
ID
0
Mem VCPUs
1231
2
State
r-----
Time(s)
503.8
Listo!!! Ahora todo funciona como queremos y podemos empezar a montar
nuestra dupla.
Archivos de Configuración e Instalación de brazilfw
En este apartado procederemos a realizar el archivo de configuración que nos
permitirá crear nuestro servidor, no he inventado nada. Hay suficiente
documentación en la red como para completar todas las opciones que nos
den problemas en nuestra maquina y el S.O. que seleccionemos. Siempre se
pueden hacer cambios y personalizar tamaños, memorias, y configuraciones
de la situación de las maquinas. Esta configuración ha sido probada tal cual
aparece documentado. Si se necesita mas información se puede tomar como
referencia los documentos y faqs de cada aplicación y sus ejemplos.
El comando básico para administrar Xen es xm, el cual tiene una serie de
subcomandos que nos permite realizar las siguientes tareas:
•
•
•
•
•
xm
xm
xm
xm
xm
create nombre, inicia una máquina virtual
shutdown nombre, apaga una máquina virtual
reboot nombre, reinicia una máquina virtual
list, muestra las máquinas virtuales activas
console nombre, para acceder a la consola de un dominio
El siguiente es un archivo de configuración básico de una máquina virtual de
Xen:
kernel = "/boot/vmlinuz-2.6-xen"
memory = 64
name = "máquina1"
vif = [ ’bridge=xenbr0’ ]
disk = [ ’phy:/dev/hda7,hda1,w’,’phy:/dev/hda8,hda2,w’ ]
root = "/dev/hda1 ro"
ne2000=1
on_shutdown = "restart"
on_reboot = "restart"
on_crash = "destroy"
Pasemos a detallar los parámetros:
•
•
•
•
•
•
kernel: kernel que se utilizara para la máquina virtual. Es el que se
genera durante el proceso de compilación o el que viene con los
paquetes.
Memory: cantidad de memoria que le asignamos
Name: un nombre para la máquina virtual
Vif: parámetros de red, en este caso especificamos que la interfase
virtual del dominio se conectara al bridge llamado xenbr0 (este bridge
lo crea por defecto Xen para comunicar las máquinas virtuales entre si,
y a su vez con la red real a la cual esta conectado la máquina física).
Disk: configuración del disco virtual. Esa configuración indica que la
partición hda7 será el disco hda1 del dominio y la partición hda8 el
dispositivo hda2. El carácter "w" es para activar el acceso de lectura y
escritura.
Root: similar a los parámetros que se le pasan a un kernel de Linux
común, indica el root.
Esta configuración ya sirve como base para iniciar una máquina virtual. Para
mas detalles ver la pagina de manual xmdomain.cfg.
Nota: En la versión del
implementada, se usa ethx.
xen 3.2 la
denominación
xenbrx
no
esta
Nota2: En el caso de la opción disk phy se usa si se esta aplicando lvm o se
tiene un disco real para el servidor que vamos a virtualizar o al montar una
iso en loop, en caso de no ser esa la situación se usa file, pero para esta
versión basada en ubuntu se debe usar tap:aio: para el disco duro virtual y
phy para el cdrom virtual.
En este apartado explicaremos más a fondo la opción de
configuración vif
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth0','mac=00:16:3E:46
:F1:A5,bridge=eth1']
aqui vemos que esta formado por varias opciones:
•
•
•
Type: el tipo de virtualización en de las tarjeta de red que deseamos,
también se puede usar netfront
Mac: las mac de xe tienen el sufijo 00:16:3E los otros se generan de
forma aleatoria cada vez que creamos una maquina virtual en caso no
tener seteada esta opción, en este caso vemos que siempre se usara la
mac 00:16:3E:46:F1:A4.
Bridge :es el puente que usaremos para conectarnos virtualmente al
xen, este es el encargado de proveernos nuestas interfaces virtuales.
en este caso la interfaz eth0 se creara en nuestro brazilfw con
mac=00:16:3E:46:F1:A4 . Es importante saber como están
estructurados los bridge en nuestro xen y a que tarjeta física apuntan
para poder tener una buena configuración de los brazilfw en este caso
el bridge=eth0 apunta a la tarjeta física eth0 así que si queremos tener
equipos virtuales y llegarles desde la red LAN debe tener una interfaz
virtual apuntando a este bridge.
En el caso de la dupla si el ArgentoBR y el ArgentoQos apuntan al
bridge=eth0 es como colocar un switch y quedaría de la siguiente forma,
LAN
ArgentoQOS
ArgentoBR
Lo que no nos permitirá usar el ArgentorBR ya que ambas maquinas virtuales
estarían conectadas tanto a Internet como a la red LAN, para resolver esto
debemos desconectar el ArgentoQos de la LAN y al ArgentoBR de Internet y
crear una conexión entre ambos de forma tal que podamos obtener la
siguiente configuración
ArgentoQOS
LAN
ArgentoBR
Para esto creamos un nuevo bridge el cual utilizaran los dos equipos,
procedemos:
root@Server:/home/xen/domains/BRIDGE1# brctl addbr eth3
podemos ver que se creo
root@Server:/home/xen/domains/BRIDGE1# brctl show
Levantamos la interfaz creada
root@Server:/home/xen/domains/BRIDGE1# ifconfig eth3 up
Luego en los archivos de configuración de cada maquina procedemos a
setear el nuevo bridge de la siguiente forma:
En el ArgentoQOS en el apartado vif la interfaz virtual que ve hacia el bridge
eth0(que seria en nuestro caso el que ve hacia la LAN) le seteamos el nuevo
bridge
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth0','mac=00:16:3E:46:F1:A5,bridge=
eth1']
por
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth3','mac=00:16:3E:46:F1:A5,bridge=
eth1']
y en el ArgentoBR la interfaz que apunta hacia el bridge=eth1(en nuestro
caso internet) lo seteamos con el Nuevo bridge
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth0','mac=00:16:3E:46:F1:A5,bridge=
eth1']
por
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth0','mac=00:16:3E:46:F1:A5,bridge=
eth3']
con esto logramos la configuración que buscábamos… muy parecido a
vmware, asi se procede con cada maquina que queramos y configuración que
queramos usar o tener.
Nota: en caso de reiniciar todo el servidor los bridges creados se borran y las
maquinas virtuales no podrán iniciarse para esto creamos un script de la
siguiente forma, que nos permita iniciar los bridges que hayamos configurado
root@Server:/home/xen/domains/BRIDGE1# nano puentes
pegamos lo siguiente
#!/bin/sh
brctl addbr eth3
ifconfig eth3 up
guardamos, le damos permiso de ejecución
root@Server:/home/xen/domains/BRIDGE1# chmod +x puentes
copiamos al init
root@Server:/home/xen/domains/BRIDGE1# cp puentes /etc/init.d/
luego lo ponemos a iniciarse en los diferentes runlevels
root@Server:/home/xen/domains/BRIDGE1# update-rc.d puentes defaults
Adding system startup for /etc/init.d/puentes ...
/etc/rc0.d/K20puentes -> ../init.d/puentes
/etc/rc1.d/K20puentes -> ../init.d/puentes
/etc/rc6.d/K20puentes -> ../init.d/puentes
/etc/rc2.d/S20puentes -> ../init.d/puentes
/etc/rc3.d/S20puentes -> ../init.d/puentes
/etc/rc4.d/S20puentes -> ../init.d/puentes
/etc/rc5.d/S20puentes -> ../init.d/puentes
Con esto tenemos ya nuestro script y así evitamos problemas al reiniciar
Nota 2: En caso de poseer mas de una tarjeta física se debe crear un script
que nos permita levantarlas a todas, el siguiente script realiza esta operación
root@Server:/home/xen/domains/BRIDGE1# nano multinic
agregamos lo siguentes
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0 bridge=eth0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth1 bridge=eth1
"$dir/network-bridge" "$@" vifnum=2 netdev=eth2 bridge=eth2
Guardamos y le damos permiso de ejecución
root@Server:/home/xen/domains/BRIDGE1# chmod +x multinic
lo copiamos a /etc/xen/script
root@Server:/home/xen/domains/BRIDGE1# cp multinic /etc/xen/script
luego en el archivo de configuración de xen la directiva (network-script
network-bridge), la cambiamos por (network-script multinic), esto hace que
se inicien los diferentes bridges eth0, eth1, eth2 ..etc según se tenga en el
archivo creado.
OJO: al instalar cualquier brazilfw no realizar el cambio de bridge, debe
instalarse con las opciones
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,Bridge=eth0','mac=00:16:3E:46:F1:A5,bridge=
eth1']
una vez configurado según nuestro requerimiento hacer los cambios
descritos.
El archivo de configuración que nos permitirá empezar crear nuestro servidor
es el siguiente llamado br.cfg:
kernel='/usr/lib/xen/boot/hvmloader'
builder='hvm'
memory=512
name='BRIDGE1'
device_model='/usr/lib/xen/bin/qemu-dm'
#disk=[ 'tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w']
disk=['tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w','phy:/
dev/loop0,hdc:cdrom,r']
vif=['type=ioemu,mac=00:16:3E:46:F1:A4,
bridge=eth0','mac=00:16:3E:46:F1:A5,bridge=eth1']
boot='dc'
vnc=1
ne2000=1
on_shutdown = "restart"
on_reboot = "restart"
on_crash = "destroy"
La opción vnc=1 nos va a permitir conectarnos vía vncviewer a la máquina
virtual que se este creando, al iniciarse abrirá el puerto 5900 y de allí en
adelanta toda maquina que se cree sumara un puerto 5901, 5902, etc. , si y
sólo ya hay maquinas virtuales corriendo. Para poder usar esta opción se
debió configurar la directiva (vnc-listen '0.0.0.0') en el archivo de
configuración xend-config.sxp
file:/home/xen/domains/BRIDGE1/brazil.img
Para poder crear el archive brazil.img debemos usar el siguiente comando
dd if=/dev/zero of=brazil.img bs=1M count=10000
en este caso usaremos 10GB de espacio para hacer la partición cache y las
otras necesarias por eso en count el valor es 10000 si quieres más o menos
sólo auméntalo o disminúyelo.
OJO: todos los procedimientos descritos antes y los próximos se realizan en
consola vía ssh no hace falta interfaz gráfica en el servidor para realizar
esto.
Nos bajamos la imagen que queramos usar del brazilfw
Descomprimimos la imagen bajada
Procedemos a montar el archivo ISO de la siguiente forma
losetup /dev/loop0 /ruta/archivo.iso
Ahora si procedemos a crear la maquina virtual con:
xm create nombre_archivo.cfg
Podemos ver como se inicio correctamente la maquina virtual, ahora como en
el archivo de configuración tenemos la opción VNC=1 iniciamos una conexión
VNC al puerto 5901 como vemos en las figuras
El puerto 5900 pertenece al QOS que ya esta funcionando en xen, el 5901 al
brazil+argentobridge que vamos a instalar y configurar
Hecho esto nos aparece nuestra conexión vía vnc para continuar realizado la
instalación como veremos en las imágenes siguientes… ya de aquí en
adelante es más que conocido cómo instalar nuestro brazilfw
Nota: una vez finalizada la instalación que nos pide reiniciar aceptamos
cuando se reinicie el brazilfw que se caiga la conexión VNC tipeamos el
siguiente comando
Xm destroy nombre_de_la_maquina_virtual (ejm)
Xm destroy BRIDGE1
Esto lo hacemos para luego en el archivo de configuración proceder a
cambiar lo siguiente:
#disk=[ 'tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w']
disk=['tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w','phy:/
dev/loop0,hdc:cdrom,r']
por:
disk=[ 'tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w']
#disk=['tap:aio:/home/xen/domains/BRIDGE1/brazil.img,ioemu:hda,w','phy:
/dev/loop0,hdc:cdrom,r']
note que la primera línea ahora esta descomentada y la segunda comentada
esto es para que el brazilfw inicie desde el “disco duro” y no desde el cdrom,
una vez hecho el cambio volvemos a crear la maquina virtual con
xm create nombre_del_archivo_.cfg
Listo tenemos brazilfw esperando para por configurar argentoBridge
Para que las maquinas virtuales se inicien automáticamente al reiniciar todo
el equipo procedemos de la siguiente forma
root@Server:/home/xen/domains/BRIDGE1# cd /etc/xen/auto
root@Server:/ etc/xen/auto# ln –s /ruta/archivo.cfg
Bibliografía
Pagina del proyecto Xen en la Universidad de Cambridge
• http://www.cl.cam.ac.uk/research/srg/netos/xen/
Xensource, empresa que mantiene Xen y brinda algunos productos
comerciales.
• http://www.xensource.com/
Wiki de Xen, aqui podemos entrar documentación interesante y links
a artículos y presentaciones.
• http://wiki.xensource.com/
Descargar