ADG Оставить заявку
Блог Инфраструктура 5 мин чтения

Ceph Nautilus в проде: наконец-то dashboard, который не врёт, и BlueStore без ручной настройки

Мигрировали кластер Ceph Luminous на Nautilus 14.x: новый dashboard показывает I/O per OSD без Grafana, а автотюнинг BlueStore сократил латентность записи.

Контекст момента

Ceph Nautilus (14.x) вышел в марте 2019: новый встроенный dashboard, переработанные mgr-модули, автотюнинг BlueStore и поддержка NFS Ganesha

Ceph Nautilus вышел в марте. Мы дали ему пару месяцев отлежаться, дождались нескольких патч-релизов, почитали чужие отчёты о миграции - и в итоге переехали с Luminous на одном из клиентских кластеров managed-инфраструктуры. Ниже - что реально изменилось, а не то, что написано в release notes.

Откуда мигрировали и зачем

Кластер живёт примерно полтора года, начинали с Luminous 12.x как тогда было принято - BlueStore уже стабилен, FileStore трогать не хотелось. Несколько сотен терабайт, OSD-узлы на NVMe плюс SATA, pool-ы под разные нагрузки: базы, блочные тома для VM, объектное хранилище.

Мотивация для апгрейда была конкретная:

  • Встроенный dashboard. В Luminous он тоже есть, но там практически декорация - OSD-уровня метрик нет, всё интересное приходилось тащить через ceph-exporter в Prometheus и строить в Grafana. Это работало, но требовало поддержки отдельного pipeline.
  • BlueStore autotuning. В Luminous cache size и compaction-параметры приходилось выставлять руками, и это было итеративным упражнением с неочевидным результатом.
  • NFS Ganesha-интеграция. Один из заказчиков давно просит CephFS через NFS - в Nautilus это наконец стало нормальным mgr-модулем, а не самодельной схемой.

Как переезжали

Апгрейд кластера Ceph - не rocket science, но и не «поменял пакеты и перезапустил». Официальная последовательность: сначала мониторы, потом mgr, потом OSD по одному, в конце MDS и RGW. Luminous -> Nautilus - это прыжок через одну major-версию (Mimic мы пропустили), что добавляет нервозности, но в нашем случае прошло без сюрпризов.

Перед стартом:

  • Снапшоты всех RBD-томов - на случай если что-то пойдёт не так на уровне данных.
  • ceph osd set noout - обязательно, чтобы при рестарте OSD кластер не начал перебалансировку.
  • Проверка ceph health detail - никаких HEALTH_WARN до начала апгрейда, только чистый статус.

Сам апгрейд мониторов занял вечер. OSD обновляли несколько ночей - по несколько штук за раз, с проверкой ceph -s между итерациями. Единственный момент, который потребовал внимания: после обновления части OSD в логах появились предупреждения о несовместимости feature flags между старыми и новыми демонами - это штатно для mixed-версионного состояния, но пугает, если не ожидаешь.

Что изменилось в реальности

Dashboard - это теперь полноценный инструмент, а не витрина. Ключевое изменение: IOPS и throughput per OSD видно прямо в интерфейсе. В Luminous-дашборде этого не было - там агрегаты по кластеру, и всё. Теперь можно открыть список OSD, кликнуть на конкретный, увидеть его read/write latency, IOPS, использование. Это меняет первичную диагностику: раньше горячий OSD искали через ceph osd perf в консоли или через Grafana-дашборд, теперь хватает браузера. Не Grafana убийца, но Grafana теперь нужна для исторических трендов и алертов, а не для базового «что происходит прямо сейчас».

BlueStore autotuning работает. В Luminous мы держали bluestore_cache_size_ssd настроенным вручную - значение подобрано эмпирически после нескольких недель наблюдений. В Nautilus включили автотюнинг (bluestore_cache_autotune: true) и просто убрали ручные значения. Кластер несколько дней жил в «нестабильном» состоянии по cache hits, потом устаканился. Латентность записи на NVMe-OSD упала заметно - не драматически, но стабильно. Повторять замеры в разные дни дало похожую картину, так что это не случайный выброс.

ceph-mgr стал ощутимо богаче. Новые модули: pg_autoscaler (автоматический расчёт числа PG на pool), telemetry (opt-in отправка агрегированной статистики в Ceph community), crash (коллекция crash dump-ов). Из них реально включили pg_autoscaler - это решает давнюю боль: неправильно выбранное число PG в Luminous требовало ручного пересчёта и ceph osd pool set pg_num. Теперь это происходит автоматически, хотя по умолчанию модуль работает в режиме warn (предупреждает, но не меняет) - пришлось явно переключить в on.

NFS Ganesha-интеграция. Подняли в тестовом режиме - ceph mgr module enable nfs, создали CephFS-backed NFS-шару. С точки зрения конфигурации всё через ceph nfs ... команды и mgr. Пока в тест, в прод не несём - нужно проверить поведение при failover Ganesha-ноды, это отдельная история.

Что не стало магически лучше

Миграция - не волшебство. Pool-ы с малым числом PG получили предупреждения от pg_autoscaler, часть из них мы решили выровнять вручную, а не ждать автоматики - потому что на живом кластере изменение числа PG это нагрузка. Процедура небыстрая.

Dashboard не заменяет Prometheus-интеграцию для алертинга. mgr/prometheus-модуль работает и в Nautilus, метрики те же, алерты не переписывали. Dashboard - это оперативный инструмент, а не замена мониторинговому стеку.

Где сейчас

Кластер работает на Nautilus уже несколько недель, аномалий нет. Следующий шаг - перевести ещё один кластер, там Luminous с FileStore OSD (исторически), и это уже другая история: переход FileStore -> BlueStore требует отдельной подготовки.

В целом Nautilus - это тот апгрейд, где новые возможности действительно используются сразу, а не лежат как запись в changelog.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.