4.3.7. Использование Ceph¶
Ceph обеспечивает как файловый, так и блочный интерфейсы доступа к объектам облачной платформы (Object Storage) [1]. Необходимо, чтобы на все узлы ОП был установлен клиент Ceph – средства командной строки и библиотеки необходимы для подключения к (кластеру) Ceph со стороны узлов, включенных в платформу OpenStack [2].
Альтернативно, могут быть установлены пакеты клиента Ceph, которые
доступны в используемом дистрибутиве (ОС Linux).
Подготовьте и вручную скопируйте файл /etc/ceph/ceph.conf
на каждый узел платформы (OpenStack).
Прежде чем приступать к интеграции 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 |