Configure a Block Storage Service controllerThis section describes how to configure OpenStack Block Storage
services on the Controller node
and assumes that a
second node provides storage through the cinder-volume service. For
instructions on how to configure the second node, see .You can configure OpenStack to use various storage systems.
The examples in this guide show you how to configure LVM.Install the appropriate packages for the Block Storage
Service:#apt-get install cinder-api cinder-scheduler#yum install openstack-cinder#zypper install openstack-cinder-api openstack-cinder-schedulerRespond to the prompts for database
management, [keystone_authtoken] settings,
RabbitMQ credentials
and API endpoint
registration.Configure Block Storage to use your MySQL database. Edit the
/etc/cinder/cinder.conf file and add the
following key under the [database] section.
Replace CINDER_DBPASS with the password
for the Block Storage database that you will create in a later step.
The /etc/cinder/cinder.conf
file packaged with some distributions does not include the
[database] section header. You must add this
section header to the end of the file before proceeding further.#openstack-config --set /etc/cinder/cinder.conf \
database connection mysql://cinder:CINDER_DBPASS@controller/cinder[database]
...
connection = mysql://cinder:CINDER_DBPASS@controller/cinderTo create the Block Storage Service database and tables
and a cinder database user, run the
openstack-db command.#openstack-db --init --service cinder --password CINDER_DBPASSUse the password that you set to log in as root to create
a cinder database.#mysql -u root -pmysql>CREATE DATABASE cinder;mysql>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
IDENTIFIED BY 'CINDER_DBPASS';mysql>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
IDENTIFIED BY 'CINDER_DBPASS';Create the database tables for the Block Storage
Service.#cinder-manage db syncCreate a cinder user. The Block Storage
Service uses this user to authenticate with the Identity
Service. Use the service tenant and give
the user the admin role.#keystone user-create --name=cinder --pass=CINDER_PASS --email=cinder@example.com#keystone user-role-add --user=cinder --tenant=service --role=adminAdd the credentials to the file
/etc/cinder/api-paste.ini. Open the
file in a text editor and locate the section
[filter:authtoken]. Set the following
options:[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
auth_port = 35357
auth_protocol = http
auth_uri = http://controller:5000
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASSConfigure Block Storage to use the RabbitMQ message
broker by setting these configuration keys in the
[DEFAULT] configuration group of the
/etc/cinder/cinder.conf file. Replace
RABBIT_PASS with the password you
chose for RabbitMQ.[DEFAULT]
...
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_port = 5672
rabbit_userid = guest
rabbit_password = RABBIT_PASSConfigure Block Storage to use the Qpid message broker.#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rpc_backend cinder.openstack.common.rpc.impl_qpid#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT qpid_hostname controllerConfigure Block Storage to use the RabbitMQ message broker.
Replace RABBIT_PASS with the password
you chose for RabbitMQ.#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rpc_backend cinder.openstack.common.rpc.impl_kombu#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_host controller#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_port 5672#openstack-config --set /etc/cinder/cinder.conf \
DEFAULT rabbit_password RABBIT_PASSRegister the Block Storage Service with the Identity
Service so that other OpenStack services can locate it.
Register the service and specify the endpoint using the
keystone command.#keystone service-create --name=cinder --type=volume \
--description="Cinder Volume Service"#keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volume / {print $2}') \
--publicurl=http://controller:8776/v1/%\(tenant_id\)s \
--internalurl=http://controller:8776/v1/%\(tenant_id\)s \
--adminurl=http://controller:8776/v1/%\(tenant_id\)sAlso register a service and endpoint for version 2 of the
Block Storage Service API.#keystone service-create --name=cinderv2 --type=volumev2 \
--description="Cinder Volume Service V2"#keystone endpoint-create \
--service-id=$(keystone service-list | awk '/ volumev2 / {print $2}') \
--publicurl=http://controller:8776/v2/%\(tenant_id\)s \
--internalurl=http://controller:8776/v2/%\(tenant_id\)s \
--adminurl=http://controller:8776/v2/%\(tenant_id\)sRestart the cinder service with its new settings:#service cinder-scheduler restart#service cinder-api restartStart the cinder services and configure them to start when
the system boots.#service openstack-cinder-api start#service openstack-cinder-scheduler start#chkconfig openstack-cinder-api on#chkconfig openstack-cinder-scheduler on