kolla/doc/external-ceph-guide.rst
Mathias Ewald 3894883871 External Ceph - Implementation Cinder
This patch adds support for external Ceph clusters for Cinder.

For clean integration the backend configuration mechanism had to be
slightly adjusted.

We now have the option to enable multiple backends for Cinder
independently.

Currently, the flags cinder_backend_iscsi and cinder_backend_ceph are
used to toggle backends.

Documentation on how to use external ceph was added.

Change-Id: I7e0267b90d62d6d881f24f063cdb894422ec8618
Partially-Implements: Blueprint: external-ceph
2016-07-19 12:45:48 +00:00

3.9 KiB

External Ceph

Sometimes it is necessary to connect OpenStack services to an existing Ceph cluster instead of deploying it with Kolla. This can be achieved with only a few configuration steps in Kolla.

Requirements

  • An existing installation of Ceph
  • Existing Ceph storage pools

* Existing credentials in Ceph for OpenStack services to connect to Ceph (Glance, Cinder)

Enabling External Ceph

Using external Ceph with Kolla means not to deploy Ceph via Kolla. Therefore, disable Ceph deployment in /etc/kolla/global.yml

enable_ceph: "no"

There are flags indicating individual services to use ceph or not which default to the value of enable_ceph. Those flags now need to be activated in order to activate external Ceph integration. This can be done individually per service in /etc/kolla/global.yml:

glance_enable_ceph: "yes"
cinder_backend_ceph: "yes"

The combination of enable_ceph: "no" and <service>_enable_ceph: "yes" triggers the activation of external ceph mechanism in Kolla.

Configuring External Ceph

Glance

Configuring Glance for Ceph includes three steps:

  1. Configure RBD backend in glance-api.conf
  2. Create Ceph configuration file in /etc/ceph/ceph.conf
  3. Create Ceph keyring file in /etc/ceph/ceph.client.<username>.keyring

Step 1 is done by using Kolla's INI merge mechanism: Create a file in /etc/kolla/config/glance/glance-api.conf with the following contents:

[DEFAULT]
show_image_direct_url = True

[glance_store]
stores = rbd
default_store = rbd
rbd_store_chunk_size = 8
rbd_store_pool = images
rbd_store_user = glance
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rados_connect_timeout = 0

[image_format]
container_formats = bare
disk_formats = raw

Now put ceph.conf and the keyring file (name depends on the username created in Ceph) into the same directory, for example:

/etc/kolla/config/glance/ceph.conf

[global]
fsid = 1d89fec3-325a-4963-a950-c4afedd37fe3
mon_initial_members = ceph-0
mon_host = 192.168.0.56
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

/etc/kolla/config/glance/ceph.client.glance.keyring

[client.glance]
key = AQAg5YRXS0qxLRAAXe6a4R1a15AoRx7ft80DhA==

Kolla will pick up all files named ceph.* in this directory an copy them to the /etc/ceph/ directory of the container.

Cinder

Configuring external Ceph for Cinder works very similar to Glance. The required Cinder configuration goes into /etc/kolla/config/cinder/cinder-volume.conf:

[DEFAULT]
enabled_backends=rbd-1

[rbd-1]
rbd_ceph_conf=/etc/ceph/ceph.conf
rbd_user=cinder
backend_host=rbd:volumes
rbd_pool=volumes
volume_backend_name=rbd-1
volume_driver=cinder.volume.drivers.rbd.RBDDriver

Next, place the ceph.conf file into /etc/kolla/config/cinder/ceph.conf:

[global]
fsid = 1d89fec3-325a-4963-a950-c4afedd37fe3
mon_initial_members = ceph-0
mon_host = 192.168.0.56
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

Separate configuration options can be configured for cinder-volume and cinder-backup by adding ceph.conf files to /etc/kolla/config/cinder/cinder-volume and /etc/kolla/config/cinder/cinder-backup respectively. They will be merged with /etc/kolla/config/cinder/ceph.conf.

Ceph keyrings are deployed per service and placed into cinder-volume and cinder-backup directories:

root@deploy:/etc/kolla/config# cat
cinder/cinder-backup/ceph.client.cinder.keyring
[client.cinder]
        key = AQAg5YRXpChaGRAAlTSCleesthCRmCYrfQVX1w==
root@deploy:/etc/kolla/config# cat
cinder/cinder-volume/ceph.client.cinder.keyring
[client.cinder]
        key = AQAg5YRXpChaGRAAlTSCleesthCRmCYrfQVX1w==

It is important that the files are named ceph.client*.