Highly available Block Storage APIMaking the Block Storage (cinder) API service highly available in active / passive mode involves
Configure Block Storage to listen on the VIP address,
managing Block Storage API daemon with the Pacemaker cluster manager,
Configure OpenStack services to use this IP address.
Here is the
documentation
for installing Block Storage service.Add Block Storage API resource to PacemakerFirst of all, you need to download the resource agent to your system:cd /usr/lib/ocf/resource.d/openstack
wget https://raw.github.com/madkiss/openstack-resource-agents/master/ocf/cinder-api
chmod a+rx *You can now add the Pacemaker configuration for
Block Storage API resource. Connect to the Pacemaker cluster with crm
configure, and add the following cluster resources:primitive p_cinder-api ocf:openstack:cinder-api \
params config="/etc/cinder/cinder.conf" os_password="secrete" os_username="admin" \
os_tenant_name="admin" keystone_get_token_url="http://192.168.42.103:5000/v2.0/tokens" \
op monitor interval="30s" timeout="30s"This configuration createsp_cinder-api, a resource for manage Block Storage API service
crm configure supports batch input, so you may copy and paste the
above into your live pacemaker configuration, and then make changes as
required. For example, you may enter edit p_ip_cinder-api from the
crm configure menu and edit the resource to match your preferred
virtual IP address.Once completed, commit your configuration changes by entering commit
from the crm configure menu. Pacemaker will then start the Block Storage API
service, and its dependent resources, on one of your nodes.Configure Block Storage API serviceEdit /etc/cinder/cinder.conf:# We have to use MySQL connection to store data:
sql_connection=mysql://cinder:password@192.168.42.101/cinder
# We bind Block Storage API to the VIP:
osapi_volume_listen = 192.168.42.103
# We send notifications to High Available RabbitMQ:
notifier_strategy = rabbit
rabbit_host = 192.168.42.102Configure OpenStack services to use highly available Block Storage APIYour OpenStack services must now point their Block Storage API configuration to
the highly available, virtual cluster IP address — rather than a
Block Storage API server’s physical IP address as you normally would.You must create the Block Storage API endpoint with this IP.If you are using both private and public IP, you should create two Virtual IPs and define your endpoint like this:keystone endpoint-create --region $KEYSTONE_REGION --service-id $service-id --publicurl 'http://PUBLIC_VIP:8776/v1/%(tenant_id)s' --adminurl 'http://192.168.42.103:8776/v1/%(tenant_id)s' --internalurl 'http://192.168.42.103:8776/v1/%(tenant_id)s'