Investigación: Maquinas virtuales

De Departamento de Informatica
Saltar a: navegación, buscar

Esta sección se mostrará la instalación y utilización de Xen y OpenStack.

Contenido

Xen

Documentación realiza bajo Xen 3, Centos 5 con Kernel 2.6.18-274.12.1.el5xen. Xen es una maquina virtual para ordenadores x86 y x86_64 que permite ejecutar múltiples máquinas virtuales, cada una con su propio sistema operativo, y lo hace con un rendimiento prácticamente idéntico a una ejecución nativa de ese sistema. Normalmente se sufre una penalización del 2% y en casos extremos del 8%. Para ejecutar un sistema operativo sobre Xen este debe sufrir ligeras modificaciones para adaptarse a su API, pero una vez modificado el sistema operativo el resto de aplicaciones no debe sufrir ningún tipo de cambio, siendo esta una de las grandes características de Xen frente a otros para virtualizadores, un gran rendimiento sin modificar aplicaciones y librerías.

Cosas considerar en el Host

El host no es mas que un núcleo del Linux modificado. El sistema base que usaremos como host conocido en Xen como Dom0 es a su vez una maquina virtual; la primera en arrancar y que posee permisos especiales sobre el hardware y el resto de las maquinas virtuales (conocidas como Guests).

Una vez aclarado esto, establecemos que es extremadamente necesario que el Dom0 sea un sistema ligero sin muchos servicios. Este Dom0 no necesita, por lo tanto, mucho espacio en el disco para existir. Entonces lo instalaremos en una partición de 5GB o 10GB lo mas. El resto del disco debería estar vacío bajo el control de LVM.

Aqui LVM es importarte. Cada maquina virtual se alojara en una partición LVM independiente. Esto nos permitiera administrar el disco entregado a cada maquina de forma mas ordena y flexible. (Por ejemplo si una partición asignada a una maquina virtual nos queda chica o grande podremos redimensionarla). Ejemplo de lo anterior:

Creación de una máquina virtual

Creación del disco

¿Porque usar LVM?

  • Administrar un sistema con muchos discos es un trabajo que consume tiempo, y se hace particularmente complejo si el sistema contiene discos de distintos tamaños. Balancear los requerimientos de almacenamiento de distintos usuarios (a menudo conflictivos) puede ser una tarea muy laboriosa y compleja.
lvcreate -L30GB -nVirtual01 HostVirtualizador 

La ruta de nuevo disco será: /dev/HostVirtualizador/Virtual01 .

Creación de la máquina

Xen tiene script para simplificar el trabajo como virt-install

virt-install --prompt
what is the name of your virtual machine? test01
How much RAM should be allocated (in megabytes)? 256
What would you like to use as the disk (file path)? /dev/HostVirtualizador/Virtual01 . 
Would you like to enable graphics support? (yes or no) no
What is the install location? ftp://ftp.inf.utfsm.cl/pub/Linux/CentOS/6.3/os/i386/

Luego de esto comenzar la instalación típica de CentOS 6.3 en este caso.

Configuración

Xen genera un archivo de configuración por cada maquina. En la ruta: /etc/xen/ Por ejemplo aquí observamos un ejemplo:

name = "super_vm"
uuid = "4fb0a55e-804b-6a40-041a-61baf25aa25c"
maxmem = 1024
memory = 1024
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [  ]
disk = [ "phy:/dev/host/disco1,xvda,w","phy:/dev/host/disco2,xvdb,w","phy:/dev/host/disco3,xvdc,w","phy:/dev /host/disco4,xvdd,w","phy:/dev/carretas/disco5,xvde,w" ]
vif = [ "mac=FF:FF:FF:FF:FF:FF,bridge=xenbr0" ]

Lo que observamos que permite configurar:

  • Nombre de la máquina
  • Id
  • Memoria asignada
  • Numero de cpu.
  • El gestor de arranque
  • vfb: permite usar vnc, para ver mas: Configurar vnc
  • Discos: permite añadir discos.
  • Red: Generar la mac y puente de la interfaz.

Configurar vnc

En el archivo de configuración

vfb = [ 'type=vnc,vncdisplay=10,vncpasswd=pass' ]

Luego para conectar al vnc

vncviewer <IP Address of Xen Host>:5901

Tenga cuidado la configuración de firewall.

Interfaz de uso

Listas las máquinas creadas el host.

xm list 
Name                                      ID   Mem VCPUs      State   Time(s)
Domain-0                                   0   389     1     r-----   1414.9
XenFed                                         305     1               349.9
myFedoraXen                                    300     1                 0.0
myXenGuest                                 6   300     1     -b----     10.6
  1. r: running: La máquina se encuentra corriendo.
  2. b: blocked: La máquina se encuentra bloqueada, osea no se encuentra disponible para correr. Tradicional es debido a la espera de un dispositivo I/O.
  3. p: paused: La máquina está pausada, esto es permitido por xpause.
  4. s: shutdown: La máquina se encuentra apagada, suspendida o reiniciada. Esto es debido al usar xm destroy.
  5. c: crashed: La máquina está "crasheada", probablemente se debe a problemas de configuración de la máquina
  6. d: dying: La máquina esta en proceso de morir, pero aún no ha muerto (apagado, reinicio u otro)

Permite iniciar una máquina.

xm create server

Permite desconectar, no eliminar una máquina. Forzar la detención del sistema sin importa el kernel

xm destroy server

Envía la señal de apagada a la máquina.

xm shutdown server

Envía la señal del reinicio

xm reboot server

Guardar un snapshot de una máquina.

xm save server snapshot

Vuelve la máquina al estado del snapshot.

xm restore snapshot

Permite el cambio de la memoria asignada a la máquina. Similar a realizarlo directamente al archivo.

xm mem-set server $cantidadRam

Para obtener acceso a la máquina

xm console server 

Y tendrá acceso a la consola.

OpenStack

Introducción

Cloud Computing es un modelo de computación donde los recursos como almacenamiento, red, calculo y software se abstraen para que es estén disponible en la red. OpenStack es una colección de software de código libre que permiten configurar y ejecutar una nube de computación e infraestructura de almacenamiento.

Esta documentación se basa en el proyecto de LabComp, corriendo en Fedora 17.

Desarrollo

Modelo Conceptual

Arquitectura de OpenStack

OpenStack esta diseñado para entregar un sistema escalable masivamente y entregar un infraestructura completa a través de sus servicios. La integración de estos servicios permiten el manejo de:

  • Nova Dashboard: Provee de la interfaz gráfica para manejar los servicios ya sea: Compute, Glance, Network u otro.
  • Nova Compute: Provee maquinas virtuales bajo demanda algo similar Amazon EC2 además permite el servicio de volumenes.
  1. Es el demonio principal que crea y termina las instancias via el hipervisor ya sea: Xen, libvirt, WMware.
  2. nova-volume maneja la creación, la vinculación y desvinculación de los volumenes a la instancia.
  3. nova-network: Es un demonio que acepta tareas desde la cola para manipular la red.
  4. nova-schedule: Regulada que consulta de la máquina virtual va a parar al que host.
  • Nova Swift: Provee de almacenamiento de objetos, de tal manera ofrecer la oportunidad de alojar y recuperar la información.
  • Glance: Provee un catálogo y repositorio de imágenes de discos virtuales. Estas imágenes son de uso común en Nova Compute.
  1. Permite descubrir, recuperar y almacenamiento de imágenes
  2. Almacenar, procesar y entregar la información sobre la imagen.
  • Keystone: Provee identificación a OpenStack bajo un único punto, manejando las solicitudes de la API. También permite integración con LDAP o SQL.

Se mostrará los aspectos más interesantes y fundamentales de la implementación de OpenStack. La implementación se está realizando en base fedora 17 en el mismo segmento. Hasta el momento se está utilizando:

  • Maquina central 4 gb de RAM con un procesador i5.

Uso

La implementación se puede encontrarse en código Implementación de OpenStack Fedora 17 Se omitirá la instalación de nodo central debido a la longitud de la instalación pero se explicará la instalación de un nodo normal que es similiar

  • Creación de una imagen para glance, en este caso Fedora 16
glance add name=f16-jeos is_public=true disk_format=qcow2 container_format=ovf 
copy_from=http://berrange.fedorapeople.org/images/2012-02-29/f16-x86_64-openstack-sda.qcow2
  • Instalación de nodo

Instalar ntp y configurar demonios

yum install -y ntp
service ntpd start
chkconfig ntpd on

Instalación de nova y configuracion de demonios de KVM

yum install -f --enablerepo=updates-testing openstack-nova
service libvirtd start
chkconfig libvirtd on
systemctl enable libvirtd.service
setenforce 0

Variable de openstack para comunicarse con el nodo central

openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller
openstack-config --set /etc/nova/nova.conf DEFAULT sql_connection mysql://user:pass@controller/nova
openstack-config --set /etc/nova/nova.conf DEFAULT glance_api_servers controller:9292
openstack-config --set /etc/nova/nova.conf DEFAULT iscsi_ip_prefix <ip>
for svc in compute network; do sudo service openstack-nova-$svc start; done

Configuración de vnc

echo "novncproxy_base_url=http://ip:6080/vnc_auto.html " >> /etc/nova/nova.conf
echo "vnc_enabled=true " >> /etc/nova/nova.conf
echo "vncserver_listen=127.0.0.1 " >> /etc/nova/nova.conf
echo "vncserver_proxyclient_address=127.0.0.1 " >> /etc/nova/nova.conf
service openstack-nova-novncproxy start
service openstack-nova-consoleauth start
chkconfig openstack-nova-novncproxy on
chkconfig openstack-nova-consoleauth on


Para crear una instancia en OpenStack se debe ingresar a través de dashboard.

Dashboard.

Crear la instancia

Creación de la instancia.

Y podemos ver como la máquina se encuentra corriendo.

Instancias corriendo.

Asignación de IP

Creación de una lista de IP flotante disponibles

La asignación de la red funciona entregando un rango de ip al nodo central y luego asignarlas a la instancia. Asignación de un rango de IP: desde la 10.10.9.97 a 10.10.9.126 y broadcast 10.10.9.127

nova-manage floating create --ip_range=10.10.9.97/27
  • Lista IP flotantes.
nova-manage floating list
  • Crea IP flotantes para ser entregadas a las instancias.
nova-manage floating create [cidr]
  • nova-manage floating delete [cidr]: Remueve ip flotantes.

Asignación

Se asigna un IP de acuerdo al ID de la instancia.

nova add-floating-ip [id] [IP]

Referencias

Enlaces externos

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas