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.