CEPH как бэкенд для OpenStack

Есть даже целый гайдлайн как вкорячить одно в другое с красивой картинкой, но это не наш путь, кмк. Будем корячить сами, постепенно разбираясь и поправляя документацию1)

Итак, начнём с того, что у нас уже есть живой кластер CEPH и прямая связность с OpenStack. Создаём пулы:

# ceph osd pool create volumes 128
# ceph osd pool create images 128
# ceph osd pool create vms 128

PG конечно же нужно посчитать в зависимости от различных факторов, я взял прям из документации.2)

Теперь создаём юзверя

# ceph auth get-or-create client.openstack mon 'allow r' osd 'allow rwx'

Можно долго и упорно играться с ACL, но я сделал одного на всё. Получаем в итоге секретный ключ, который надо отправить по хостам с OpenStack.

Из конфигов нам понадобятся собственно cepf.conf и ключ, который мы положим по пути /etc/ceph/ceph.client.openstack.keyring.

Для проверки, что всё у нас получилось и работает можно подёргать за инфо о кластере

# ceph -s -n client.openstack

libvirt и ceph

Чтобы наши гипервизоры могли нормально работать с CEPH нежен ещё один небольшой допил. А именно - на каждой compute ноде потребуется добавить в virsh secret следующим образом:

  • Генерим рандомный uuid
# uuidgen
  • Делаем xml-файлик и меняем в нём UUID на сгенерённый
/tmp/secret.xml
<secret ephemeral='no' private='no'>
  <uuid>UUID</uuid>
  <usage type='ceph'>
    <name>client.openstack secret</name>
  </usage>
</secret>
  • Вливаем его в virsh
# virsh secret-define --file /tmp/secret.xml
  • И устанавливаем значение
# virsh secret-set-value --secret UUID --base64 $(cat /etc/ceph/ceph.client.openstack.keyring)

В общем и целом с CEPH на этом этапе вроде всё.

1)
как это обычно и бывает
2)
И выпилил backups, пушо мне не хватало OSD для PG