GNU/Linux >> Tutoriales Linux >  >> Cent OS

Una guía sencilla para instalar OpenStack Icehouse en CentOS:arquitectura de dos nodos

La palabra "OpenStack" es bastante popular en estos días. Es posible que haya escuchado esta palabra, incluso si no está trabajando en el área de la computación en la nube. He estado trabajando en el dominio de la computación Grid durante los últimos 10 años y nunca entendí el alboroto detrás de OpenStack. Pero esta palabra de moda seguía tocando mis oídos dondequiera que iba:en serio, en mi oficina, conferencias y sitios web populares que seguían promocionando OpenStack. Finalmente, mi jefe me empujó (sí, a la fuerza) al mundo de OpenStack y estas grandes preguntas me afectaron:¿Qué es Openstack, cómo se implementa y cómo funciona? Bueno, la única forma de entender OpenStack es comenzar con una instalación.

A primera vista, comenzar con OpenStack parecía fácil, pero no lo es. Sí, el sitio web oficial de OpenStack tiene una buena documentación, pero el verdadero problema al que me enfrenté fue la terminología utilizada:Horizon, Glance, Keystone, Nova, Neutron, Swift, Heat, Cinder, Ceilometer... Uff, ¿por qué diablos son? llamado así? Y luego, hubo varios otros términos vinculados a la instalación:RDO, Packstack, Devstack, diferentes arquitecturas (un nodo, dos nodos y multinodo), redes heredadas, etc. En serio, tuve que volver corriendo a Google para entender todos esos (y este chico ha hecho un gran trabajo). Bueno, si me pide que escriba sobre mi experiencia con OpenStack, este artículo tendrá 20 páginas. Así que me detendré aquí e iré al tema.

Índice

  • Introducción a OpenStack
  • Arquitectura de banco de pruebas
  • Instalar y configurar NTP tanto en el controlador como en el nodo de cómputo
  • Instalar y configurar MySQL tanto en el controlador como en el nodo de cómputo
  • Instalar y configurar Apache Qpid tanto en el controlador como en el nodo de cómputo
  • Instalar los paquetes básicos de OpenStack Icehouse en el controlador y el nodo de computación
  • Instalar KeyStone en el nodo del controlador
  • Instalar Glance en el nodo del controlador
  • Instalar Nova en el nodo del controlador
  • Instalar Nova-Networking en el nodo del controlador
  • Instalar Dashboard en el nodo del controlador
  • Instalar Nova en el nodo de computación
  • Instalar Nova-Networking en Compute Node
  • Crear una instancia
  • Iniciar sesión en la instancia

¿Qué es OpenStack?

OpenStack es una plataforma informática en la nube de código abierto que proporciona infraestructura como servicio (IaaS). Si es un experto en computación Grid, entonces OpenStack es algo similar al popular middleware Grid como Globus Toolkit, Glite, Oracle Grid Engine, Unicore, etc. OpenStack es básicamente un middleware que le permite administrar los recursos de computación en la nube de manera más eficiente y , efectivamente.

Servicios OpenStack

  • Horizonte :un servicio de tablero que proporciona un portal web para interactuar y administrar los servicios subyacentes, las instancias virtuales, los usuarios y la red.
  • Nova :un servicio de cómputo que ayuda a administrar instancias de cómputo, lo que incluye generar, programar, arrancar y terminar una máquina virtual.
  • Clave :un servicio de identidad que proporciona autenticación y autorización.
  • neutrón :un servicio de red que le permite crear y administrar redes.
  • Vistazo :un servicio de imágenes que ayuda a almacenar y obtener imágenes de máquinas virtuales.
  • Base de datos servicio :proporciona la base de datos como un servicio.
  • Swift y Cinder :proporciona almacenamiento como servicio.
  • Telemetría :un servicio que lo ayuda a administrar la facturación y la evaluación comparativa.
  • Hay muchos otros servicios... lea más en openstack.org.

Arquitectura

Si es un principiante, entonces la forma ideal es comenzar con una arquitectura de dos nodos:un nodo llamado "Controlador" y el otro como "Computación". En este tutorial, instalaremos la versión OpenStack Icehouse en el sistema operativo CentOS 6.6. Los servicios que se instalarán en el nodo del controlador son Keystone, Glance, Nova, Networking (heredado nova-networking), Horizon y el nodo de cómputo tendrá Nova y Networking (heredado nova-networking).

Nota: ¿Principiante de OpenStack? Se recomienda comenzar con las redes heredadas de Nova. Comprender y configurar "Neutron" es una gran pregunta en esta etapa. Sin embargo, debería considerar migrar de redes heredadas a Neutron en una etapa posterior.

A continuación se muestra el diagrama que representa mi banco de pruebas. Todos mis pasos de instalación se basan en la siguiente arquitectura.

Nota: Dado que vamos a utilizar la red Legacy Nova, solo necesitamos una interfaz en el nodo del controlador para fines de administración y dos interfaces en el nodo de cómputo (una para la administración que se encuentra en la misma red del nodo del controlador y la otra interfaz es externa, que se utilizará para las comunicaciones de VM).

Bueno, estamos listos para continuar con los pasos de instalación.

¿Cómo instalar y configurar OpenStack Icehouse en CentOS?

usaré,

  • nombre de host del controlador ' como el nombre de host del nodo del controlador y "compute-hostname ” como el nombre de host del nodo Compute.
  • '10.180.10.132' (IP de administración) para el nodo del controlador y '10.180.10.134' (IP de administración) para el nodo de cómputo. La IP externa del nodo de cómputo será '10.180.14.151'

Nota: Recuerde reemplazarlos con el FQDN o las direcciones IP correspondientes.

  • Durante la instalación, dondequiera que encuentre 'setpassword ', reemplácelo con la contraseña de servicio correspondiente.
  • Usaré 'YUM' durante la mayor parte de la instalación. Así que asegúrese de que las máquinas estén conectadas a Internet. En caso de que tenga problemas para configurar yum, las siguientes guías serán de gran ayuda.
    • Cómo configurar el repositorio de Yum en CentOS
    • Yum comandos que debes conocer.
  • La salida de algunos comandos se ha truncado para evitar confusiones y reducir la duración de este tutorial.

La instalación de cualquier componente (o servicio) en OpenStack implica los siguientes pasos:



Instalar y configurar NTP tanto en el controlador como en el nodo de cómputo

Puede saltar rápidamente para aprender cómo instalar y configurar el Protocolo de tiempo de red en su controlador y nodos de cómputo.

¿Configuró NTP e inició el servicio ntpd? Entonces volvamos a este artículo…

Actualizar el sistema operativo tanto en el controlador como en el nodo informático

Siempre se recomienda actualizar el sistema operativo antes de instalar cualquier componente. Resolverá muchos dolores de cabeza por dependencia de paquetes.

[root@controller-hostname ]# yum update
[root@compute-hostname ]# yum update


Instalar la base de datos MySQL tanto en el controlador como en el nodo de cómputo

Nota: MySQL ahora se llama 'Mariadb'.

[root@controller-hostname ]# yum install mysql mysql-server MySQL-python
[root@compute-hostname ]# yum install mysql mysql-server MySQL-python

Tendrás que buscar en ‘/etc/my.cnf ‘ para garantizar que el servicio MySQL se vinculará con la dirección IP de administración tanto del controlador como de los nodos de cómputo.

En el nodo del controlador :

[root@controller-hostname ]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=10.180.10.132
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

En el nodo de cómputo :

[root@compute-hostname ]# vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=10.180.10.134
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

Inicie el servidor mysql:

[root@controller-hostname ~]# service mysqld start
[root@compute-hostname ~]# service mysqld start

Configurar MySQL…

[root@controller-hostname ~]# mysql_install_db
[root@compute-hostname ~]# mysql_install_db

Siempre se recomienda ejecutar 'mysql_secure_installation ‘ después de instalar MySQL.

[root@controller-hostname ~]# mysql_secure_installation
[root@compute-hostname ~]# mysql_secure_installation

Si no está seguro de lo que hace mysql_secure_installation, aquí hay una guía rápida que lo explica en detalle.

Instalar paquetes básicos de OpenStack Icehouse en el controlador y el nodo de cómputo

Configure el repositorio de yum e instale los paquetes básicos de Icehouse. Este paso debe realizarse tanto en el controlador como en los nodos de cómputo.

En el nodo del controlador:

[root@controller-hostname ~]# yum install yum-plugin-priorities
[root@controller-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-4.noarch.rpm
[root@controller-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse
[root@controller-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
[root@controller-hostname ~]# yum install openstack-utils openstack-selinux

En el nodo Compute:

[root@compute-hostname ~]# yum install yum-plugin-priorities
[root@compute-hostname ~]# yum install http://repos.fedorapeople.org/repos/openstack/openstack-icehouse/rdo-release-icehouse-4.noarch.rpm
[root@compute-hostname ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-RDO-Icehouse
[root@compute-hostname ~]# yum -y install http://fedora.cu.be/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
[root@compute-hostname ~]# yum install openstack-utils openstack-selinux


Instalar Message Broker Service en el nodo del controlador

Los servicios de OpenStack necesitan un intermediario de mensajes para su comunicación. Actualmente, OpenStack es compatible con Rabbit-mq y Apache Qpid. En este tutorial, instalaremos Qpid-server.

Apache Qpid permite que los servicios envíen y reciban mensajes a través de AMQP (Advanced Message Queuing Protocol).

[root@controller-hostname ~]# yum install qpid-cpp-server

Configurar qpid-cpp-servidor para trabajar sin necesidad de autenticación (esto facilitará nuestro proceso de instalación. Pero debe habilitar la autenticación por razones de seguridad)

[root@controller-hostname ~]# echo "auth=no">/etc/qpid/qpidd.conf

Iniciar el intermediario de mensajes...

[root@controller-hostname ~]# service qpidd start

Instalación y configuración de Keystone (servicio de identidad) en el nodo del controlador

Como dije anteriormente, el servicio Keystone juega un papel importante en OpenStack, proporcionando autenticación y autorización. También significa que todos los servicios de OpenStack (incluido el servicio de identidad) deben registrarse con KeyStone.

Instalar paquetes Keystone...

[root@controller-hostname ~]# yum install openstack-keystone python-keystoneclient

Crear una base de datos para keystone , para que el servicio pueda almacenar su estado y datos...

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE keystone;
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'setpassword';

Nota: Recuerde reemplazar 'setpassword' con su propia contraseña para keystone.

Crear tablas para la base de datos keystone...

[root@controller-hostname ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone

Ahora, dígale a Keystone que esto es lo que debe usar para hacer una conexión a la base de datos

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql://keystone:setpassword@controller-hostname/keystone

Nota: Recuerde reemplazar 'setpassword' con la contraseña adecuada de 'keystone'@mysql

Cree un token de autenticación para autenticar otros servicios con keystone. Para hacer eso, usaremos openssl para generar un valor HEX aleatorio y almacenarlo en una variable llamada 'ADMIN_TOKEN

[root@controller-hostname ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
[root@controller-hostname ~]# echo $ADMIN_TOKEN
e9393f7ac1886f0c1a20

Nota: Haga una copia del token generado, ya que lo necesitará más adelante (no es obligatorio, si no va a eliminar la sesión de su terminal a mitad de camino)

Configurar Keystone para usar el token de autenticación generado en el paso anterior…

[root@controller-hostname ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN

Configure Keystone para proporcionar tokens de autenticación basados ​​en PKI.

[root@controller-hostname ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone

Establecer propiedad y permiso para el usuario 'keystone'...

[root@controller-hostname ~]# chown -R keystone:keystone /etc/keystone/ssl
[root@controller-hostname ~]# chmod -R o-rwx /etc/keystone/ssl

Todo listo para keystone, comencemos el servicio...

[root@controller-hostname ~]# service openstack-keystone start

Asegúrese de que el servicio realmente se esté ejecutando comprobando su estado

[root@controller-hostname ~]# service openstack-keystone status
keystone (pid 10245) is running...

En caso de que el servicio esté muerto después de iniciarse, debe solucionar ese problema en este punto.

Configure el servicio para que se inicie automáticamente durante el arranque del sistema...

[root@controller-hostname ~]# chkconfig openstack-keystone on

Borrar automáticamente tokens keystone caducados...

Es posible que haya muchos tokens caducados en Keystone durante su funcionamiento, lo que aumenta el tamaño de la base de datos de Keystone. Es una buena idea limpiarlos a intervalos regulares. Para hacer eso, configuraremos trabajos cron como se muestra a continuación:

[root@controller-hostname ~]# echo '@hourly /usr/bin/keystone-manage token_flush >/var/log/keystone/keystone-tokenflush.log 2&>&1' >> /var/spool/cron/keystone
[root@controller-hostname ~]# crontab -l -u keystone
@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2&>&1

Crear usuarios, inquilinos y roles para keystone

Antes de ejecutar comandos trapezoidales, debe establecer ciertas variables de entorno. Para hacer eso, cree un archivo llamado 'admin-openrc.sh ' y establezca las variables de entorno de la siguiente manera:

[root@controller-hostname ~]# vi admin-openrc.sh
export OS_USERNAME=admin
export OS_PASSWORD=setpassword
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controller-hostname:35357/v2.0
[root@controller-hostname ~]# source admin-openrc.sh

Vamos a crear un usuario...

[root@controller-hostname ~]# keystone user-create --name=admin --pass=setpassword --email=keystone@controller-hostname

Crear un rol...

[root@controller-hostname ~]# keystone role-create --name=admin

Crear un inquilino...

[root@controller-hostname ~]# keystone tenant-create --name=admin --description="Admin Tenant"

Tendremos que vincular el usuario con el rol y el arrendatario creado en los pasos anteriores…

[root@controller-hostname ~]# keystone user-role-add --user=admin --role=admin --tenant=admin

Registre el keystone (servicio de identidad) en el servicio KeyStone

[root@controller-hostname ~]# keystone tenant-create --name=service --description="Service Tenant"
[root@controller-hostname ~]# keystone service-create --name=keystone --type=identity --description="OpenStack Identity"
[root@controller-hostname ~]# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://controller-hostame:8774/v2/%\(tenant_id\)s --internalurl=http://controller-hostame:8774/v2/%\(tenant_id\)s --adminurl=http://controller-hostame:8774/v2/%\(tenant_id\)s

Eso es todo, la configuración de KeyStone está lista... En caso de que tenga algún problema durante la instalación y configuración de Keystone, aquí tiene una solución para varios errores de Keystone:Errores y soluciones comunes del servicio de Keystone .

Instalar Glance (servicio de imágenes) en el nodo del controlador

El servicio de imágenes se instalará en el nodo del controlador para alojar todas las imágenes que se utilizarán para arrancar las máquinas virtuales en el nodo de cálculo.

[root@controller-hostname ~]# yum install openstack-glance python-glanceclient

Configurar el "vistazo" de la base de datos...

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE glance;
mysql> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql > GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'setpassword';

Nota: Recuerda cambiar 'setpassword'

Crear tablas para la base de datos 'vistazo'...

[root@controller-hostname ~]# su -s /bin/sh -c "glance-manage db_sync" glance

Configurar el servicio de vistazo para leer las credenciales de la base de datos...

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:setpassword@controller-hostname/glance
[root@controller-hostname ~]# glance-registry.conf database connection mysql://glance:setpassword@controller-hostname/glance

Crear usuario de Glance en KeyStone...

[root@controller-hostname ~]# keystone user-create --name=glance --pass=setpassword --email=glance@controller-hostname

Agregar usuario de vistazo al rol 'admin'

[root@controller-hostname ~]# keystone user-role-add --user=glance --tenant=service --role=admin

Configurar autenticación para Glance...

[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_user glance
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf keystone_authtoken admin_password setpassword
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_user glance
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken admin_password setpassword
[root@controller-hostname ~]# openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone

Registrar el servicio Glance en KeyStone...

[root@controller-hostname ~]# keystone service-create --name=glance --type=image --description="OpenStack Image Service"
[root@controller-hostname ~]# keystone --os-token=fd465d38e342ddc68be3 --os-endpoint=http://controller-hostname:35357/v2.0 endpoint-create --service-id=$(keystone service-list | awk '/ image / {print $2}') --publicurl=http://controller-hostname:9292 --internalurl=http://controller-hostname:9292 --adminurl=http://controller-hostname:9292

Iniciar servicios de vistazo...

[root@controller-hostname ~]# service openstack-glance-api start
[root@controller-hostname ~]# service openstack-glance-registry start
[root@controller-hostname ~]# chkconfig openstack-glance-api on
[root@controller-hostname ~]# chkconfig openstack-glance-registry on

Nota: Si alguno de los servicios no se inicia, compruebe los archivos de registro en /var/log/glance . Lea también esta guía:Soluciones y errores de instalación del servicio de imágenes OpenStack Glance.

Probar el servicio Glance...

Ahora descargaremos la imagen de Cirros para probar el servicio de vistazo. Cirros es un pequeño sistema operativo Linux que ocupa unos pocos MB, por lo que es bastante fácil de descargar y agregar al servicio Glance.

[root@controller-hostname ~]# wget http://cdn.download.cirros-cloud.net/0.3.2/cirros-0.3.2-x86_64-disk.img
[root@controller-hostname ~]# glance image-create --name=cirros --disk-format=qcow2 --container-format=bare --is-public=true < cirros-0.3.2-x86_64-disk.img

Agregue la imagen de CentOS al servicio de vistazo

[root@controller-hostname ~]# wget http://cloud.centos.org/centos/6/images/CentOS-6-x86_64-GenericCloud-20141129_01.qcow2.xz

Nota: xz es una utilidad de compresión de datos de propósito general que proporciona una alta relación de compresión. Esa es la razón, el tamaño del archivo .xz es menor y fácil de descargar. Si no está seguro de cómo descomprimir archivos .xz, aquí hay un tutorial para ayudarlo.

Después de descomprimir la imagen .xz, agregue la imagen al servicio Glance.

[root@controller-hostname ~]# glance image-create --name 'Centos-6' --disk-format qcow2 --container-format bare --is-public=true < CentOS-6-x86_64-GenericCloud-20141129_01.qcow2

Ver la lista de imágenes añadidas a los servicios de Glance...

[root@controller-hostname ~]# glance image-show "cirros"
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 64d7c1cd2b6f60c92c14662941cb7913 |
| container_format | bare |
| created_at | 2015-02-06T12:47:39 |
| deleted | False |
| disk_format | qcow2 |
| id | a338631b-3bb8-43ba-a700-d4648c040a05 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | cirros |
| owner | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| protected | False |
| size | 13167616 |
| status | active |
| updated_at | 2015-02-06T12:47:40 |
+------------------+--------------------------------------+
[root@controller-hostname ~]# glance image-show "Centos-6"
+------------------+--------------------------------------+
| Property | Value |
+------------------+--------------------------------------+
| checksum | 62ac2565e3527377860361f57639f334 |
| container_format | bare |
| created_at | 2015-02-13T06:18:52 |
| deleted | False |
| disk_format | qcow2 |
| id | ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 |
| is_public | True |
| min_disk | 0 |
| min_ram | 0 |
| name | Centos-6 |
| owner | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| protected | False |
| size | 1151533056 |
| status | active |
| updated_at | 2015-02-13T06:20:29 |
+------------------+--------------------------------------+

Instalar Nova Service en el nodo del controlador:

Pasemos ahora a instalar Nova en el nodo del controlador...

[root@controller-hostname ~]# yum install openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient

Crear base de datos 'nova'...

[root@controller-hostname ~]# mysql -u root -p
mysql> CREATE DATABASE nova;
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'controller-hostname' IDENTIFIED BY 'setpassword';
mysql> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'setpassword';

Dígale a Nova que use la base de datos correspondiente y proporcione las credenciales para ello...

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:setpassword@controller-hostname/nova

Conectar agente de mensajes (Qpid) a Nova...

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller-hostname

Crear tablas para la base de datos 'nova'

[root@controller-hostname ~]# su -s /bin/sh -c "nova-manage db sync" nova

Crear usuario para nova en KeyStone

[root@controller-hostname ~]# keystone user-create --name=nova --pass=setpassword --email=nova@controller-hostname
[root@controller-hostname ~]# keystone user-role-add --user=nova --tenant=service --role=admin

Configurar la autenticación nova con KeyStone

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword

Registrar nova con KeyStone

[root@controller-hostname ~]# keystone service-create --name=nova --type=compute --description="OpenStack Compute"
[root@controller-hostname ~]# keystone endpoint-create --service-id=$(keystone service-list | awk '/ compute / {print $2}') --publicurl=http://controller-hostname:8774/v2/%\(tenant_id\)s --internalurl=http://controller-hostname:8774/v2/%\(tenant_id\)s --adminurl=http://controller-hostname:8774/v2/%\(tenant_id\)s

Iniciar servicios relacionados con Nova...

[root@controller-hostname ~]# service openstack-nova-api start
[root@controller-hostname ~]# chkconfig openstack-nova-api on
[root@controller-hostname ~]# service openstack-nova-cert start
[root@controller-hostname ~]# chkconfig openstack-nova-cert on
[root@controller-hostname ~]# service openstack-nova-scheduler start
[root@controller-hostname ~]# chkconfig openstack-nova-scheduler on
[root@controller-hostname ~]# service  openstack-nova-novncproxy start
[root@controller-hostname ~]# chkconfig openstack-nova-novncproxy on
[root@controller-hostname ~]# service  openstack-nova-consoleauth start
[root@controller-hostname ~]# chkconfig openstack-nova-consoleauth on
[root@controller-hostname ~]# service  openstack-nova-conductor start
[root@controller-hostname ~]# chkconfig openstack-nova-conductor on
[root@controller-hostname ~]# service  openstack-nova-metadata-api start
[root@controller-hostname ~]# chkconfig openstack-nova-metadata-api on

Nota: Después de iniciar el servicio, verifique su estado y asegúrese de que el servicio realmente se esté ejecutando. Si alguno de los servicios no pudo iniciarse, verifique los archivos de registro en /var/log/nova.

Lea también:Errores y soluciones de instalación del servicio OpenStack Nova.

Comandos de Nova para probar la configuración y los servicios...

Para listar todas las imágenes que se almacenan en el servicio Glance...

[root@controller-hostname ~]# nova image-list
+--------------------------------------+---------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+---------------+--------+--------------------------------------+
| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIVE | |
| a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIVE | |
| e8c477ae-7c74-497d-9d9b-5fea1035d899 | testvm-snap1 | ACTIVE | aa7c5535-4259-42f0-8d74-5b26f0d731de |
+--------------------------------------+---------------+--------+--------------------------------------+

Para enumerar todos los servicios...

[root@controller-hostname ~]# nova service-list
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| Binary | Host | Zone | Status | State | Updated_at | Disabled Reason |
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+
| nova-cert | controller-hostname | internal | enabled | up | 2015-02-16T11:06:09.000000 | - |
| nova-scheduler | controller-hostname | internal | enabled | up | 2015-02-16T11:06:07.000000 | - |
| nova-consoleauth | controller-hostname | internal | enabled | up | 2015-02-16T11:06:11.000000 | - |
| nova-conductor | controller-hostname | internal | enabled | up | 2015-02-16T11:06:12.000000 | - |
| nova-console | controller-hostname | internal | enabled | up | 2015-02-16T11:06:12.000000 | - |
+------------------+-------------------------+----------+---------+-------+----------------------------+-----------------+

Configurar Nova-Networking para el nodo del controlador

En esta configuración de dos nodos, instalaremos la red Nova (heredada) en los nodos de controlador y cómputo. Significa que no necesita preocuparse por el complejo servicio Neutron.

Configurar Nova para usar redes heredadas de nova...

[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API
[root@controller-hostname ~]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova

Reiniciar servicios nova

[root@controller-hostname ~]# service openstack-nova-api restart
[root@controller-hostname ~]# service openstack-nova-scheduler restart
[root@controller-hostname ~]# service  openstack-nova-conductor restart

Cree una red para máquinas virtuales

Ahora Nova sabe que debe usar redes heredadas para la comunicación, pero debe crear una red y un conjunto de direcciones IP a las que se deben asignar las máquinas virtuales. Simplemente desplácese hacia arriba para ver el diagrama de arquitectura donde encontrará una IP externa (10.180.14.151) asignada al nodo Compute. Significa que debemos crear una subred en la red 10.180.14.0 para que la usen las máquinas virtuales. En este tutorial, supongamos que necesitamos 30 direcciones IP para la asignación. Así que los detalles de la subred son los siguientes...

------------------------------------------------
           TCP/IP NETWORK INFORMATION
------------------------------------------------
IP Entered = ..................: 10.180.14.160
CIDR = ........................: /27
Netmask = .....................: 255.255.255.224
Wildcard Bits = ...............: 0.0.0.31
------------------------------------------------
Network Address = .............: 10.180.14.160
Broadcast Address = ...........: 10.180.14.191
Usable IP Addresses = .........: 30
First Usable IP Address = .....: 10.180.14.161
Last Usable IP Address = ......: 10.180.14.190

For the subnet ‘10.180.14.160/27’, the first usable IP address is 10.180.14.161 and the last usable IP address is 10.180.14.190.

The below command will create a network called ‘private’

[root@controller-hostname ~]# nova network-create private --bridge br100 --multi-host T --fixed-range-v4 10.180.14.160/27

[root@controller-hostname ~]# nova net-list
+--------------------------------------+---------+------------------+
| ID | Label | CIDR |
+--------------------------------------+---------+------------------+
| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |
+--------------------------------------+---------+------------------+

Add a security group to the created network to allow SSH connections

[root@controller-hostname ~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
+-------------+-----------+---------+-----------+--------------+
| IP Protocol | From Port | To Port | IP Range | Source Group |
+-------------+-----------+---------+-----------+--------------+
| tcp | 22 | 22 | 0.0.0.0/0 | |
+-------------+-----------+---------+-----------+--------------+

Install Dashboard (Horizon) on Controller node

Now its time to install Horizon service on controller node – provides a portal to manage instances, services, network etc…

[root@controller-hostname ~]# yum install memcached python-memcached mod_wsgi openstack-dashboard

Change the values of CACHES[‘default’][‘LOCATION’] as below

# vi /etc/openstack-dashboard/local_settings
CACHES = {
'default': {
'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION' : '127.0.0.1:11211'
}
}

The above changes should match the address and port specified in /etc/sysconfig/memcached .

Also modify ‘ALLOWED_HOSTS ‘ attribute to accept connection from your desktop – as that will allow you to access the dashboard via browser.

You have to make sure SELINUX allows connection to the web server

[root@controller-hostname ~]# setsebool -P httpd_can_network_connect on

Start web server and memcached

[root@controller-hostname ~]# service memcached start
[root@controller-hostname ~]# service httpd start
[root@controller-hostname ~]# chkconfig memcached on
[root@controller-hostname ~]# chkconfig httpd on

Try accessing the dashboard service – http://controller-hostname/dashboard

Install Nova on Compute node

Finally, we are done with our installation on Controller node and we’ll now move on to install Nova on Compute node.

Install nova compute service on Compute node..

[root@compute-hostname ]# yum install openstack-nova-compute

Connect to nova database on controller node…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf database connection mysql://nova:setpassword@controller-hostname/nova

Setup authentication…

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT auth_strategy keystone
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_uri http://controller-hostname:5000
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_host controller-hostname
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_protocol http
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken auth_port 35357
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_user nova
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_tenant_name service
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf keystone_authtoken admin_password setpassword

Configure Nova to use Qpid message broker for communication

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT rpc_backend qpid
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT qpid_hostname controller-hostname

Compute Node should know where the Glance is running, so we need to configure that as well.

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT glance_host controller-hostname

Start messagebus, libvirtd and nova-compute services

[root@compute-hostname ]# service libvirtd start
[root@compute-hostname ]# chkconfig libvirtd on
[root@compute-hostname ]# chkconfig messagebus on
[root@compute-hostname ]# service messagebus start
[root@compute-hostname ]# service openstack-nova-compute start
[root@compute-hostname ]# chkconfig openstack-nova-compute on

Install Nova-Networking for Computer node

[root@compute-hostname ]# yum install openstack-nova-network openstack-nova-api

Configure network api, security group, firewall, network size, dhcp etc..

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_api_class nova.network.api.API
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT security_group_api nova
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_manager nova.network.manager.FlatDHCPManager
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.libvirt.firewall.IptablesFirewallDriver
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT network_size 254
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT allow_same_net_traffic False
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT multi_host True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT send_arp_for_ha True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT share_dhcp_address True
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT force_dhcp_release True

Configure network bridge and interfaces

If you remember we created a network bridge ‘br100 ‘ in controller node. For this tutorial, the external IP address of the compute node is 10.180.14.151 (configured on eth1 network interface) and the subnet is ‘10.180.14.160/27

[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_network_bridge br100
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT flat_interface eth1
[root@compute-hostname ]# openstack-config --set /etc/nova/nova.conf DEFAULT public_interface eth1

Nota: Remember to change the network interface (eth1) to the corresponding interface of your compute node.

Start the services…

[root@compute-hostname ]# service openstack-nova-api start
[root@compute-hostname ]# service openstack-nova-network start
[root@compute-hostname ]# service openstack-nova-metadata-api start
[root@compute-hostname ]# chkconfig openstack-nova-api on
[root@compute-hostname ]# chkconfig openstack-nova-network on
[root@compute-hostname ]# chkconfig openstack-nova-api on

Well, we are done with installations on both the Controller and Compute node. Let us now trying booting VM, but before that you should know the below commands.

List of networks created…

[root@controller-hostname ~]# nova net-list
+--------------------------------------+---------+------------------+
| ID | Label | CIDR |
+--------------------------------------+---------+------------------+
| 60dfd46a-4649-4758-8b8d-88cc562b9b39 | private | 10.180.14.160/27 |
+--------------------------------------+---------+------------------+

List of images stored in Glance…

[root@controller-hostname ~]# nova image-list
+--------------------------------------+---------------+--------+--------------------------------------+
| ID | Name | Status | Server |
+--------------------------------------+---------------+--------+--------------------------------------+
| ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8 | Centos-6 | ACTIVE | |
| a338631b-3bb8-43ba-a700-d4648c040a05 | cirros | ACTIVE | |
| e8c477ae-7c74-497d-9d9b-5fea1035d899 | henryvm-snap1 | ACTIVE | aa7c5535-4259-42f0-8d74-5b26f0d731de |
+--------------------------------------+---------------+--------+--------------------------------------+

List of flavors available…

[root@controller-hostname ~]# nova flavor-list
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+
| 1 | m1.tiny | 512 | 1 | 0 | | 1 | 1.0 | True |
| 2 | m1.small | 2048 | 20 | 0 | | 1 | 1.0 | True |
| 3 | m1.medium | 4096 | 40 | 0 | | 2 | 1.0 | True |
| 4 | m1.large | 8192 | 80 | 0 | | 4 | 1.0 | True |
| 5 | m1.xlarge | 16384 | 160 | 0 | | 8 | 1.0 | True |
+----+-----------+-----------+------+-----------+------+-------+-------------+-----------+

List of security groups created…

[root@controller-hostname ~]# nova secgroup-list
+----+---------+-------------+
| Id | Name | Description |
+----+---------+-------------+
| 1 | default | default |
+----+---------+-------------+

You may want to generate SSH keys to allow users to login to the newly created instance.

[root@controller-hostname ~]# ssh-keygen

Add the SSH public key to the nova keypair list..

[root@controller-hostname ~]# nova keypair-add --pub-key ~/.ssh/id_rsa.pub test-key

View the list of key pairs created…

[root@controller-hostname ~]# nova keypair-list
+----------+-------------------------------------------------+
| Name | Fingerprint |
+----------+-------------------------------------------------+
| test-key | b0:e1:ff:a5:1b:b0:ff:14:d5:46:13:bc:b6:ba:97:9b |
+----------+-------------------------------------------------+

Create an Instance

Based on the output from above commands, you can create a new instance as below:

[root@controller-hostname ~]# nova boot --flavor m1.small --image Centos-6 --nic net-id=60dfd46a-4649-4758-8b8d-88cc562b9b39 --security-group default --key-name test-key myfirstvm
+--------------------------------------+-------------------------------------------------+
| Property | Value |
+--------------------------------------+-------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | - |
| OS-EXT-SRV-ATTR:hypervisor_hostname | - |
| OS-EXT-SRV-ATTR:instance_name | instance-00000016 |
| OS-EXT-STS:power_state | 0 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | building |
| OS-SRV-USG:launched_at | - |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| adminPass | hEMdKAnLs6XX |
| config_drive | |
| created | 2015-02-18T08:56:32Z |
| flavor | m1.small (2) |
| hostId | |
| id | a9735dd7-c601-4209-a86a-0575711239d1 |
| image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) |
| key_name | test-key |
| metadata | {} |
| name | myfirstvm |
| os-extended-volumes:volumes_attached | [] |
| progress | 0 |
| security_groups | default |
| status | BUILD |
| tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| updated | 2015-02-18T08:56:32Z |
| user_id | 8607e0ccc8ee407daf50c1985616b153 |
+--------------------------------------+-------------------------------------------------+

Check if the state of the VM is “ACTIVE” using the below command…

[root@controller-hostname ~]# nova list
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+
| 8aaa3873-09c5-48f0-9d1e-cb4401e44583 | Cluster-headnode | ACTIVE | - | Running | private=10.180.14.162 |
| a9735dd7-c601-4209-a86a-0575711239d1 | myfirstvm | ACTIVE | - | Running | private=10.180.14.163 |
+--------------------------------------+------------------+--------+------------+-------------+-----------------------+

The new VM called “myfirstvm ” is running and the allocated IP address is 10.180.14.163 .

Login to an instance

[root@controller-hostname ~]# cd .ssh/
[root@controller-hostname .ssh]# ssh -i id_rsa [email protected]
Last login: Wed Feb 18 09:01:07 2015 from 10.180.10.132
[centos@myfirstvm ~]$ hostname
myfirstvm

Nota: Since we installed “Horizon” service on controller node, you should be able to create an instance via OpenStack dashboard. That’s super easy!

What is the password for Cirros?

In case, if you have used Cirros image to create an instance, then you must login with username as ‘cirros’ and password as ‘cubswin:)’ (of course, without single quotes).

To know information about the running VM, you can just issue the below command.

[root@controller-hostname ~]# nova show myfirstvm
+--------------------------------------+----------------------------------------------------------+
| Property | Value |
+--------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig | MANUAL |
| OS-EXT-AZ:availability_zone | nova |
| OS-EXT-SRV-ATTR:host | gcompute.blr.cdac.in |
| OS-EXT-SRV-ATTR:hypervisor_hostname | gcompute.blr.cdac.in |
| OS-EXT-SRV-ATTR:instance_name | instance-00000016 |
| OS-EXT-STS:power_state | 1 |
| OS-EXT-STS:task_state | - |
| OS-EXT-STS:vm_state | active |
| OS-SRV-USG:launched_at | 2015-02-18T08:56:54.000000 |
| OS-SRV-USG:terminated_at | - |
| accessIPv4 | |
| accessIPv6 | |
| config_drive | |
| created | 2015-02-18T08:56:32Z |
| flavor | m1.small (2) |
| hostId | bd672087b1933d00d10e9d4f85cbac0326ebf3de73a0ce093c0d1838 |
| id | a9735dd7-c601-4209-a86a-0575711239d1 |
| image | Centos-6 (ac7ffb6d-1594-4a4c-94e7-9d8e70a120a8) |
| key_name | test-key |
| metadata | {} |
| name | myfirstvm |
| os-extended-volumes:volumes_attached | [] |
| private network | 10.180.14.163 |
| progress | 0 |
| security_groups | default |
| status | ACTIVE |
| tenant_id | e7c679bc36ec4c298cf68ecf6d49c1b3 |
| updated | 2015-02-18T08:56:41Z |
| user_id | 8607e0ccc8ee407daf50c1985616b153 |
+--------------------------------------+----------------------------------------------------------+

Stop an Instance

If you want to stop a running instance, here’s how you can do that.

[root@controller-hostname ~]# nova stop myfirstvm

If you want to delete an instance completely, then here’s the command.

[root@controller-hostname ~]# nova delete myfirstvm

How to add another compute node to the OpenStack environment?
It’s simple! Just follow the same steps that we used for Compute-hostname node.

Do you like this tutorial? Share it with OpenStack community by clicking the share icons at the top.

And the Bonus is here…

    Download Free ebook on OpenStack Icehouse Installation! Download OpenStack Command Line Interface Cheat Sheet! – Most Commonly used Commands

Cent OS
  1. Cómo instalar Node.js y NPM en CentOS

  2. Instalar Grafana en CentOS 8 - ¿Guía paso a paso?

  3. Instalar Transmission en CentOS 8 - ¿Una guía paso a paso?

  4. Instalar Mattermost en CentOS 8:¿una guía paso a paso?

  5. Instalar Gparted en CentOS 8:¿una guía paso a paso?

Cómo instalar Node.js y npm en CentOS 8

Cómo instalar OpenStack de un solo nodo en CentOS 7

Cómo instalar Node.js en CentOS 8

Cómo instalar Node.js en CentOS 7

Cómo instalar facturas simples en CentOS 7

Cómo instalar Node.js en CentOS Stream 9