여러 OpenStack 서비스는 데이터베이스 유지 관리를 통해 중요한 리소스, 사용량 및 기타 정보를 추적합니다. 기본적으로 개별 SQLite 데이터베이스가 이 용도로 지정되며 단일 노드 구성에 유용합니다. 다중 노드 구성의 경우, 특히 운용 환경에서는 이 정보를 저장하는 데 MySQL 데이터베이스와 같은 다른 데이터베이스를 사용하는 것이 좋습니다.
OpenStack 서비스 사이의 통신은 AMQP(Message Queuing Protocol)를 통해 수행됩니다. Oracle Solaris에서 AMQP는 RabbitMQ에 의해 구현됩니다. 따라서 RabbitMQ는 필수 서비스입니다. 일반적으로 클라우드의 단일 노드는 RabbitMQ를 실행하도록 구성됩니다. 이 아키텍처에서 RabbitMQ는 컨트롤러 노드에서 실행되도록 구성됩니다.
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
OpenStack에서 사용될 테이블을 만듭니다. 컨트롤러 노드의 서비스에 권한을 부여하여 해당 데이터베이스에 대해 배타적 액세스 권한을 제공합니다.
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