DR Engine Installation guide

Prerequisites: Services installed: swift, openstack core services (nova, cinder, ..), heat Openstack release: Kilo Openstack installed and all services are up and running (including cinder-backup service and Swift) You will need the mysql username and password for creating the dr database scheme stage You will need the rabbit service password and port to configure dragon.conf An available port for dr api service to listen to (default is 8007)

  • Install DRBD
  • Install Dragon


rpm -i openstack-dragon-common-2015.1.1-1.3.el7.noarch.rpm

rpm -i python-dragonclient-2015.1.1-2.el7.noarch.rpm

rpm -i openstack-dragon-engine-2015.1.1-1.3.el7.noarch.rpm

rpm -i openstack-dragon-api-2015.1.1-1.3.el7.noarch.rpm


Authenticate to keystone as admin (by: source /root/openrc) and do:

export SERVICE_HOST=$your_host_ip *Run: /usr/bin/dragon-keystone-setup


Verify with keystone command line:

keystone service-list that dragon service is registered with keystone

Configure /etc/dragon/dragon.conf: bind_host in [dragon_api] section, auth_host, auth_uri, admin_password and admin_tenant_name in [keystone_authtoken] section remote swift parameters (backup_swift_url, backup_swift_key) in [default] section set db parameters (db_connection) set rpc_backend according to the openstack installation setup (amqp/qpid), as well as other rpc relevant parameter (rabbit_host, rabbit_port, rabbit_use_ssl, rabbit_userid, rabbit_password) in [oslo.messaging] section

Make sure the following python lib exists, if not, install them: easy_install PasteDeploy easy_install routes

  • Create Dragon db with tables, etc as follows:

mysql –user=root –password=$password

>create database dragon CHARACTER SET utf8; >CREATE USER ‚dragon’@’localhost‚ IDENTIFIED BY ‚dragon‘; >GRANT ALL PRIVILEGES ON * . * TO ‚dragon’@’localhost‚; > FLUSH PRIVILEGES; to delete a user : > DROP user dragon;


Now cerate the Dragon db tables as follows (the OS way):

-cd /usr/lib/python2.7/site-packages/dragon/db/sqlalchemy/migrate_repo

-run : python manage.py version_control i.e establish db version control here

check the base version is 0 by: python manage.py db_version (returned result should be 0)

-now from migrate_repo directory run: python manage.py upgrade
This will generate 7 tables and also initialize the 2 tables : ‚resource_types‘ and ‚actions‘ with default values
the following should be printed on console:
0 -> 1… done

if you need to downgrade DB version (go back to old version) run :

python manage.py downgrade 0 i.e downgrade to version control 0

Dragon uses Cloudwatt’s Flame for template generation. Download flame.py and managers.py fromhttps://github.com/cloudwatt/flame/blob/master/flameclient/ Include the files in dragon.template package Apply patches to those files if applicable (we provide patches for cinderv2 use and Openstack version upgrade in dragon/contrib)

Start the dragon services: service openstack-dragon-engine start service openstack-dragon-api start check that /var/log/dragon/api.log and /var/log/dragon/engine.log has no ERROR or Traceback

Test Dragon install successfully:
    dragon list-actions 1dragon list-actions 2Install Dashboard

Extract file dragon-dashboard-2014.3.1.tar.gz copy all dirs content from dragon-2014.3.1/contrib/horizon/openstack_dashboard/ one by one to the corresponding


/usr/share/openstack-dashboard/openstack_dashboard/ directories (api, enabled and dashboards/project)

restart the httpd service : service httpd restart

check that no errors appear at : /var/log/httpd/openstack-dashboard-access.log or /var/log/httpd/openstack-dashboard-error.log


Update Cinder

Make sure cinder-backup service section was configured:
Configure cinder.conf section „Options defined in cinder.backup.drivers.swift“, see example in tools/config/sample_conf_files/cinder.conf.sample
Parameters: cinder.backup.drivers.swift, backup_swift_key, …

Extract file dragon-cinder-2015.1.1.tar.gz Copy cinder/volume/drivers/drbdmanagedrv.py to cinder directory volume drivers location (…/pythonX/../cinder/volume/drivers)

Create drbd volume_type in cinder: cinder type-create drbddriver-1

Update cinder.conf with drbd driver: default_volume_type = drbddriver-1 enabled_backends = drbddriver-1 (for list add it with a comma in the end, i.e. enabled_backends = lvm,drbddriver-1)

[drbddriver-1] iscsi_helper = tgtadm volume_group = drbdpool volume_driver = cinder.volume.drivers.drbdmanagedrv.DrbdManageDriver volume_backend_name = drbddriver-1

run the following command to assign extra-spec to drbddriver-1: cinder type-key drbddriver-1 set volume_backend_name=drbdmanage

Allow the user to access the drbdmanage service. Add the following section to the file /etc/dbus-1/system.d/org.drbd.drbdmanaged.conf: <policy user=“cinder“>

<allow own=“org.drbd.drbdmanaged“/> <allow send_interface=“org.drbd.drbdmanaged“/> <allow send_destination=“org.drbd.drbdmanaged“/>


Restart Cinder’s services: service openstack-cinder-backup restart service openstack-cinder-api restart service openstack-cinder-volume restart verify by : cinder service-list that the cinder services are up and running

Run system test to test end to end (including Swift)

Problem solving: *1. In case of error when running dragon-keystone-setup where SERVICE_TENANT is empty and therefore keystone user-create fails, type keystone tenant-list and change the dragon-keystone-setup line SERVICE_TENANT=$(get_data 2 service 1 keystone tenant-list) in keystone_setup method according to the name field (i.e. services in the below sample)