Установка ¶
CEPH - распределённое сетевое хранилище, которое выбрасывает S3, iSCSI, RBD etc. Классная вещь, документации много, но очень сильно подводит то, что не сразу ясно стало, как правильно установить.
Rook ¶
Официально рекомендуемый способ установки в Kubernetes. Опыт ребят из Фланта-а можно почитать здесь.
Cephadm ¶
Написал на основе этого Ansible playbook-и и успешно эксплуатировал кластер развёрнутый на хосте. По локалке принял в себя 40 Gib за 2 минуты и остался жив :)
Deprecated / not recommended ¶
То, что я пробовал, а потом оказалось, что оно либо не рабочее, либо deprecated:
- ceph-deploy где-то в документации нарывался на то, что этот способ не рекомендуется. Жаль потратил на него на тот момент уже пару дней. Ссылку привести не могу, у ребят истёк SSL сертификат и из-за HTST меня не пускает на сайт с документацией :)
 - ceph ansible - жирно, классно, много функционала, но master CentOS 7 уже не поддерживает, мониторы у меня так и не засинхронизировались, возможности поставить dashboard без мониторинга я не нашёл, реализовал сам, набрался опыта с Ansible, но потом полезли новые проблемы и я с этого комбайна слез на cephadm, чему очень рад.
 
Полезные команды ¶
Ну прежде всего, вот понравившийся мне cheatsheet.
Посмотреть список используемых винтов по серверам:
 |  | 
Посмотреть сводку занимаемого места.
 |  | 
Посмотреть состояние кластера.
 |  | 
Посмотреть инфраструктуру, какие сервисы\контейнеры работают и где.
 |  | 
Замена OSD ¶
Вот хорошая статья от тех же Флантов-цев и полезный комментарий под ней. Друг друга они хорошо дополняют.
OSD я пересоздавал когда на сервере (виртуалке) расширял блочное устройство, чтобы места в кластер добавить. Для себя вывел следующий алгоритм:
- Кластер должен быть в состоянии HEALTH_OK
 - Выводим OSD из кластера
 - Удаляем демон (контейнер по факту), который держит этот osd
 - Делаем purge
 - Очищаем раздел
 - Подключаем снова
 - Ждём HEALTH_OK
 
 |  | 
Из моего опыта, на замену OSD в котором было 15 GiB занято, уходит 30 минут. Тестировал на трёх CX21 Hetzner.
RBD and Docker ¶
Запуск RBD и связка с Docker:
- Создать пул.
 - Проинициализировать пул.
 - Создать пользователя для запуска.
 - Выключить лишние фичи. Дело в том, что в ядре линукс до 4.17 не поддерживается ряд фич для RBD, которые пришлось отключить. Посмотреть справку можно так:
 
 |  | 
- Поставить Docker volume plugin.
 - Проверить на контейнере.
 - Примонтироваться и посмотреть, есть ли файл.
 
 |  | 
Ставил вот этот volume driver. Всё остальное, что находилось, последний раз обновлялось 3-4 года назад (проект скорее мёртв, чем жив). Кроме того, этот драйвер не требует запуска чего либо на стороне, встраивается в сам Docker. Поставить можно так:
 |  | 
Запустим простой docker-compose стек и примонтируем образ:
 |  | 
Запускаем и проверяем:
 |  | 
