Setting up HA of Cinder

This document outlines configuration details for setting up HA of Cinder.

Install the RPMs:

yum install -y openstack-cinder openstack-utils openstack-selinux python-memcached

Setup cinder.conf:

openstack-config --set /etc/cinder/cinder.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/cinder/cinder.conf keystone_authtoken auth_host vip-keystone
openstack-config --set /etc/cinder/cinder.conf keystone_authtoken admin_tenant_name services
openstack-config --set /etc/cinder/cinder.conf keystone_authtoken admin_user cinder
openstack-config --set /etc/cinder/cinder.conf keystone_authtoken admin_password cindertest
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 vip-qpid
openstack-config --set /etc/cinder/cinder.conf DEFAULT qpid_heartbeat 2
openstack-config --set /etc/cinder/cinder.conf DEFAULT sql_connection mysql://cinder:cindertest@vip-mysql/cinder
openstack-config --set /etc/cinder/cinder.conf DEFAULT max_retries -1
openstack-config --set /etc/cinder/cinder.conf DEFAULT retry_interval 1
openstack-config --set /etc/cinder/cinder.conf DEFAULT glance_host vip-glance
openstack-config --set /etc/cinder/cinder.conf keystone_authtoken memcached_servers rdo4-memcache1:11211,rdo4-memcache2:11211

Create a Cinder NFS export:

mkdir -p /srv/rdo/cinder
cat > /etc/cinder/nfs_exports << EOF
mrg-01:/srv/rdo/cinder
EOF

chown root:cinder /etc/cinder/nfs_exports
chmod 0640 /etc/cinder/nfs_exports

Add the NFS export

openstack-config --set /etc/cinder/cinder.conf DEFAULT nfs_shares_config /etc/cinder/nfs_exports
openstack-config --set /etc/cinder/cinder.conf DEFAULT nfs_sparsed_volumes true
openstack-config --set /etc/cinder/cinder.conf DEFAULT nfs_mount_options v3
openstack-config --set /etc/cinder/cinder.conf DEFAULT volume_driver cinder.volume.drivers.nfs.NfsDriver

Add Ceilometer hooks in cinder.conf:

openstack-config --set /etc/cinder/cinder.conf DEFAULT notification_driver cinder.openstack.common.notifier.rpc_notifier
openstack-config --set /etc/cinder/cinder.conf DEFAULT rpc_backend cinder.openstack.common.rpc.impl_qpid
openstack-config --set /etc/cinder/cinder.conf DEFAULT control_exchange cinder

On first node of Cinder (rdo-cinder1) set Keystone cre:

. /srv/rdo/configs/keystonerc_admin
keystone user-create --name cinder --pass cindertest
keystone user-role-add --user cinder --role admin --tenant services
keystone service-create --name cinder --type volume --description "Cinder Volume Service"
keystone endpoint-create --service cinder --publicurl "http://vip-cinder:8776/v1/$(tenant_id)s" --adminurl "http://vip-cinder:8776/v1/$(tenant_id)s" --internalurl "http://vip-cinder:8776/v1/$(tenant_id)s"

Configure mysql

mysql --user=root --password=mysqltest --host=vip-mysql
CREATE DATABASE cinder;
GRANT ALL ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'cindertest';
FLUSH PRIVILEGES;
quit

Sync Cinder database:

su cinder -s /bin/sh -c "cinder-manage db sync"
Configure pacemaker on both nodes of Cinder (rdo-cinder1 rdo-cinder2):
chkconfig pacemaker on
pcs cluster setup --name rdo4-cinder rdo4-cinder1 rdo4-cinder2
pcs cluster start

sleep 30

pcs stonith create cinder1-fence fence_xvm multicast_address=225.0.0.7 pcmk_host_list=rdo4-cinder1

pcs stonith create cinder2-fence fence_xvm multicast_address=225.0.0.8 pcmk_host_list=rdo4-cinder2

pcs resource create cinder-api lsb:openstack-cinder-api --clone
pcs resource create cinder-scheduler lsb:openstack-cinder-scheduler --clone
pcs resource create cinder-volume lsb:openstack-cinder-volume --clone

pcs constraint order start cinder-api-clone then cinder-scheduler-clone
pcs constraint colocation add cinder-scheduler with cinder-api
pcs constraint order start cinder-scheduler-clone then cinder-volume-clone
pcs constraint colocation add cinder-volume with cinder-scheduler

Do a simple Cinder test:

. /srv/rdo/configs/keystonerc_admin

cinder list
cinder create 10
cinder list
cinder delete $(cinder list | grep available | awk '{print $2}')
cinder list