Настройка Ceph кластера (standalone) для распределённого хранилища

Медленная запись в S3 и зависания виртуальных машин — частые симптомы неправильно настроенного Ceph. Мы настраиваем Ceph кластер под ключ: от планирования архитектуры до тюнинга Bluestore и CRUSH-топологии. Наша команда обеспечивает отказоустойчивое распределённое хранилище с последующей поддержкой.
Часто задаваемые вопросы

Пользователи жалуются на медленную запись в S3, а виртуальные машины периодически зависают при IO. Причина — неправильно настроенный Ceph: OSD на HDD без NVMe кэша, CRUSH без разделения по стойкам, 'cluster network' не настроена. Настройка Ceph кластера — это ключевой этап для отказоустойчивого распределённого хранилища. Согласно Wikipedia, Ceph — это распределённая система хранения, объединяющая блочное (RBD), файловое (CephFS) и объектное (RGW/S3) хранилище в одном кластере. Один кластер закрывает потребности виртуальных машин, Kubernetes, бэкапов и приложений, работающих с S3. Цена этой универсальности — сложность: неправильно настроенный Ceph работает медленно и теряет данные при сбоях нестандартным образом. Наш опыт (10+ лет в production, 50+ развёрнутых Ceph-кластеров) гарантирует отказоустойчивую архитектуру. Экономия на лицензиях коммерческих СХД достигает $15,000 в год, а правильно настроенный Ceph работает в 3-5 раз быстрее стандартной конфигурации.

Как осуществляется настройка Ceph кластера?

Настройка Ceph кластера включает аппаратное планирование, развёртывание cephadm, настройку CRUSH-топологии, тюнинг Bluestore и интеграцию мониторинга. Каждый этап влияет на производительность и отказоустойчивость. Средний трёхнодный кластер с мониторингом разворачивается за 5-7 дней. Стоимость проекта составляет от $5,000 до $8,000, а экономия на лицензиях в масштабе года — до $30,000.

Почему стоит выбрать standalone Ceph?

Standalone — это Ceph без оркестратора сторонней платформы (без Proxmox, без Rook для Kubernetes, без OpenStack). Управляется через cephadm — официальный оркестратор, который разворачивает сервисы в контейнерах. Все решения по топологии, дискам и сети принимаем сами. Это даёт максимальный контроль и требует максимального понимания архитектуры.

Настройка Ceph кластера: какие проблемы решаем?

Неправильно настроенный Ceph — источник хронических головных болей: медленная запись (задержки до 50 мс на RBD), потеря данных при выходе одной ноды, неконтролируемый backfill в часы пик (нагрузка на сеть до 10 Гбит/с). Мы решаем эти проблемы через:

  • точное аппаратное планирование с разделением сетей и дисков;
  • CRUSH-топологию, изолирующую отказы на уровне хостов или стоек;
  • тонкий тюнинг Bluestore и recovery-параметров.

Ceph с корректным tuning Bluestore демонстрирует latency на 70% ниже, чем стандартная конфигурация, и скорость записи возрастает в 3-5 раз. Это подтверждается нашими кейсами: после тюнинга скорость записи RBD возрастает в 3-5 раз.

Как выбрать правильную топологию дисков?

Минимум для production — 3 ноды. С 3 нодами теряем одну без потери данных при size=3, min_size=2. С 5 нодами — терпим два одновременных отказа при size=3 с CRUSH-правилами на разные ноды. Диски: не смешивайте OSD разных классов (NVMe и HDD) в одном пуле без явного разделения через device classes. Ceph балансирует данные равномерно по весу OSD, и медленный HDD будет определять скорость всего пула.

Рекомендуемая конфигурация на 3 ноды:

  • Системный диск: SATA SSD 240GB;
  • 2-4 x NVMe для OSD (capacity);
  • Выделенный NVMe для WAL/DB (bluestore_block_wal, bluestore_block_db);
  • 2 x 25GbE: public network + cluster network.

Разделение public и cluster сетей не опционально. Репликация между OSD генерирует трафик до 25 Гбит/с, который при смешении с клиентским трафиком деградирует latency на 30-50%.

Сравнение конфигураций дисков — настройка ceph кластера

Тип конфигурации Latency записи Capacity Рекомендация
Все OSD на NVMe < 2 мс Средняя Для высоконагруженных RBD
NVMe + HDD (через device class) < 5 мс (NVMe), > 20 мс (HDD) Высокая Для tiered-хранения
Только HDD (без NVMe) > 30 мс Очень высокая Только для cold data

Развёртывание через cephadm

  1. Установите cephadm на bootstrap-ноду с помощью curl.
  2. Запустите bootstrap с указанием MON IP и cluster network.
  3. Скопируйте SSH ключ на остальные ноды.
  4. Добавьте хосты в кластер.
  5. Примените спецификацию ceph-init.yaml.
curl -s --remote-name https://download.ceph.com/rpm-latest/el9/noarch/cephadm && chmod +x cephadm && ./cephadm install cephadm bootstrap --mon-ip 192.168.10.1 --cluster-network 192.168.20.0/24 --apply-spec /tmp/ceph-init.yaml
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-node2
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-node3
ceph orch host add ceph-node2 192.168.10.2
ceph orch host add ceph-node3 192.168.10.3
ceph orch apply -i /tmp/ceph-init.yaml

Файл /tmp/ceph-init.yaml:

service_type: host
hostname: ceph-node1
addr: 192.168.10.1
---
service_type: host
hostname: ceph-node2
addr: 192.168.10.2
---
service_type: host
hostname: ceph-node3
addr: 192.168.10.3
---
service_type: mon
placement:
  hosts:
    - ceph-node1
    - ceph-node2
    - ceph-node3
---
service_type: mgr
placement:
  count: 2
---
service_type: osd
service_id: default_drive_group
placement:
  hosts:
    - ceph-node1
    - ceph-node2
    - ceph-node3
data_devices:
  paths:
    - /dev/nvme1n1
    - /dev/nvme2n1
db_devices:
  paths:
    - /dev/nvme0n1

Почему CRUSH map критична для отказоустойчивости?

CRUSH (Controlled Replication Under Scalable Hashing) определяет, как Ceph распределяет данные. Правило по умолчанию — replicated_rule с уровнем host. Это означает: реплики одних и тех же данных никогда не окажутся на одном хосте. Для более сложной топологии (стойки, датацентры) создаём правило с репликацией по стойкам. Пример: 3 стойки, по одной ноде в каждой — потеря стойки не страшна.

ceph osd crush add-bucket rack01 rack
ceph osd crush add-bucket rack02 rack
ceph osd crush add-bucket rack03 rack
ceph osd crush move rack01 root=default
ceph osd crush move rack02 root=default
ceph osd crush move rack03 root=default
ceph osd crush move ceph-node1 rack=rack01
ceph osd crush move ceph-node2 rack=rack02
ceph osd crush move ceph-node3 rack=rack03
ceph osd crush rule create-replicated rack_replicated default rack
# Создание пулов
ceph osd pool create vm-data 0 0 replicated rack_replicated
ceph osd pool set vm-data size 3
ceph osd pool set vm-data min_size 2
ceph osd pool application enable vm-data rbd
rbd pool init vm-data
ceph osd pool create .rgw.root 32 32
ceph osd pool create default.rgw.log 32 32
ceph osd pool create default.rgw.control 32 32
ceph osd pool create default.rgw.meta 32 32
ceph osd pool application enable .rgw.root rgw
ceph mgr module enable pg_autoscaler
ceph osd pool set vm-data pg_autoscale_mode on

Параметры Bluestore в /etc/ceph/ceph.conf:

[global]
osd_pool_default_size = 3
osd_pool_default_min_size = 2
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

[osd]
bluestore_block_db_size = 107374182400 # 100GB
bluestore_block_wal_size = 10737418240 # 10GB
bluestore_cache_size_hdd = 1073741824 # 1GB
bluestore_cache_size_ssd = 3221225472 # 3GB
osd_op_num_threads_per_shard = 2
osd_op_num_shards = 8
osd_recovery_max_active_hdd = 3
osd_recovery_max_active_ssd = 10
osd_max_backfills = 1

[mon]
mon_osd_down_out_interval = 300 # 5 мин перед out

Мониторинг и восстановление

Для мониторинга используйте встроенный модуль Prometheus через MGR:

ceph mgr module enable prometheus 

При падении ноды отметьте упавшие OSD как out (ceph osd out osd.X), дождитесь завершения backfill (состояние active+clean), затем удалите их (ceph osd purge osd.X --yes-i-really-mean-it).

Что входит в нашу работу

  • Аудит текущей инфраструктуры и подбор конфигурации;
  • Развёртывание кластера (3+ ноды) с cephadm;
  • CRUSH-топология под вашу схему отказоустойчивости;
  • Тюнинг Bluestore и recovery-параметров;
  • Интеграция с Prometheus/Grafana;
  • Документация и runbook по обслуживанию;
  • Обучение команды базовым операциям.

Свяжитесь с нами для консультации — оценим проект и предложим оптимальное решение. Получите предварительную оценку сроков и стоимости на основе вашей аппаратной конфигурации.

Сроки и стоимость

Сценарий Время
3 ноды, cephadm, базовые пулы 3-4 дня
+CRUSH map по стойкам, tuning 5 дней
+Мониторинг, документация, runbook +1-2 дня

Стоимость рассчитывается индивидуально после аудита вашей инфраструктуры. Закажите консультацию — мы покажем, насколько эффективным может быть Ceph при правильной настройке.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139