De nombreux services OpenStack permettent à une base de données d'assurer le suivi des ressources critiques, leur utilisation et d'autres informations. Par défaut, les bases de données individuelles SQLite sont indiquées dans ce but, et s'avèrent utiles pour la configuration mononoeud. Pour les configurations multinoeuds, notamment dans un environnement de production, d'autres bases de données, telles que la base de données MySQL, sont recommandées pour le stockage de ces informations.
La communication entre services OpenStack utilise le protocole AMQP (Advanced Message Queuing Protocol). Sous Oracle Solaris, AMQP est implémenté par RabbitMQ. Le service RabbitMQ est obligatoire. Un seul noeud du cloud est généralement configuré pour exécuter RabbitMQ. Dans cette architecture, RabbitMQ est configuré pour s'exécuter sur le noeud de contrôleur.
controller# svcadm enable rabbitmq controller# svcadm restart rad:local
bind-address=$CONTROLLER_ADMIN_NODE_IP
controller# svcadm enable mysql
controller# mysqladmin -u root password MySQL-root-password
Créez les tables qui seront utilisées par OpenStack. Accordez les privilèges aux services sur le noeud de contrôleur afin de fournir un accès exclusif à ces bases de données.
controller# mysql -u root -p Enter password: MySQL-root-password mysql> drop database if exists nova; mysql> drop database if exists cinder; mysql> drop database if exists glance; mysql> drop database if exists keystone; mysql> drop database if exists neutron; mysql> drop database if exists heat; mysql> create database cinder default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on cinder.* to 'cinder'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> create database glance default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on glance.* to 'glance'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> create database keystone default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on keystone.* to 'keystone'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> create database nova default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on nova.* to 'nova'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> create database neutron default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on neutron.* to 'neutron'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> create database heat default character set utf8 default collate utf8_general_ci; mysql> grant all privileges on heat.* to 'heat'@'$CONTROLLER_ADMIN_NODE' identified by 'service-password'; mysql> flush privileges; mysql> quit