Попробуйте Microceph для быстрого развертывания Ceph
Одно из решений программно-определяемых хранилищ (SDS), которое имеет большую популярность в корпоративной среде и уже добралось даже для любителей домашних лабораторий, - это Ceph. Ceph - мощная штука со множеством крутых преимуществ. Однако его настройка и управление могут нехило так напугать, если у вас раньше не было с ним опыта. Microceph - это реализация Ceph, которая упрощает развертывание кластера и управление им. Давайте посмотрим, как можно использовать Microceph для легкого деплоя Ceph.
Что такое Microceph?
Начнем с главного: что это вообще такое? Возможно, вы уже сталкивались с ним в контексте microk8s, но вообще это универсальное хранилище данных. Сами разработчики называют его "самым простым способом запустить Ceph". Почитать официальную документацию можно здесь: MicroCeph documentation. Ребята также открыто говорят, что это довольно "бескомпромиссное" решение, заточенное под небольшие масштабы по сравнению со стандартным пакетом Ceph.
Если говорить коротко (TL;DR), перед нами облегченная версия Ceph, которая сохранила большинство плюсов полноценного "взрослого" Ceph, но при этом гораздо проще в установке и управлении. Основной упор здесь сделан на удобство админов Ceph и разработчиков систем хранения данных.
Microceph берет на себя всю рутину по распределению ключей, размещению сервисов и управлению дисками. Это работает как для кластеров в приватных и пограничных (edge) облаках, так и в домашних лабораториях.
Вот ключевые фичи и преимущества, на которые стоит обратить внимание:
- Быстрое развертывание и минимальные накладные расходы
- Управление одной командой (для инициализации, добавления дисков OSD, включения сервисов и т.д.)
- Изоляция сервисов от хост-системы, что делает обновления безопасными и простыми
- Встроенная кластеризация - вам не придется забивать голову техническими деталями
Требования
Особых требований нет, кроме пары моментов:
- Для полноценного кластера Ceph вам понадобится как минимум 3 диска OSD (если не брать в расчет тесты на одной ноде).
- Это значит, что вам понадобятся 3 разные ноды, каждая из которых выделит по 1 диску OSD.
Установка Microceph на одну ноду
Самая крутая фишка кластеров Ceph на базе Microceph заключается в том, что его можно запустить как в однонодовой (single-node), так и в многонодовой конфигурации. Оба варианта отлично подходят для обучения и понимания того, как устроены Ceph и кластеры Microceph.
Давайте разберем развертывание на одной ноде. Установить систему можно с помощью следующих шагов:
sudo snap install microceph

В документации Microceph отмечается, что в большинстве случаев стоит заморозить автоматические обновления. Апдейты кластера Ceph всегда могут привести к непредвиденным последствиям. Заморозка даст вам возможность спокойно почитать чейнджлоги будущих релизов и убедиться, что изменения не сломают ваше хранилище. Вот команда snap, которая поможет это сделать:
sudo snap refresh --hold microceph

Затем мы запускаем кластер с помощью команды bootstrap. Это инициализирует Ceph:
sudo microceph cluster bootstrap
После этого можно проверить статус Microceph следующей командой:
sudo microceph status

Выполнив команду выше, мы увидим статус нашего однонодового Ceph. Теперь можно добавить диск или разделы диска для Microceph:
sudo microceph disk add <путь к диску> --wipe
Установка многонодового кластера Microceph
Теперь давайте развернем многонодовый кластер Microceph. Для этого нам понадобятся как минимум 3 хоста и хотя бы по 1 диску на каждом из них. Вообще, для лучшей производительности и эффективности рекомендуется использовать несколько дисков. Для начала накатим Microceph на все три ноды и заморозим обновления, выполнив следующие команды:
sudo snap install microceph
sudo snap refresh --hold microceph
Затем только на первой ноде запускаем команду инициализации кластера:
sudo microceph cluster bootstrap
Создание токена для подключения к Ceph
После этого, опять же только на первой ноде, мы запускаем команды для добавления двух других нод. Имейте в виду, что использовать один и тот же токен для обеих нод нельзя. Токены уникальны для каждого добавляемого хоста.
sudo microceph cluster add <нода 2>
sudo microceph cluster add <нода 3>

Подключение к кластеру Ceph
После этого на двух других нодах, которые вы хотите подключить, нужно выполнить следующую команду (подставив соответствующий токен):
sudo microceph cluster join <токен подключения>

Ниже показано выполнение той же команды на третьей ноде.

Затем на всех трех нодах запускаем команду для добавления диска в кластер Microceph:
sudo microceph disk add <путь к диску> --wipe


Проверка статуса Ceph
Теперь мы можем проверить статус нашего кластера Microceph, включая состояние сервисов MDS, MGR, MON и OSD:
sudo microceph status

Также можно использовать стандартную команду проверки статуса:
sudo ceph status

Лучшие практики при развертывании Microceph
Ниже приведено несколько полезных рекомендаций, о которых стоит помнить при работе с Ceph:
- Убедитесь, что вы соблюдаете минимальные требования к кластеру Ceph, включая наличие трех OSD.
- Используйте неразмеченные диски, так как Microceph не поддерживает диски с уже созданными разделами.
- Убедитесь, что ноды кластера объединены высокоскоростной сетью - рекомендуется как минимум 10 GbE.
- Если вам нужно использовать NFS в качестве резервного хранилища, для создания кластера лучше взять Cephadm. Microceph не поддерживает NFS, а вот Cephadm умеет с ним работать. (наверное надо будет как-нибудь потом отдельной статьей рассказать про cephadm, там есть про что).
- Используйте распределенное хранилище SQLite для общего доступа к базам данных SQLite - это отличный пример адаптации баз данных под работу с распределенным хранилищем на нодах кластера.
Итоги
Если вы давно хотели поднять современное программно-определяемое хранилище на базе кластера Ceph, но сомневались из-за сложной настройки, Microceph через snap полностью избавляет от этой головной боли. Он позволяет получить блочные устройства и файловое хранилище без кучи заморочек по обслуживанию, которые обычно сопровождают классический Ceph cluster.
На фоне того, как GlusterFS и другие типы хранилищ постепенно уходят в прошлое, Ceph становится главным выбором для тех, кому нужно надежное, живое и полностью поддерживаемое SDS-решение. Мне особенно нравится, что Ceph универсален: его можно использовать и для блочного, и для файлового хранения. Многие также знают Ceph по Proxmox - там есть нативная интеграция, которая позволяет легко поднять кластер Ceph прямо на хостах Proxmox и получить общее хранилище без покупки внешних СХД.