f9b85391ce
The Cloud Admin Guide was converted to RST and the URLs changed. Change-Id: Iafd7f7b95d5a17fca243319f1cfae81012b29ed0
224 lines
7.7 KiB
ReStructuredText
224 lines
7.7 KiB
ReStructuredText
..
|
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
|
License.
|
|
|
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
|
|
|
==========================================
|
|
Add Cinder Support for DB2 (v10.5+)
|
|
==========================================
|
|
|
|
Include the URL of your launchpad blueprint:
|
|
|
|
https://blueprints.launchpad.net/cinder/+spec/db2-database
|
|
|
|
The community currently supports MySQL and PostgreSQL production databases.
|
|
Several other core projects already support DB2 (Keystone, Glance, Ceilometer,
|
|
Heat). This blueprint adds support to Cinder for DB2 as a production
|
|
database.
|
|
|
|
|
|
Problem description
|
|
===================
|
|
|
|
* Currently there is no support in the community for a deployer to run Cinder
|
|
against a DB2 backend database.
|
|
|
|
* For anyone running applications against an existing DB2 database that wants
|
|
to move to OpenStack, they'd have to use a different database engine to
|
|
run Cinder in OpenStack.
|
|
|
|
* There is currently an inconsistent support matrix across the core projects
|
|
since the majority of core projects support DB2 but Cinder does not
|
|
yet.
|
|
|
|
Use Cases
|
|
=========
|
|
|
|
Proposed change
|
|
===============
|
|
|
|
The changes required to enable Cinder to run on DB2 are limited given that
|
|
Cinder's database structure is not complicated. No changes are currently
|
|
required to the migration scripts to enable deployment on a DB2 database.
|
|
|
|
Unit test will need to be updated to support running tests against a DB2
|
|
backend with the ibm_db_sa driver and all Cinder patches will be tested
|
|
against a Tempest full run with 3rd party CI running DB2, maintained by IBM.
|
|
Note that these 3rd Party CI runs have already been enabled for Cinder.
|
|
|
|
There is already code in Oslo's db.api layer to support common function
|
|
with DB2 like duplicate entry error handling and connection trace, so that is
|
|
not part of this spec. Cinder, however, will need to sync up to the latest
|
|
Oslo DB code to enable DB2 support.
|
|
|
|
|
|
Alternatives
|
|
------------
|
|
|
|
Deployers can use other supported database backends like MySQL or PostgreSQL,
|
|
but this may not be an ideal option for customers already running applications
|
|
with DB2 that want to integrate with OpenStack. In addition, you could run
|
|
other core projects with multiple schemas in a single DB2 OpenStack database,
|
|
but you'd have to run Cinder separately which is a maintenance/configuration
|
|
problem.
|
|
|
|
Data model impact
|
|
-----------------
|
|
|
|
There are no impacts on the current Cinder data model. Any issues that arise
|
|
due to future changes will be uncovered by the 3rd Party CI tests and will be
|
|
able to be addressed at that point in time.
|
|
|
|
The one exception to this statement is in the unit test path. I made two
|
|
commits in Icehouse to start implementing the infrastructure to enable DB2
|
|
unit testing. The commits were to add a bool_type dictionary
|
|
(2a7b11922bd9389287915c45de92ca5eed3d448e) and a time_type dictionary
|
|
(a9527de9ed3a2eae951564c3c74b7319113e8bf5). I will need to add the
|
|
appropriate types for DB2, as was done for MySQL, as part of the unit test
|
|
changes I will be making for DB2.
|
|
|
|
|
|
REST API impact
|
|
---------------
|
|
|
|
None.
|
|
|
|
Security impact
|
|
---------------
|
|
|
|
None.
|
|
|
|
Notifications impact
|
|
--------------------
|
|
|
|
None.
|
|
|
|
Other end user impact
|
|
---------------------
|
|
|
|
None.
|
|
|
|
Performance Impact
|
|
------------------
|
|
|
|
Execution of migration unit tests on DB2 may take longer than on other
|
|
backend databases due to the time required to create the database schema.
|
|
This impact, however, will only be seen when running unit tests for DB2.
|
|
|
|
Other deployer impact
|
|
---------------------
|
|
|
|
There are no plans to migrate the Cinder database from a pre-existing
|
|
installation (I.E. MySQL) to DB2. So deployers will need to be starting
|
|
with a fresh Cinder installation to enable DB2 as a backend database.
|
|
|
|
Developer impact
|
|
----------------
|
|
|
|
The only impact on developers is if they are adding DB API code or migrations
|
|
that don't work with DB2, they will have to adjust those appropriately, just
|
|
like we do today with MySQL and PostgreSQL. IBM ATCs would provide
|
|
support/guidance on issues like this which require specific conditions for DB2,
|
|
although for the most part, the DB2 InfoCenter provides adequate detail on how
|
|
to work with the engine and provides details on error codes.
|
|
|
|
* DB2 SQL error message explanations can be found here:
|
|
http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp?topic=%2Fcom.ibm.db2.luw.messages.sql.doc%2Fdoc%2Frsqlmsg.html
|
|
|
|
* Information on developing with DB2 using python can be found here:
|
|
http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp?topic=%2Fcom.ibm.swg.im.dbclient.python.doc%2Fdoc%2Fc0054366.html
|
|
|
|
* Main contacts for DB2 questions in OpenStack:
|
|
|
|
* Matt Riedemann (mriedem@us.ibm.com) - Nova core member
|
|
* Brant Knudson (bknudson@us.ibm.com) - Keystone core member
|
|
* Jay Bryant (jsbryant@us.ibm.com) - Cinder core member
|
|
* Rahul Priyadarshi (rahul.priyadarshi@in.ibm.com) - ibm_db_sa maintainer
|
|
|
|
|
|
Implementation
|
|
==============
|
|
|
|
Assignee(s)
|
|
-----------
|
|
|
|
Primary assignee:
|
|
Email: jsbryant@us.ibm.com
|
|
Launchpad ID: jsbryant
|
|
|
|
Work Items
|
|
----------
|
|
|
|
#. Make the test_migrations.py module work with a configured DB2 backend for
|
|
running unit tests.
|
|
|
|
#. Add the appropriate column types for DB2.
|
|
#. Add support for creating the DB2 schema for Cinder testing.
|
|
|
|
|
|
Dependencies
|
|
============
|
|
|
|
* DB2 support was added to sqlalchemy-migrate 0.9 during Icehouse:
|
|
https://blueprints.launchpad.net/sqlalchemy-migrate/+spec/add-db2-support
|
|
|
|
* There are no requirements changes in Cinder for the unit tests to work. The
|
|
runtime requirements are the ibm-db-sa and ibm_db modules, which are both
|
|
available from pypi. sqlalchemy-migrate optionally imports ibm-db-sa. The
|
|
ibm-db-sa module requires a natively compiled ibm_db which has the c binding
|
|
that talks to the DB2 ODBC/CLI driver.
|
|
|
|
* Note that only DB2 10.5+ is supported since that's what added unique index
|
|
support over nullable columns which is how sqlalchemy-migrate handles unique
|
|
constraints over nullable columns.
|
|
|
|
|
|
Testing
|
|
=======
|
|
|
|
* IBM is already running 3rd party CI for DB2 on Cinder.
|
|
|
|
* DB2 Unit Test for Cinder will be enabled.
|
|
|
|
|
|
Documentation Impact
|
|
====================
|
|
|
|
* The install guides in the community do not go into specifics about setting up
|
|
the database. The RHEL/Fedora install guide says to use the openstack-db
|
|
script provided by openstack-utils in RDO which uses MySQL. The other
|
|
install guides just say that SQLite3, MySQL and PostgreSQL are widely used
|
|
databases. So for the install guides, those generic statements about
|
|
supported databases would be updated to add DB2 to the list. Similar generic
|
|
statements are also made in the following places which would be updated as
|
|
well:
|
|
|
|
* http://docs.openstack.org/training-guides/content/developer-getting-started.html
|
|
* http://docs.openstack.org/admin-guide/compute.html
|
|
* http://docs.openstack.org/trunk/openstack-ops/content/cloud_controller_design.html
|
|
|
|
* There are database topics in the security guide, so there would be DB2
|
|
considerations there as well, specifically:
|
|
|
|
* http://docs.openstack.org/security-guide/databases/database-backend-considerations.html
|
|
* http://docs.openstack.org/security-guide/databases/database-transport-security.html
|
|
|
|
|
|
References
|
|
==========
|
|
|
|
* There are Chef cookbooks on stackforge which support configuring OpenStack
|
|
to run with an existing DB2 installation:
|
|
http://git.openstack.org/cgit/stackforge/cookbook-openstack-common/
|
|
|
|
* A wiki document originally written to describe DB2 for OpenStack:
|
|
https://wiki.openstack.org/wiki/DB2Enablement
|
|
|
|
* DB2 10.5 InfoCenter: http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/index.jsp
|
|
|
|
* Some older manual setup instructions for DB2 with OpenStack:
|
|
http://www.ibm.com/developerworks/cloud/library/cl-openstackdb2/index.html
|
|
|
|
* ibm-db-sa: https://code.google.com/p/ibm-db/source/clones?repo=ibm-db-sa
|