4.3.7. Использование Ceph

Ceph обеспечивает как файловый, так и блочный интерфейсы доступа к объектам облачной платформы (Object Storage) [1]. Необходимо, чтобы на все узлы ОП был установлен клиент Ceph – средства командной строки и библиотеки необходимы для подключения к (кластеру) Ceph со стороны узлов, включенных в платформу OpenStack [2].

Альтернативно, могут быть установлены пакеты клиента Ceph, которые доступны в используемом дистрибутиве (ОС Linux). Подготовьте и вручную скопируйте файл /etc/ceph/ceph.conf на каждый узел платформы (OpenStack).

Внимание.

Для нормальной работы службы Ceph на всех узлах должны быть установлены службы NTP и SSH.

Прежде чем приступать к интеграции Ceph в ОП TIONIX, необходимо проверить работоспособность службы (на каждой распределенной ноде). Выполните команду «проверки здоровья» (на узле хранилища Ceph):

ceph health

В результате успешного выполнения команды выводится сообщение: ceph_health OK.

Проверьте список (созданных) пулов:

ceph osd lspools

4.3.7.1. Создание пользователя

Создайте нового пользователя в Ceph для каждой из подключаемых служб и назначьте ему соответствующие права:

ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images'

ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'

ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups'

4.3.7.2. Подготовка ключей

Скопируйте файлы ключей из ноды Ceph на ноды OpenStack, затем назначьте права:

ceph auth get-or-create client.glance | ssh {your-glance-api-server} sudo tee /etc/ceph/ceph.client.glance.keyring
ssh {your-glance-api-server} sudo chown glance:glance /etc/ceph/ceph.client.glance.keyring

ceph auth get-or-create client.cinder | ssh {your-volume-server} sudo tee /etc/ceph/ceph.client.cinder.keyring
ssh {your-cinder-volume-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder.keyring

ceph auth get-or-create client.cinder-backup | ssh {your-cinder-backup-server} sudo tee /etc/ceph/ceph.client.cinder-backup.keyring
ssh {your-cinder-backup-server} sudo chown cinder:cinder /etc/ceph/ceph.client.cinder-backup.keyring

На все ВУ – ноды, на которых функционирует служба nova-compute – скопируйте копию ключа (client.cinder):

ceph auth get-key client.cinder | ssh {your-compute-node} tee client.cinder.key

4.3.7.3. Интеграция с гипервизором

Затем, на всех ВУ, необходимо добавить secret key к libvirt и удалить временную копию ключа. Выполните команду:

uuidgen

Полученный UUID (457eb676-33da-42ec-9a8c-9293d545c337) пропишите в файл secret.xml:

Укажите, с помощью утилиты virsh, файл секрета, и затем сразу же удалите (временные файлы):

4.3.7.4. Включение кэша RBD

На всех вычислительных узлах внесите изменения в файл конфигурации Ceph [3]:

[client]
rbd cache = true
rbd cache writethrough until flush = true
admin socket = /var/run/ceph/guests/$cluster-$type.$id.$pid.$cctid.asok
log file = /var/log/qemu/qemu-guest-$pid.log
rbd concurrent management ops = 20

где:

rbd cache – включение RBD кэша позволяет увеличить скорость по IOPS для виртуальных машин в облаке (при операциях с диском);

rbd concurrent management ops – количество одновременных операций ввода вывода в единицу времени;

rbd cache writethrough until flush – включает сквозную запись и переключается на обратную запись после первого flush запроса.

Создайте директории для сокета и предоставьте для них права:

mkdir -p /var/run/ceph/guests/ /var/log/qemu/
chown libvirt-qemu:libvirtd /var/run/ceph/guests /var/log/qemu/

Примечание.

Пользователь libvirt-qemu и группа libvirtd могут отличаться, в зависимости от операционной системы.

4.3.7.5. Интеграция службы образов Glance

На контроллере в файл /etc/glance/glance-api.conf добавьте следующие строки:

[DEFAULT]
# Данная опция позволяет включить функцию copy-on-write
# При создании диски не происходит копирования образа, он используется напрямую
# Делает создание машин практически моментальным
show_image_direct_url=True

log_dir=/var/log/glance
rpc_backend = rabbit
workers = 8

[glance_store]

stores = rbd
default_store = rbd
rbd_store_pool = images
rbd_store_user = tionix
rbd_store_ceph_conf = /etc/ceph/ceph.conf
rbd_store_chunk_size = 8

4.3.7.6. Интеграция с Cinder

ВАЖНО.

Перед тем как интегрировать Ceph в Cinder, убедитесь, что пул хранения томов создан, выполнены все настройки.

На узлах, где запущена служба cinder-volume настройте конфигурационный файл /etc/cinder/cinder.conf.

4.3.7.6.1. Пример настройки одиночного пула

[DEFAULT]
...

state_path = /var/lib/cinder
lock_path = /var/lock/cinder
rootwrap_config = /etc/cinder/rootwrap.conf
api_paste_confg = /etc/cinder/api-paste.ini
enabled_backends = volumes
glance_api_servers = http://controller:9292
glance_api_version = 2
default_backend_name = volumes

# Настройка осуществляется опционально
# Настройте cinder backup

backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user = tionix
backup_ceph_chunk_size = 134217728
backup_ceph_pool = backup
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0



[volumes]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = volumes
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = tionix
rbd_keyring_conf = /etc/ceph/ceph.client.cinder.keyring
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

В параметр „rbd_secret_uuid =“ подставляется сгенерированный ранее UUID (см выше – Подготовка ключей).

4.3.7.6.2. Пример настройки нескольких пулов

[DEFAULT]
enabled_backends = volumes,volumes-slow
glance_api_servers = http://controller:9292
glance_api_version = 2
default_backend_name = volumes

# Настройки Cinder backup
backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user = tionix
backup_ceph_chunk_size = 134217728
backup_ceph_pool = backup
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0

[volumes]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = volumes
rbd_pool = volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = tionix
rbd_keyring_conf = /etc/ceph/ceph.client.cinder.keyring
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

[volumes-slow]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = volumes-slow
rados_connect_timeout = -1
rbd_pool = volumes-slow
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rbd_user = tionix
rbd_keyring_conf = /etc/ceph/ceph.client.cinder.keyring
rbd_secret_uuid = 457eb676-33da-42ec-9a8c-9293d545c337

4.3.7.7. Интеграция для эфемерных дисков

На вычислительных узлах, где запущена служба nova-compute, добавьте в конфигурационный файл /etc/nova/nova.conf следующее содержимое:

[libvirt]
virt_type=kvm
images_type = rbd
images_rbd_pool = vms
images_rbd_pool = vms на images_rbd_pool = volumes
rbd_user = cinder
rbd_secret_uuid = <сгенерированный ранее UUID>
disk_cachemodes=«network=writeback»
inject_password = false
inject_key = false
inject_partition = -2
live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST,VIR_MIGRATE_TUNNELLED"
live_migration_uri = qemu+ssh://nova@%s/system

В параметр „rbd_secret_uuid =“ подставьте сгенерированный ранее UUID (см. выше – Подготовка ключей).

Перезапустите службу Nova на каждом ВУ, для вступления изменений в силу:

sudo service nova-compute restart

4.3.7.8. Дополнительная проверка

Создайте на контроллере OpenStack новый диск:

openstack volume create --size 1 vol1

Убедитесь в том, что в пуле (volumes) появился созданный диск:

rbd -p volumes ls

Пример вывода:

volume-57cd660b-e0ea-4eba-b9f1-d0c4d8a5d580

4.3.7.9. ПРИМЕРЫ конфигурационных файлов

4.3.7.9.1. Файл cinder.conf

[DEFAULT]
enabled_backends = eg-volumes,eg-volumes-slow
glance_api_servers = http://127.0.0.1:9292
glance_api_version = 2
default_backend_name = eg-volumes

backup_driver = cinder.backup.drivers.ceph.CephBackupDriver
backup_ceph_conf=/etc/ceph/ceph.conf
backup_ceph_user = eg-cloud
backup_ceph_chunk_size = 134217728
backup_ceph_pool = eg-backup
backup_ceph_stripe_unit = 0
backup_ceph_stripe_count = 0


[eg-volumes]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = eg-volumes
rbd_pool = eg-volumes
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = eg-cloud
rbd_keyring_conf = /etc/ceph/ceph.client.eg-cloud.keyring
rbd_secret_uuid = df22f43d-ba40-40bc-ac0d-7dde66eac668


[eg-volumes-slow]
volume_driver = cinder.volume.drivers.rbd.RBDDriver
volume_backend_name = eg-volumes-slow
rbd_pool = eg-volumes-slow
rbd_ceph_conf = /etc/ceph/ceph.conf
rbd_flatten_volume_from_snapshot = false
rbd_max_clone_depth = 5
rbd_store_chunk_size = 4
rados_connect_timeout = -1
rbd_user = eg-cloud
rbd_keyring_conf = /etc/ceph/ceph.client.eg-cloud.keyring
rbd_secret_uuid = df22f43d-ba40-40bc-ac0d-7dde66eac668

4.3.7.9.2. Файл glance.conf

[DEFAULT]
show_image_direct_url=True
log_dir=/var/log/glance
rpc_backend = rabbit
workers = 8

[glance_store]
#stores = glance.store.rbd.Store,glance.store.http.Store
stores = rbd
default_store = rbd
rbd_store_pool = eg-images
rbd_store_user = eg-cloud
rbd_store_ceph_conf = /etc/ceph/ceph.conf

Сноски

[1]https://ru.wikipedia.org/wiki/Ceph
[2]https://docs.ceph.com/en/nautilus/start/intro/
[3]https://docs.ceph.com/en/latest/cephadm/install/#install-cephadm