Configuring a Block Storage Node
After you configure the services on the controller node, configure a second system to be a Block Storage node. This node contains the disk that will be used to serve volumes.
You can configure OpenStack to use various storage systems. The examples in this guide show how to configure LVM.
Configure a Block Storage Node
Using the instructions in
to configure the system. Note the following differences from the
controller node:
Set the hostname to block1. Ensure that the
IP addresses and hostnames for both nodes are listed in the
/etc/hosts file on each system.
Follow the instructions in
to synchronize from the controller node.
After you configure the operating system, install the appropriate
packages for the block storage service.
# apt-get install cinder-volume lvm2
# yum install openstack-cinder openstack-utils openstack-selinux
# zypper install openstack-cinder-volume
Copy the /etc/cinder/api-paste.ini
file from the controller,
or open the file in a text editor
and locate the section [filter:authtoken].
Make sure the following options are set:
[filter:authtoken]
paste.filter_factory=keystoneclient.middleware.auth_token:filter_factory
auth_host=controller
auth_port = 35357
auth_protocol = http
admin_tenant_name=service
admin_user=cinder
admin_password=CINDER_PASS
Configure the Block Storage Service to use the RabbitMQ
message broker by setting the following configuration keys. They are found in
the DEFAULT configuration group of the
/etc/cinder/cinder.conf file.
rpc_backend = cinder.openstack.common.rpc.impl_kombu
rabbit_host = controller
rabbit_port = 5672
# Change the following settings if you're not using the default RabbitMQ configuration
#rabbit_userid = guest
#rabbit_password = guest
#rabbit_virtual_host = /nova
Configure the Block Storage Service to
use Qpid as the 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 controller
Configure the Block Storage Service to use the
RabbitMQ message broker.
# 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
Configure the Block Storage Service on this Block Storage node to use the cinder database on the controller node.
# openstack-config --set /etc/cinder/cinder.conf \
database connection mysql://cinder:CINDER_DBPASS@controller/cinder
Edit /etc/cinder/cinder.conf
and change the [database] section.
[database]
...
# The SQLAlchemy connection string used to connect to the
# database (string value)
connection = mysql://cinder:CINDER_DBPASS@controller/cinder
...
Now, create the LVM Physical Volume and Logical Volume.
This guide assumes a second disk /dev/sdb that
will be used for this purpose.
# pvcreate /dev/sdb
# vgcreate cinder-volumes /dev/sdb
Add a filter entry to the devices section
/etc/lvm/lvm.conf to keep LVM from scanning devices
used by virtual machines.
You must add every physical volume that is
needed for LVM on the Cinder host. You can get a list by running
pvdisplay.
Each item in the filter array starts with either an
"a" for accept, or an "r" for reject.
Physical volumes that are needed on the Cinder host begin with
"a". The array must end with
"r/.*/" to reject any device not listed.
In this example, /dev/sda1 is the volume on which the
node's own operating system volumes reside, while /dev/sdb
is the volume reserved for cinder-volumes.
devices {
...
filter = [ "a/sda1/", "a/sdb/", "r/.*/"]
...
}
We now restart the cinder service with its new settings.
# service cinder-volume restart
# service tgt restart
Configure the ISCI target service to discover cinder volumes.
Add the following line to the top of /etc/tgt/targets.conf
if it is not already present:
include /etc/cinder/volumes/*
Start the cinder services and configure them to
start when the system boots.
# service openstack-cinder-volume start
# service tgtd start
# chkconfig openstack-cinder-volume on
# chkconfig tgtd on