INSTALADOR DESATENDIDO (SEMI AUTOMATIZADO) PARA OPENSTACK (GRIZZLY) Reynaldo R. Martinez P. E-Mail: [email protected] Caracas, Venezuela.
Este instalador fue realizado para automatizar las tareas de creación de una infraestructura de virtualización basada en OpenStack. Hasta el momento, existen dos "sabores" del instalador, uno para Debian 7 y otra para Centos 6.
Ambos "sabores" producen esencialmente lo mismo: Un OpenStack completamente utilizable para producción.
USO DEL INSTALADOR.
Primero: LEA, LEA, LEA y luego de descansar de leer, LEA DE NUEVO !!.
Lea todo lo que puede de OpenStack si desea incursionar en el área de virtualización en la nube. Si no le gusta leer, entonces apóyese en alguien que si tenga la disposición para hacerlo, pero no trate de usar este instalador sin tener algún tipo de conocimientos a la mano. Vea el archivo "NOTAS.txt" para entender un poco mas de cuales conocimientos usted debería tener.
El sub-mundo de OpenStack engloba varias tecnologías del mundo de Software Libre y del mundo de Redes que deben ser comprendidas muy bien antes de siquiera intentar hacer cualquier instalación de openstack ya sea con esta herramienta de instalación o con cualquier otra. En resumen, si usted no tiene los conocimientos, no lo intente. Adquiera los conocimientos primero, y luego proceda !.
Antes de usar el instalador, debe preparar su o sus servidores. De nuevo, en el archivo "NOTAS.txt" hay puntos importantes que deben ser cubiertos antes de iniciar una instalación usando estas herramientas. El instalador hará una serie de validaciones que, en caso de arrojar resultados negativos, hará que aborte el proceso.
Segundo: Modifique el archivo de configuración del instalador.
El instalador tiene un archivo central de configuración: ./configs/main-config.rc. Dicho archivo está bastante documentado, de manera que si usted hizo "su tarea" y estudió de OpenStack, sabrá que debe modificar en el mismo. Hay cosas muy obvias como "contraseñas", "direcciones IP", "módulos a instalar" y "dominios de dns".
En su versión por defecto, el archivo de configuración tiene las selecciones de módulos para instalar lo que se conoce como un "all-in-one" (un servidor monolítico de OpenStack con todos los servicios).
Adicionalmente, existen tres módulos que por defecto están en "no": Ceilometer, swift y snmp. En la versión de OpenStack usada por este instalador (grizzly) ceilometer está aun en prueba de concepto. El módulo de swift se puede instalar "si usted realmente va a usarlo". Swift por si solo ya es casi tan extenso como todo OpenStack. Úselo si REALMENTE sabe lo que está haciendo y si REALMENTE lo va a utilizar. El módulo de SNMP instala variables de monitoreo útiles si usted va a monitorear OpenStack vía snmp pero no instala ningún tipo de aplicación de monitoreo. Las variables están descritas (si usted instala el soporte) en el archivo /etc/snmp/snmpd.conf.
Si usted desea instalar un "all-in-one", sólo modifique las contraseñas, direcciones IP y dominios de correo y de dhcp/dnsmasq que aparecen en el archivo de configuración.
Luego de actualizar su archivo de configuración, ejecute en la raíz del directorio del script el comando siguiente:
El instalador le preguntará si quiere proceder (y/n).
Si ejecuta el instalador con el parámetro adicional "auto", el mismo seguirá de manera automática sin preguntar. Ejemplo:
Usted puede guardar todas las salidas del instalador usando la herramienta "tee". Ejemplo:
Todo lo que haga y saque a consola el instalador quedará guardado en el archivo "install-log.log" o como haya decidido llamarlo.
CASOS TÍPICOS DE INSTALACIÓN
En una instalación mas convencional y de producción de OpenStack, usted tendrá "por lo menos" un nodo de control (llamado "controller") y nodos adicionales de computación (llamados "compute").
En tal caso, debe instalar primero el controller. Modifique el archivo de configuración para incluir los módulos que normalmente debe llevar un controller. Específicamente: glance, cinder, quantum, nova, y el dashboard (horizon).
Si su nodo de controller va a incluir un servicio de compute (controller + compute), la siguiente variable del archivo de configuración debe estar en "no":
nova_without_compute="no"
En cambio, si va a instalar un controlador "puro" (sin servicio de compute) coloque la variable en "yes":
nova_without_compute="yes"
Nodos de compute: Para los nodos de compute, debe dejar en "yes" sólo las variables de instalación de los módulos de nova y quantum. El resto de los módulos (glance, cinder, horizon, etc.) deben estar en "no". Adicionalmente, las siguiente variables en las secciones de nova y quantum deben estar en "yes":
nova_in_compute_node="yes" quantum_in_compute_node="yes"
Debe colocar las IP's de los servicios de quantum, keystone, glance y cinder según la que tiene el controlador (incluyendo las Ip's del backend de Base de Datos). En cambio, las siguientes variables deben ser colocadas a la IP del nodo de compute:
novahost="IP del Nova Compute Host" glancehost="IP del Controlador" cinderhost="IP del controlador" quantumhost="IP del controlador" keystonehost="IP del controlador" messagebrokerhost="IP del controlador" dbbackendhost="IP del controlador o del backend de base de datos" vncserver_controller_address | spiceserver_controller_address = "IP del controlador"
BACKEND DE BASE DE DATOS
El instalador tiene la posibilidad de instalar y configurar el backend de base de datos, y de crear las bases de datos. Esto es completamente controlable por el archivo de configuración a través de las siguientes variables:
dbcreate="yes" dbinstall="yes" dbpopulate="yes"
Con estas tres opciones en "yes", se instalará el software de base de datos, se configurará y se crearán las bases de datos, todo con la información contenida en el archivo de configuración.
ALERTA: Si usted elige estas opciones, se debe asegurar que no exista previamente software de base de datos instalado o el proceso fallará.
Si usted desea "no instalar el software" pero si tiene acceso administrativo completo al backend de base de datos, coloque las siguiente combinación:
dbcreate="yes" dbinstall="no" dbpopulate="yes"
Con esto, el software de base de datos no será instalado, pero queda de parte de usted (o su DBA) asegurarse que tiene acceso administrativo completo para crear y modificar bases de datos en el backend seleccionado.
Si no desea ni instalar ni crear bases de datos (asumimos que ya las tiene previamente creadas) coloque los tres valores en "no":
dbcreate="no" dbinstall="no" dbpopulate="no"
BACKEND DE MENSAJERÍA (Message Broker)
Como parte de los componentes a instalar y configurar, este instalador instala y configura el software para AMQP (el Message Broker). Esto es un paso mandatorio para un controlador o un "all-in-one". Si su o sus servidores ya tienen un messaje broker instalado, pueden ocurrir conflictos que prevengan el correcto funcionamiento de la instalación.
SCRIPTS DE AYUDA
Este instalador colocará en /usr/local/bin un script de ayuda para poder levantar, bajar, desactivar, activar los servicios de openstack:
openstack-control.sh OPCIÓN
El script utiliza las siguientes opciones
enable: activa los servicios para autoarranque en el boot del servidor. disable: desactiva los servicios para autoarranque en el boot del servidor. start: arranca todos los servicios. stop: detiene todos los servicios. restart: reinicia todos los servicios. status: muestra el estado de todos los servicios.
IMPORTANTE: El script "openstack-control.sh" tiene la gran ventaja de subir (o bajar) todos los servicios de openstack en el orden correcto. Tanto los paquetes de debian como los de centos colocan el orden no precisamente "óptimo". Recomendación: colocar lo siguiente en el /etc/rc.d/rc.local del servidor para forzar a que los servicios de OpenStack arranquen en el orden correcto:
/usr/local/bin/openstack-control.sh restart
NOTA: El script detecta que servicios de OpenStack fueron instalados y configurados por el instalador para iniciar/detener/reiniciar/habilitar/deshabilitar/verificar los servicios correctos en el orden correcto.
Adicional a "openstack-control.sh", el instalador copia a /usr/local/bin el script "openstack-log-cleaner.sh". Este script tiene como función limpiar todos los logs de todos los componentes de OpenStack instalados por esta herramienta de instalación.
El script es llamado durante la fase final de instalación para limpiar los logs antes de dejar el servidor instalado, pero puede ser utilizado también para limpiar los logs en caso de ser necesario.
DNSMASQ
El instalador crea una configuración personalizada del componente "dnsmasq" usado por el agente DHCP de Quantum (quantum-dhcp-agent). Dicha configuración incluye un archivo donde usted puede colocar opciones especiales:
/etc/dnsmasq-quantum.d/quantum-dnsmasq-extra.conf
Hay ejemplos comentados en el archivo. Use esos ejemplos para pasar opciones a las distintas instancias de dnsmasq creadas para cada subred donde usted active la opción de usar "dhcp".
Recomendación: Trate de tener una buena estructura de "DNS" para sus máquinas virtuales de manera que las pueda identificar de manera apropiada y utilice las opciones de dnsmasq para agregar o separar subdominios para cada rango de IP's.
MODULARIZACIÓN DEL INSTALADOR
Si bien el proceso de instalación principal "main-installer" se encarga de llamar a cada módulo de cada componente del instalador, dichos módulos son realmente independientes entre si, al punto de que pueden ser llamados de manera secuencial. No es el caso común, pero puede hacerse. El orden normal de ejecución de cada módulo es el siguiente (asumiendo que todos los componentes serán instalados):
requeriments.sh messagebrokerinstall.sh databaseinstall.sh requeriments-extras.sh (sólo presente en el "sabor" de debian 7) keystoneinstall.sh swiftinstall.sh glanceinstall.sh cinderinstall.sh quantuminstall.sh novainstall.sh ceilometerinstall.sh snmpinstall.sh horizoninstall.sh postinstall.sh
Si desea ejecutar los módulos en orden sin usar el instalador principal, debe ejecutarlos desde el directorio donde se encuentra el instalador, de la siguiente manera:
Todos los módulos leen el archivo de configuración (./configs/main-config.rc) y tomarán las opciones de configuración desde dicho archivo.
Cada módulo que se ejecuta de manera exitosa dejará una serie de archivos de control en el directorio siguiente:
/etc/openstack-control-script-config
Dichos archivos de control son utilizados por los módulos para evitar una re-ejecución de los mismos que pueda causar problemas en la instalación de OpenStack, y también son utilizados por el script "openstack-control.sh" para saber que componentes de OpenStack fueron instalados de manera exitosa y que servicios están instalados para iniciar/detener/reiniciar/etc.
RECOMENDACIONES DE INSTALACIÓN PARA CENTOS Y DEBIAN.
Centos 6:
Instale centos con la selección de paquetes para "Basic Server" (servidor básico). Asegúrese de tener correctamente instalado, configurado y operativo el servicio ntpd. Se recomienda también usar ntpdate.
Agregue los repositorios EPEL y RDO (ver "NOTAS.txt").
Instale y configure OpenVSWitch (de nuevo, ver "NOTAS.txt").
Debian 7:
Instale debian con la selección de paquetes "Standard System Utilities" (utilitarios de sistema estandard) y con SSH Server (servidor ssh). Asegúrese de tener correctamente instalado, configurado y operativo el servicio ntpd. Se recomienda también usar ntpdate.
Agregue el repositorio de OpenStack para Debian y asegúrese de tener las ramas completas para sus repos de debian (ver "NOTAS.txt").
Instale y configure OpenVSWitch (de nuevo, ver "NOTAS.txt").
Cinder:
Si va a usar CINDER con lvm-iscsi, asegúrese de tener una partición o disco libre para crear un LVM llamado "cinder-volumes". Ejemplo (disco libre /dev/sdc):
pvcreate /dev/sdc vgcreate cinder-volumes /dev/sdc
Otro ejemplo con una partición libre /dev/sda3:
pvcreate /dev/sda3 vgcreate cinder-volumes /dev/sda3
Swift:
Si va a usar swift, recuerde que debe tener el disco/partición de swift montado sobre un directorio específico y este debe ser indicado en la configuración del instalador (main-config.rc).
Ejemplo:
Variable swiftdevice="d1"
En el fstab "d1" debe estar montado así:
/dev/sdc1 /srv/node/d1 ext4 acl,user_xattr 0 0
En este ejemplo, se asume que existe ya una partición "/dev/sdc1" previamente formateada en ext4 o cualquier otro sistema de archivos soportado por Linux.
También puede usar un recurso NFS. Ejemplo:
192.168.56.1:/exports/nfs_for_swift /srv/node/d1 nfs rw,auto,vers=3,proto=tcp,acl,user_xattr 0 0
Arquitectura:
Tanto en debian como en centos, debe elegir utilizar 64 bits (amd64/x86_64). No trate de instalar OpenStack en 32 bits.
Servicio NTP:
Es VITAL que sus servidores de OpenStack tengan una correcta sincronización de tiempo o habrá serios problemas entre el controller y los nodos de compute. Lea la documentación de OpenStack para saber mas al respecto.
RECOMENDACIONES PARA VIRTUALBOX.
Usted puede usar este instalador en una VM de VirtualBox si no desea usar un servidor "real" para practicar y aprender OpenStack. Debería tener un "mínimo absoluto" de 2GB's de RAM en su equipo "real" y asignar al menos 900 Mb's de RAM a la VM de VirtualBox, pero si quiere hacer una prueba mas extensa, trate de tener una VM con al menos 4 GB's.
Recomendaciones de hardware para una VM de VirtualBox:
Discos Duros: Uno para el sistema operativo (16 Gb's mínimo), uno para Cinder-Volumes y otro para swift - espacio variable... mínimo 8GB's para cada disco (switf y cinder-volumes). Red: tres interfaces:
- Interfaz 1 en modo NAT para salida a Internet.
- Interfaz 2 en modo "host only adapter, promisc: todos", para poder administrar el Servidor OpenStack - sugerencia: Usar vboxnet0 con la red 192.168.56.0/24 (desactivar el dhcp de virtualbox) y asignarle la IP 192.168.56.2 a la interfaz (la .1 estará en la máquina real).
- Interfaz 3 en modo "host only adapter, promiscq:q: todos", para poder asignar a las VM's de OpenStack la red en la interfaz eth2 y el rango IP 192.168.57.0/24 (la IP 192.168.57.1 estará en la máquina real).
Hacer la instalación del S/O de 64 bits de su preferencia. Agregar los repositorios y soporte ntp según las recomendaciones en este documento, crear el switch de OpenVSWITCH br-int, crear el switch de OpenVSWITCH br-eth2 y agregarle el puerto eth2 (la interfaz 3 en la VM de VirtualBox).
Crear el volumen de cinder contra el segundo disco duro de la VM de virtualbox:
pvcreate /dev/sdb vgcreate cinder-volumes /dev/sdb
Si va a usar swift, crear la partición en el tercer disco (/dev/sdc1) y montarla según las notas en este documento.
Hacer la instalación indicando que el Mapping de bridge (dentro de main-config.rc) es:
bridge_mappings="publica:br-eth2"
Cambiar la IP en el main-config.rc a la IP asignada a la VM en la red 192.168.57.0/24.
Ejecutar el instalador.
Disfrutar de OpenStack :-)
Usted podrá entrar al servidor vía web por la interfaz 192.168.56.x para ejecutar las tareas de administración de OpenStack. Creé su subred en el rango de eth2 (192.168.57.0/24) y podrá entrar a las VM's de OpenStack desde su máquina real que tendrá la interfaz 192.168.57.1.
DESINSTALACIÓN
El script principal tiene también un parámetro que llama al módulo de desinstalación:
o
La primera forma de llama al proceso de desinstalación, preguntará "y/n" para proseguir o abortar, pero al ser llamado con el parámetro extra "auto", no habrá preguntas y todo lo que el instalador instaló será eliminado del servidor.
Es importante tener en cuenta que si se utilizó la opción dbinstall="yes", el desinstalador eliminará no solamente el manejador de base de datos sino también las bases de datos creadas.
Si usted desea NO ELIMINAR las bases de datos creadas, modifique el "main-config.rc" y coloque la opción dbinstall="no". Esto hará que el desinstalador no elimine ni el manejador de base de datos ni las bases de datos creadas.
Esto es muy conveniente para una reinstalación. Si por alguna razón su instalación de OpenStack requiere ser reconstruida sin tocar las bases de datos o el manejador, desinstale usando dbinstall="no", y cuando vaya a reinstalar, coloque todas las opciones de base de datos en "no" para conservar tanto el manejador como las bases de datos y data creada:
dbcreate="no" dbinstall="no" dbpopulate="no"
Si su instalación tiene múltiples nodos (controller / compute) use los archivos "main-config.rc" con los que instaló cada nodo para la desinstalación del nodo correspondiente.
NOTAS FINALES
Este instalador fue orientado inicialmente al modelo de red flat/vlan's con router externos donde el módulo de red (Quantum) no canalizará tráfico (sólo manejará los recursos de puertos de ovs y lbaas y levantará las configuraciones necesarias). En este modelo, quantum "no se convierte" en un posible cuello de botella para el tráfico de red. Sin embargo, usted "si tiene los conocimientos de configuración de openstack" puede adaptar la configuración y/o los módulos a sus necesidades en caso de querer utilizar el modelo de tunneling o cualquier otra configuración de Quantum que requiera.
FIN.-