Установка ¶
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 стек и примонтируем образ:
|
|
Запускаем и проверяем:
|
|