Hace aproximadamente 8 años realice esta guía en lo que fue los primeros pasos realizados con xen, esta guía la escribí para usar un firewall llamado brazilfw desde entonces es mucho lo que ha cambiado. Hoy vamos a configurar xen con debian usando lvm y openvswitch para el manejo de la red.
Antes de instalar Xen deberás instalar Debian en la maquina principal (host). Esta instalación será de forma básica para el Domain 0. La instalación de Debian puede ser hecha de una manera normal usando el DebianInstaller. Asumiré que ya tienes instalado debian con una partición LVM que configuraremos mas adelante.
Antes de instalar Xen deberás instalar Debian en la maquina principal (host). Esta instalación será de forma básica para el Domain 0. La instalación de Debian puede ser hecha de una manera normal usando el DebianInstaller. Asumiré que ya tienes instalado debian con una partición LVM que configuraremos mas adelante.
Instalación y configuración de LVM
Al momento de realizar la instalación de debian, se debe deja una partición tipo LVM, que es la que usaremos para crear las maquinas virtuales. Para usar lvm debemos instalar el paquete
# aptitude install lvm2
|
# fdisk -l
Disco /dev/sda: 931,5 GiB, 1000204886016 bytes, 1953525168 sectores
Disposit. Inicio Comienzo Final Sectores Tamaño Id Tipo
/dev/sda1 * 2048 206847 204800 100M 7 HPFS/NTFS/exFAT
/dev/sda2 206848 1024002047 1023795200 488,2G 7 HPFS/NTFS/exFAT
/dev/sda3 1024004094 1953523711 929519618 443,2G 5 Extendida
/dev/sda5 1024004096 1123416063 99411968 47,4G 83 Linux
/dev/sda6 1951543296 1953523711 1980416 967M 82 Linux swap / Solaris
/dev/sda7 1123418112 1318727679 195309568 93,1G 83 Linux
/dev/sda8 1318729728 1951528959 632799232 301,8G 8e Linux LVM
en nuestro caso esta partición es /dev/sda8, ya con este dato ponemos a tono el equipo.
1) Se crea un volumen físico
# pvcreate /dev/sda8
Physical volume "/dev/sda8" successfully created
si revisamos este punto podemos ver que se ha creado el volumen físico
2) creamos un grupo de volumenes
# vgcreate nube /dev/sda8
Volume group "nube" successfully created
de igual forma podemos verificar que se creo el grupo de volumen.
Si deseas conocer mas a fondo el uso de LVM esta guia es muy completa en español y esta otra de la wiki debian.
Instalación inicial de XEN
La instalación de xen es realmente sencilla, procedemos a realizar la misma de la siguiente forma
# aptitude install xen-linux-system-amd64 xen-tools
Configuración de xen
editamos el archivo xl.conf, como la idea es usar openvswitch cambiamos o agregamos las lineas.
vif.default.script="vif-openvswitch"
y la otra
vif.default.bridge="ovsbr0"
puedes llamar al bridge como quieras.
Pero debes tener en cuenta el nombre cuando configures openvswitch
Luego editamos el archivo xend-config.sxp
vi xend-config.sxp
igual cambiamos vif-script vif-bridge por
vif-script vif-openvswitch
existen otros parámetros que podríamos configurar aquí como:
cantidad de CPUs asignados al Dom0
Dom0-cpus
total de memoria disponible
total_avaible_memory
memoria mínima asignada al Dom0
Dom0_min_mem
activar la conexion vnc (esta opción es muy recomendada si se va a virtualizar
algún sistema operativo con núcleo no modificado, como windows)
vnc-listen
Ahora editamos el archivo xen-tools.conf y configuramos lvm para usarlo por defecto
para crear las MV.
descomentamos la opción lvm y le colocamos el nombre del volumen lvm creado.. en este caso nube
quedaría así..
Aquí podríamos cambiar muchas cosas y definir los parámetros a usar cuando creamos las MV
pero generalmente solo toco este punto y al momento de crear las MV por consola defino las características de la misma.
Buenas prácticas
Limitar y proteger el uso de memoria y CPUs de la dom0
Como usuario root editar el archivo /etc/default/grub, tal como se muestra a continuación. En el ejemplo, se limita el uso de memoria a 512 MB y a un solo núcleo
vi /etc/default/grub
Agregar la siguiente línea
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M,max:512M dom0_max_vcpus=1"
Según la wiki de Xen,
se recomienda que se dedique explícitamente el núcleo del CPU a usar,
sobre todo cuando los guest vayan a tener operaciones IO intensivas. En
general, especificar el núcleo del CPU reduce los cambios de contextos,
lo que supone alguna mejora en el rendimiento. En ese caso, la línea
queda de la siguiente manera:
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=512M,max:512M dom0_max_vcpus=1 dom0_vcpus_pin"
Actualizar la configuración de GRUB ejecutando como root la siguiente orden.
update-grub2
En Debian Jessie
Como usuario root editar el archivo /etc/xen/xend-config.sxp, tal como se muestra a continuación.
vi /etc/xen/xend-config.sxp
Agregar o modificar las siguientes líneas
(dom0-min-mem 512)
(dom0-cpus 1)
Instalación y configuración de Openvswitch.
instalamos openvswitch con el siguiente comando# aptitude install openvswitch-switch
vemos que openvswitch se ha instalado con el comando
# ovs-vsctl show
a319db3c-5ad9-4ac9-bdb9-d434b594b6bd
Bridge "ovsbr0"
ovs_version: "2.6.2"
a319db3c-5ad9-4ac9-bdb9-d434b594b6bd
Bridge "ovsbr0"
ovs_version: "2.6.2"
ya tenemos lo que necesitamos listo. Procedemos a configurar openvswtich.
1) creamos el bridge ovsbr0
# ovs-vsctl add-br ovsb0
2) configuramos la interfaz de red física a usar. editando el archivo /etc/network/interfaces
# vi /etc/network/interfaces
auto lo ovsbr0 enp5s0
iface lo inet loopback
allow-ovs ovsbr0
iface ovsbr0 inet static (nota: también se puede configurar como dhcp)
address 192.168.20.103
netmask 255.255.255.0
gateway 192.168.20.1
ovs_type OVSBridge
ovs_ports enp5s0
allow-ovsbr0 enp5s0
iface enp5s0 inet manual
ovs_bridge ovsbr0
ovs_type OVSPort
iface lo inet loopback
allow-ovs ovsbr0
iface ovsbr0 inet static (nota: también se puede configurar como dhcp)
address 192.168.20.103
netmask 255.255.255.0
gateway 192.168.20.1
ovs_type OVSBridge
ovs_ports enp5s0
allow-ovsbr0 enp5s0
iface enp5s0 inet manual
ovs_bridge ovsbr0
ovs_type OVSPort
Configuramos el bridge que habíamos definido en el archivo xl.conf de xen. Guardamos y salimos.
El próximo paso es agregar la interfaz al bridge en openvswitch
# ovs-vsctl add-port ovsbr0 enp5s0
hay que tener en cuenta que si se lanza este comando y estamos conectados al servidor con la interfaz asociada se perderá la conexión.
luego revisamos como ha quedado configurada la red.
una vez terminado todo esto configuramos grub y reiniciamos
vi /etc/default/grub
# Disable OS prober
GRUB_DISABLE_OS_PROBER=true
#allocate memory to dom0
Guardamos y salimos, luego hacemos
mv -i /etc/grub.d/20_linux_xen /etc/grub.d/09_linux_xen
update-grub
shutdown -r now
Esto nos permite que se inicie el sistema con la imagen de xen por defecto. Al reiniciar el equipo
verificamos que este corriendo xen
# xl lis
Name ID Mem VCPUs State Time(s)
Domain-0 0 1018 1 r----- 41.5
Creamos las Maquinas Virtuales.
vamos a crea un maquina con el siguiente conmando
# xen-create-image --hostname=siglas --ip=172.31.91.200 --memory=6GB --size=50GB
--hostname: nombre de la maquina virtual, es mandatorio.
--ip: dirección que usara la maquina virtual, es mandatorio, se puede usar esta opcion o la opcion --dhcp
--memory: Cantidad de memoria que se le asignara a la maquina virtual, si no se define aqui, se tomara por defecto la configurada en el archivo /etc/xen-tools/xen-toosl.conf
--size: Tamaño de la particion lvm que usará la maquina virtual, si no se define aqui, se tomara por defecto la configurada en el archivo /etc/xen-tools/xen-toosl.conf
Tambien podriamos definir desde aqui la distribucion a usar, el tamaño de la memoria swap, etc. De no hacerlo en la linea de comando igual tomará por defecto lo configurado en el archivo xen-tools.conf
veremos algo así (según la conexión, esto toma tiempo)
# xen-create-image --hostname=siglas2 --ip=172.31.91.200 --memory=6GB --size=50GB
WARNING: No gateway address specified!
WARNING: No netmask address specified!
General Information
--------------------
Hostname : siglas
Distribution : jessie
Mirror : http://ftp.de.debian.org/debian/
Partitions : swap 512M (swap)
/ 50GB (ext4)
Image type : full
Memory size : 6GB
Kernel path : /boot/vmlinuz-3.16.0-4-amd64
Initrd path : /boot/initrd.img-3.16.0-4-amd64
Networking Information
----------------------
IP Address 1 : 172.31.91.200 [MAC: 00:16:3E:22:07:40]
Creating swap on /dev/nube/siglas-swap
Done
Creating ext4 filesystem on /dev/nube/siglas-disk
Done
Installation method: debootstrap
Mirror : http://ftp.de.debian.org/debian/
Partitions : swap 512M (swap)
/ 50GB (ext4)
Image type : full
Memory size : 6GB
Kernel path : /boot/vmlinuz-3.16.0-4-amd64
Initrd path : /boot/initrd.img-3.16.0-4-amd64
Networking Information
----------------------
IP Address 1 : 172.31.91.200 [MAC: 00:16:3E:22:07:40]
Creating swap on /dev/nube/siglas-swap
Done
Creating ext4 filesystem on /dev/nube/siglas-disk
Done
Installation method: debootstrap
Done
Running hooks
Done
No role scripts were specified. Skipping
Creating Xen configuration file
Done
No role scripts were specified. Skipping
Setting up root password
Generating a password for the new guest.
All done
Logfile produced at:
/var/log/xen-tools/siglas.log
Installation Summary
---------------------
Hostname : siglas
Distribution : jessie
MAC Address : 00:16:3E:22:07:40
IP Address(es) : 172.31.91.200
RSA Fingerprint : 27:d1:95:2d:5c:aa:f8:b5:0b:0e:13:d6:08:ef:f0:b3
Root Password : 9nVvYzLfYBQwGWRgAsqk5dr
Running hooks
Done
No role scripts were specified. Skipping
Creating Xen configuration file
Done
No role scripts were specified. Skipping
Setting up root password
Generating a password for the new guest.
All done
Logfile produced at:
/var/log/xen-tools/siglas.log
Installation Summary
---------------------
Hostname : siglas
Distribution : jessie
MAC Address : 00:16:3E:22:07:40
IP Address(es) : 172.31.91.200
RSA Fingerprint : 27:d1:95:2d:5c:aa:f8:b5:0b:0e:13:d6:08:ef:f0:b3
Root Password : 9nVvYzLfYBQwGWRgAsqk5dr
Ya tenemos creada la maquina virtual si verificamos el volumen lógico de lvm, debemos tener creados los discos de dicha maquina virtual
# lvdisplay
--- Logical volume ---
LV Path /dev/nube/siglas-swap
LV Name siglas-swap
VG Name vg0
LV UUID wW7HwM-SVs9-0ZBM-WDpo-AQkV-FORR-mKB9eF
LV Write Access read/write
LV Creation host, time kannon, 2017-01-06 21:32:03 -0400
LV Status available
# open 1
LV Size 512,00 MiB
Current LE 16
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Path /dev/nube/siglas-disk
LV Name siglas-disk
VG Name vg0
LV UUID eW4mOM-HATa-eMQx-8RiK-6RvH-DGW8-xpTU0k
LV Write Access read/write
LV Creation host, time kannon, 2017-01-06 21:32:04 -0400
LV Status available
# open 1
LV Size 50,00 GiB
Current LE 1600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
--- Logical volume ---
LV Path /dev/nube/siglas-swap
LV Name siglas-swap
VG Name vg0
LV UUID wW7HwM-SVs9-0ZBM-WDpo-AQkV-FORR-mKB9eF
LV Write Access read/write
LV Creation host, time kannon, 2017-01-06 21:32:03 -0400
LV Status available
# open 1
LV Size 512,00 MiB
Current LE 16
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:0
--- Logical volume ---
LV Path /dev/nube/siglas-disk
LV Name siglas-disk
VG Name vg0
LV UUID eW4mOM-HATa-eMQx-8RiK-6RvH-DGW8-xpTU0k
LV Write Access read/write
LV Creation host, time kannon, 2017-01-06 21:32:04 -0400
LV Status available
# open 1
LV Size 50,00 GiB
Current LE 1600
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 254:1
Ahora solo nos queda configurar la interfaz bridge con la que iniciaremos la MV e iniciar la Maquina virtual con el comando xl
vi /etc/xec/siglas.conf
vif = [ 'ip=172.31.91.200 ,mac=00:16:3E:72:B9:23, bridge=ovsbr0' ]
Guardamos y ahora si iniciamos la maquina virtual
# xl create /etc/xen/siglas.conf
si todo ha ido bien, podemos ver como la maquina virtual esta corriendo.
# xl list
Name ID Mem VCPUs State Time(s)
Domain-0 0 1018 1 r----- 251.4
siglas 2 6144 1 -b---- 193.1
Name ID Mem VCPUs State Time(s)
Domain-0 0 1018 1 r----- 251.4
siglas 2 6144 1 -b---- 193.1
hacemos ping a la ip configurada
$ ping 172.31.91.200
PING 172.31.91.200 (172.31.91.200) 56(84) bytes of data.
64 bytes from 172.31.91.200: icmp_seq=1 ttl=63 time=0.768 ms
64 bytes from 172.31.91.200: icmp_seq=2 ttl=63 time=0.681 ms
64 bytes from 172.31.91.200: icmp_seq=3 ttl=63 time=0.497 ms
64 bytes from 172.31.91.200: icmp_seq=4 ttl=63 time=0.547 ms
64 bytes from 172.31.91.200: icmp_seq=5 ttl=63 time=0.642 ms
64 bytes from 172.31.91.200: icmp_seq=6 ttl=63 time=0.502 ms
64 bytes from 172.31.91.200: icmp_seq=7 ttl=63 time=0.481 ms
64 bytes from 172.31.91.200: icmp_seq=8 ttl=63 time=0.512 ms
PING 172.31.91.200 (172.31.91.200) 56(84) bytes of data.
64 bytes from 172.31.91.200: icmp_seq=1 ttl=63 time=0.768 ms
64 bytes from 172.31.91.200: icmp_seq=2 ttl=63 time=0.681 ms
64 bytes from 172.31.91.200: icmp_seq=3 ttl=63 time=0.497 ms
64 bytes from 172.31.91.200: icmp_seq=4 ttl=63 time=0.547 ms
64 bytes from 172.31.91.200: icmp_seq=5 ttl=63 time=0.642 ms
64 bytes from 172.31.91.200: icmp_seq=6 ttl=63 time=0.502 ms
64 bytes from 172.31.91.200: icmp_seq=7 ttl=63 time=0.481 ms
64 bytes from 172.31.91.200: icmp_seq=8 ttl=63 time=0.512 ms
--- 172.31.91.200 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 6997ms
rtt min/avg/max/mdev = 0.481/0.578/0.768/0.102 ms
Realizando pruebas con el navegador podemos chequear que la maquina virtual ya es parte de la red existente.
No hay comentarios:
Publicar un comentario