OpenStack Block Storage (Cinder)
Go to file
Jon Bernard f81d8a37de RBD: Implement v2.1 replication
This patch implements v2.1 replication in the RBD driver.  A single ceph
backend can support both replicated and non-replicated volumes using
volume types.  For replicated volumes, both clusters are expected to be
configured with rbd-mirror with keys in place and image mirroring
enabled on the pool.  The RBD driver will enable replication per-volume
if the volume type requests it.

On failover, each replicated volume is promoted to primary on the
secondary cluster and new connection requests will receive connection
information for the volume on the secondary cluster.  At the time of
writing, failback is not supported by Cinder and requires admin
intervention to reach a per-failover state.

Non replicated volumes will be set to error status to reflect that they
are not available, and the previous status will be stored in the
replication_driver_data field.

There are two configuration pieces required to make this work:

1. A volume type that enables replication:

    $ cinder type-create replicated
    $ cinder type-key    replicated set volume_backend_name=ceph
    $ cinder type-key    replicated set replication_enabled='<is> True'

2. A secondary backend defined in cinder.conf:

    [ceph]
    ...
    replication_device = backend_id:secondary,
                         conf:/etc/ceph/secondary.conf,
                         user:cinder

The only required parameter is backend_id, as conf and user have
defaults.  Conf defaults to /etc/ceph/$backend_id.conf and user defaults
to rbd_user or cinder if that one is None.

We also have a new configuration option for the RBD driver called
replication_connect_timeout that allows us to specify the timeout for
the promotion/demotion of a single volume.

We try to do a clean failover for cases where there is still
connectivity with the primary cluster, so we'll try to do a demotion of
the original images, and when one of the demotions fails we just assume
that all of the other demotions will fail as well (the cluster is not
accesible) so we'll do a forceful promotion for those images.

DocImpact
Implements: blueprint rbd-replication
Co-Authored-By: Gorka Eguileor <geguileo@redhat.com>
Change-Id: I58c38fe11014aaade6b42f4bdf9d32b73c82e18d
2016-12-19 11:32:02 +01:00
api-ref/source Fix v2 volume create api-reference request parameters 2016-11-18 10:33:44 -05:00
cinder RBD: Implement v2.1 replication 2016-12-19 11:32:02 +01:00
doc Adjust doc about threading 2016-10-14 13:07:47 +08:00
etc/cinder Provide cfg to ignore lvm descriptor leak warnings 2016-09-26 09:20:58 +00:00
rally-jobs Disable Rally backup-related scenarios 2016-02-15 20:44:52 +02:00
releasenotes RBD: Implement v2.1 replication 2016-12-19 11:32:02 +01:00
tools Fix "wrap functions with 2 blank lines" pep8 check 2016-11-17 02:50:35 +00:00
.coveragerc Update .coveragerc after the removal of openstack directory 2016-10-17 19:09:37 +05:30
.gitignore Add driver list to doc build 2016-07-26 11:09:05 -05:00
.gitreview Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
.testr.conf Move integrated tests to 'functional' directory 2016-02-09 23:28:27 +02:00
CONTRIBUTING.rst Update CONTRIBUTING.md to CONTRIBUTING.rst 2015-11-10 23:10:38 +08:00
HACKING.rst Fix broken link in HACKING.rst 2016-07-01 15:08:43 +05:30
LICENSE Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
README.rst Use openstack.org URLs in README 2016-03-02 14:33:25 -05:00
babel.cfg Initial fork out of Nova. 2012-05-03 10:48:26 -07:00
pylintrc Use six to fix imports on Python 3 2015-06-11 17:19:19 +02:00
requirements.txt Updated from global requirements 2016-11-14 15:48:02 +00:00
run_tests.sh Remove remaining oslo-incubator code from Cinder 2016-03-09 10:49:18 -06:00
setup.cfg Removing cinder-all binary 2016-10-02 15:46:57 -07:00
setup.py Updated from global requirements 2015-09-18 16:37:17 +00:00
test-requirements.txt Updated from global requirements 2016-11-02 15:30:41 +00:00
tox.ini Remove ovo[fixtures] dependency from tox.ini 2016-09-28 18:31:49 +02:00

README.rst

CINDER

You have come across a storage service for an open cloud computing service. It has identified itself as Cinder. It was abstracted from the Nova project.

Getting Started

If you'd like to run from the master branch, you can clone the git repo:

git clone https://git.openstack.org/openstack/cinder.git

For developer information please see HACKING.rst

You can raise bugs here http://bugs.launchpad.net/cinder

Python client

https://git.openstack.org/cgit/openstack/python-cinderclient