Este será un tutorial completo sobre la instalación de OpenStack (configuración mínima). Me gustaría mucho probar el sistema operativo en la nube de código abierto, y OpenStack es una de las soluciones serias, utilizada por muchas instituciones y empresas. El Cern es uno de los usuarios, y Red Hat apoya firmemente OpenStack.
Tenga en cuenta: Incluso después de este tutorial «planificado», se le dará la bienvenida con errores después de configurar todo, y tendrá que investigar más para que su OpenStack funcione bien. Escribiré sobre algunos de los problemas en algunas guías rápidas más.
OpenStack también tiene reputación de ser complicado de instalar y mantener y no muy estable. Leí mucho sobre el tema de OpenStack, revisé mucha documentación y este es el resultado. Esto cubrirá la instalación manual de la liberación del tren, y esta extensa serie cubrirá todos los componentes de la instalación mínima de OpenStack (no deje que este mínimo lo engañe, hay mucho que hacer).
Hay algunas diferencias entre la documentación oficial de OpenStack y la implementación en sí, por lo que este tutorial también debería ayudarlo a ahorrar incontables horas de buscar errores y descifrar errores a través del camino.
El procedimiento es tedioso, pero lo recomiendo encarecidamente, ya que al final, tendrá una buena comprensión de los principios básicos de OpenStack.
Más sobre el tema la próxima vez, pongámonos a trabajar.
Hay una curva de aprendizaje, y por lo que he leído, creo que OpenStack es en este momento una solución estable para sus necesidades en la nube.
Pero, veremos en el camino, vamos a sumergirnos.
Requisitos previos
Usaré CentOS 7 para mis instalaciones (v. 1908). Crearé mi LABORATORIO en VMware Fusion / Workstation. La instalación inicial de CentOS es mínima sin GUI ni adiciones.
Todas mis máquinas virtuales tendrán núcleos de 4 CPU y 8 GB de RAM con un mínimo de disco duro de 120 GB.Puede encontrar los requisitos mínimos aquí: https://docs.openstack.org/install-guide/overview.html
Tome nota de los requisitos adicionales de los componentes de la red y de la unidad y agréguelos en consecuencia a su LABORATORIO.
Mi LABORATORIO tiene acceso a internet.
Seguiré la documentación de OpenStack en el camino – https://docs.openstack.org/install-guide/common/conventions.html
Instalaré Train build, que es el actual. Comenzaré con el Nodo de Controlador 1 y el Nodo de Cómputo 1.
La red del proveedor será la siguiente (necesita acceso a Internet para esta configuración):
10.0.0.1/24 – puerta de enlace
10.0.0.11/24 – Nodo de controlador 1
10.0.0.31/24 – Nodo de Cómputo 1
10.0.0.41/Nodo de almacenamiento de 24 bloques 1
10.0.0.51/24-Nodo de almacenamiento de objetos 1
10.0.0.52/24 – Nodo de almacenamiento de objetos 2
También crearé una red en el rango 203.0.113.0 / 24, que será red de administración.
Aquí también están los nombres y direcciones IP de las máquinas (también las necesitará en el archivo hosts):
10.0.0.11 controller
10.0.0.31 compute1
10.0.0.41 block1
10.0.0.51 object1
10.0.0.52 object2
Cambiar el nombre de host de la máquina
Para cada máquina del laboratorio cambiar el nombre de host. Cambiaré mis nombres de host a los nombres que especificé justo arriba de esto.
El comando está debajo, el controlador es el nombre de una de las máquinas, cámbielo a lo que considere adecuado.
sudo hostnamectl set-hostname controller
Aquí es lo que el cambio se ve después de reiniciar el sistema.
puse el nombre de mi máquinas – controlador, compute1, block1, objeto1, objeto2.
Configurar la resolución de nombres
Editar la interfaz de red ubicada en /etc/sysconfig/network-scripts
En mi caso, tengo la interfaz ifcfg-ens33
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
Edité las siguientes líneas (ejemplo de máquina controladora):
BOOTPROTO=noneIPADDR=10.0.0.11PREFIX=24GATEWAY=10.0.0.1DNS1=10.0.0.1DNS2=8.8.8.8ONBOOT=yesIPV6INIT=no
Así es como se ve
Reinicie la máquina después de establecer la configuración de ip. Repita estos pasos para todas las máquinas del laboratorio (por supuesto, establezca una dirección IP diferente para cada una).
Actualizar la instalación de CentOS
Antes de continuar, actualizaremos nuestras instalaciones de CentOS. De esta manera también confirmaremos nuestra conectividad a Internet.
sudo yum update -y
Editar archivo de Hosts
De nuevo, tenemos que hacer eso en cada máquina. Editaremos el archivo hosts, para que las máquinas puedan verse entre sí por el nombre.
sudo vi /etc/hosts/
Esto es lo que necesitamos para entrar
10.0.0.11 controller10.0.0.31 compute110.0.0.41 block110.0.0.51 object110.0.0.52 object2
Aquí es cómo mi archivo se parece
Si hemos hecho todo bien, ahora se debería poder hacer ping desde el controlador a compute1 y viceversa por el nombre. (Asegúrese de que su ping está disponible a través de firewall)
Funciona.Introduzca estos valores en cada archivo host de cada máquina y asegúrese de que puede hacer ping a cada máquina y realizar pruebas desde cada máquina.
Configurar el servicio NTP
La medición de tiempo precisa es importante, por lo que configuraremos el servidor de tiempo y le adjuntaremos clientes. El servidor de tiempo será nuestro servidor controlador y cliente de todas las demás máquinas.
Configuración del servidor NTP
Haremos esto en nuestro servidor controlador.
sudo yum install chrony -y
Habilitar e iniciar el servicio ejecutando
sudo systemctl start chronydsudo systemctl enable chronyd
también puede comprobar el estado de servicio, ejecutando
systemctl status chronyd
a continuación, vamos a editar el archivo /etc/chrony.archivo conf
sudo vi /etc/chrony.conf
Para este tutorial, dejaré los servidores centos NTP predeterminados. De lo contrario, si desea editar servidores NTP, puede agregar el comando a continuación (Reemplazar NTP_SERVER con el nombre del servidor NTP)
server NTP_SERVER iburst
También necesitaremos habilitar el acceso para nuestros clientes NTP desde la red local descomentando y editando la siguiente línea
allow 10.0.0.0/24
Aquí está mi configuración. La parte verde es donde ingresará a sus servidores NTP, y la parte roja está habilitada para el acceso desde nuestra red local para la sincronización de tiempo.
Reinicie el servidor o chrony servicio tecleando
sudo systemctl restart chronyd
vamos a comprobar si nuestro servidor es la sincronización de tiempo escribiendo en
chronyc sources
el Servicio funciona para mí.
También lo habilitaremos a través del firewall
sudo firewall-cmd --permanent --add-service=ntpsudo firewall-cmd --reload
Configuración de clientes NTP
Estos pasos deben realizarse en el resto de las máquinas.
De nuevo, necesitamos instalar chrony
sudo yum install chrony
Habilitar e iniciar el servicio NTP
sudo systemctl start chronydsudo systemctl enable chronyd
Después de eso, nuevamente necesitamos editar /etc/chrony.conf
sudo vi /etc/chrony.conf
Deberá eliminar todos los comentarios de todos los servidores NTP e ingresar lo siguiente
server controller iburst
Deje todo como está y cierre el archivo. Así es como se ve el mío.
de Nuevo, reiniciar el servicio de NTP
sudo systemctl restart chronyd
Y permite comprobar si funciona
chronyc sources
funciona, el cliente se está comunicando con el servidor NTP.
Y, en servidor NTP si entramos comando
chronyc clients
veremos que compute1 es cliente NTP
Repita el paso sobre el resto de las máquinas.
Paquetes OpenStack
Estos pasos se deben realizar en todos los nodos. Si no ha actualizado su instalación de CentOS, y también deshabilita el repositorio de EPEL.
!!!///SOLO PARA INSTALACIONES DE RED HAT, CENTOS OMITE ESTE
subscription-manager repos --enable=rhel-7-server-optional-rpms \ --enable=rhel-7-server-extras-rpms --enable=rhel-7-server-rh-common-rpms
Ejecute el siguiente comando (estamos instalando la versión del tren)
sudo yum install centos-release-openstack-train
El siguiente comando que ejecutaremos es
sudo yum upgrade
Reinicie después y seleccione nuevo núcleo para activarlo.
El siguiente comando será
sudo yum install python-openstackclient
Y por último, necesitamos integrar nuestra instalación de OpenStack en SELinux
sudo yum install openstack-selinux
La base de datos SQL
se instalará en el nodo del controlador.Instalaremos MariaDB.
sudo yum install mariadb mariadb-server python2-PyMySQL
Una vez finalizada la instalación, tendremos que editar un openstack.conf ubicado en / etc / my.cnf.d
sudo vi /etc/my.cnf.d/openstack.conf
Crearemos la sección mysqld con la siguiente información (asegúrese de que bind-address es la dirección de su controlador)
bind-address = 10.0.0.11default-storage-engine = innodbinnodb_file_per_table = onmax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8
Así es como se ve en mi caso
Habilitar e iniciar MariaDB
sudo systemctl enable mariadb.servicesudo systemctl start mariadb.service
También agregaremos excepción de firewall
sudo firewall-cmd --permanent --add-service=mysqlsudo firewall-cmd --reload
Finalmente aseguraremos nuestra instalación y estableceremos la contraseña para root sql usuario
sudo mysql_secure_installation
Cola de mensajes
OpenStack utiliza la cola de mensajes para coordinar operaciones y estado entre servicios. Por lo general, se ejecuta en el controlador, por lo que lo instalaremos en el controlador. Vamos a instalar RabbitMQ
Instalación
sudo yum install rabbitmq-server
Iniciar y activar el servicio
sudo systemctl enable rabbitmq-server.servicesudo systemctl start rabbitmq-server.service
Añadir openstack usuario a ello. Reemplaza RABBIT_PASS con tu contraseña.
sudo rabbitmqctl add_user openstack RABBIT_PASS
Establecer permisos
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Estos son ajustes de firewall para RabbitMQ
sudo firewall-cmd --zone=public --permanent --add-port=4369/tcp --add-port=25672/tcp --add-port=5671-5672/tcp --add-port=15672/tcp --add-port=61613-61614/tcp --add-port=1883/tcp --add-port=8883/tcpsudo firewall-cmd --reload
Comando SELinux opcional
setsebool -P nis_enabled 1
Memcached
El mecanismo de autenticación de servicio de identidad para servicios utiliza Memcached para almacenar en caché tokens. El servicio memcached normalmente se ejecuta en el nodo del controlador, por lo que lo instalaré en el nodo del controlador.
Installation
sudo yum install memcached python-memcached
Next, we will edit /etc/sysconfig/memcached
sudo vi /etc/sysconfig/memcached
controller should be added to OPTIONS line, like this
OPTIONS="-l 127.0.0.1,::1,controller"
At last, we will enable and start service
sudo systemctl enable memcached.servicesudo systemctl start memcached.service
Optional firewall settings for memcached
sudo firewall-cmd --new-zone=memcached --permanentsudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=10.0.0.0/24 --permanentsudo firewall-cmd --reload
Etcd
Short explanation from docs.openstack.los servicios org-OpenStack pueden usar Etcd, un almacén de valor de clave distribuido confiable para el bloqueo de claves distribuidas, el almacenamiento de la configuración, el seguimiento de la vida útil del servicio y otros escenarios.
Etcd debe instalarse en el nodo del controlador.
Instalación
sudo yum install etcd
A continuación editaremos /etc / etcd / etcd.conf
sudo vi /etc/etcd/etcd.conf
Debe editar el archivo de esta manera y cambiar los valores a continuación para que coincidan con la IP o el nombre de su controlador.
#ETCD_DATA_DIR="/var/lib/etcd/default.etcd"ETCD_LISTEN_PEER_URLS="http://10.0.0.11:2380"ETCD_LISTEN_CLIENT_URLS="http://10.0.0.11:2379"ETCD_NAME="controller"#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.0.0.11:2380"ETCD_ADVERTISE_CLIENT_URLS="http://10.0.0.11:2379"ETCD_INITIAL_CLUSTER="controller=http://10.0.0.11:2380"ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"ETCD_INITIAL_CLUSTER_STATE="new"
Así es como se ve mi archivo
Habilitar e iniciar el servicio
sudo systemctl enable etcdsudo systemctl start etcd
Configuración de firewall adicional
sudo firewall-cmd --add-port={2379,2380}/tcp --permanentsudo firewall-cmd --reload
Así que, estamos más o menos «listos» con la parte inicial, ahora haremos una implementación mínima para Train.
Despliegue mínimo para Train
Ok, por lo que hemos tenido éxito hasta ahora. Ahora haremos un despliegue de servicio mínimo para Train. Se pueden encontrar más detalles aquí: https://docs.openstack.org/install-guide/openstack-services.html
Los servicios deben instalarse en el orden especificado, como se muestra a continuación
Desde este tutorial ya va un poco largo, voy a terminarlo aquí y cubrir cada uno de los servicios anteriores en un tutorial separado.
Lo importante es hacer todos los servicios en orden exacto, ya que están a continuación.
Aquí están los enlaces
- Identity service – instalación keystone para tren
2. Servicio de imagen: instalación de un vistazo para el tren
3. Servicio de colocación-instalación de colocación para tren
4. Compute service – instalación de nova para tren
5. Servicio de red – instalación de neutrones para Tren
Recomendamos instalar también los siguientes componentes después de haber instalado los servicios de implementación mínima:
6. Tablero de instrumentos – instalación de horizon para tren
7. Servicio de almacenamiento de bloques: instalación de cenizas para trenes
8. Object Storage service – swift installation for Train
Additional links for after installation for errors you may encounter:
Disclaimer