Revista Tecnología

OpenStack desde cero - Nova

Publicado el 20 abril 2015 por Dbigcloud @dbigcloud

Una semana más continuamos viendo los componentes de OpenStack, en semanas anteriores hablamos del servicio de identidades, KeyStone y de Glance, el servicio de imágenes, ambos componentes forman parte del nodo controlador. Esta semana vamos a añadir un nuevo nodo a la arquitectura, el cual nos va a proveer de los recursos que podremos ofrecer a nuestras instancias, es el nodo de cómputo, siendo Nova el componente principal de dicho nodo.

 

openstack nova por DbigCloud

Tal y como he comentado anteriormente Nova es el componente principal del IaaS (infraestructura como servicio) y es el encargado de administrar los pools de recursos que tenemos disponibles, hay que tener en cuenta que Nova NO es un hypervisor,sino el gestor de recursos de hipervisores tales como: Xen, KVM, VMware, etc, podéis consultar la matriz de hipervisores desde aqui.

La arquitectura del nodo de cómputo esta compuesta de los siguientes servicios:

  • Servidor de API, el cual nos va a permitir la comunicación de los hipervisores con nuestro entorno, gracias a él los distintos fabricantes pueden integrar sus productos de forma eficaz.
  • Colas de mensajes (rabbit queues), se encarga de la comunicación entre componentes (ya sean nodos de computos, componentes de red, API de fabricantes...) a la hora de provisionar recursos.
  • Worker: Es el administrador de instancias en los hosts que nos va a permitir, crear, terminar, reiniciar instancias, añadir o quitar volumenes…
  • Controlador de red con el que podremos provisionar recursos de networking, como por ejemplo IP, vLAN, router...

En la siguiente imagen podéis observar como se realiza el flujo de peticiones:

 

Zones Architecture por DBigCloud

 

Instalar Nova en el nodo Controlador


Como cualquier otro servicio de OpenStack, debemos crear la base de datos en el nodo controlador y realizar la integración con KeyStone, para ello realizamos lo siguiente:

Crear la base de datos para Nova

mysql -u root -p
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'NOVA_DBPASS';
 
Integrar Nova con KeyStone

Creación del usuario:

keystone user-create --name nova --pass NOVA_PASS \
 %5Cn%20</script><script%20type='text/javascript'>%0A%20%0A%20</script>">">%5Cn%20</script><script%20type='text/javascript'>%0A%20%0A%20</script>">%5Cn%20</script><script%20type='text/javascript'>%0A%20%0A%20</script>">">%5Cn%20</script><script%20type='text/javascript'>%0A%20%0A%20</script>">--email=

Creación del rol:

keystone user-role-add --user nova --tenant service --role admin

Creación del servicio:

keystone service-create --name nova --type compute \
 --description "OpenStack Compute"

Creación del endpoint:

keystone endpoint-create \
  --service-id $(keystone service-list | awk '/ compute / {print $2}') \
  --publicurl http://controller:8774/v2/%\(tenant_id\)s \
  --internalurl http://controller:8774/v2/%\(tenant_id\)s \
  --adminurl http://controller:8774/v2/%\(tenant_id\)s \
  --region regionOne

A continuación debemos instalar los componentes de nova en el nodo controlador, usando el repositorio de Ubuntu Cloud:

apt-get install nova-api nova-cert nova-conductor nova-consoleauth \
 nova-novncproxy nova-scheduler python-novaclient

El archivo de configuración de Nova es /etc/nova/nova.conf en el que debemos de configurar lo siguientes parámetros:

Base de datos

[database]
...
connection = mysql://nova:NOVA_DBPASS@controller/nova

RabbitMQ

[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS

Autenticación con keystone

[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS

Ahora lo siguiente es crear las tablas de la base de datos:

su -s /bin/sh -c "nova-manage db sync" nova

Ya disponemos de los componentes de Nova necesarios para funcionar en el nodo controlador, ahora lo siguiente es instalar Nova en el nodo de cómputo.


Instalar Nova en el nodo de cómputo.

No debemos confundirnos con el nodo controlador, por lo que a partir de aquí unicamente trabajaremos con el nodo de cómputo.

Para instalar nova en el nodo cómputo usaremos el repositorio de Ubuntu Cloud

apt-get install nova-compute sysfsutils

En el fichero de configuracion /etc/nova/nova.conf de bemos configurar:

RabbitMQ

[DEFAULT]
...
rpc_backend = rabbit
rabbit_host = controller
rabbit_password = RABBIT_PASS

La autenticación con KeyStone

[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000/v2.0
identity_uri = http://controller:35357
admin_tenant_name = service
admin_user = nova
admin_password = NOVA_PASS

Para acceder de forma remota a través de consola

[DEFAULT]
...
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS
novncproxy_base_url = http://controller:6080/vnc_auto.html

Y por ultimo Glance:

[glance]
...
host = controller

Para finzalizar debemos tener en cuenta el tipo de hipervisor que vamos a usar, para ello necesitamos especificar en /etc/nova/nova-compute.conf tanto el driver como la configuración del hipervisor.

Los drivers más usados son:

compute_driver = libvirt.LibvirtDriver ParaQemu o KVM
compute_driver=vmwareapi.VMwareVCDriver Para VMware
compute_driver = xenapi.XenAPIDriver  Para Xen
...
/pre>

Configuramos el hipervisor.

[libvirt]
virt_type = KVM

Con estos hemos finalizado con la instalación principal de Nova, pero para tener un entorno completo debemos instalar los componentes de red, además del panel de administración Horizon que veremos más adelante.



Volver a la Portada de Logo Paperblog