Гид по технологиям

Установка и создание кластера Ceph на CentOS 7

• 9 min read • DevOps • Обновлено 22 Nov 2025
Установка Ceph на CentOS 7
Установка Ceph на CentOS 7

Ceph — распределённая система хранения для объектов, блоков и файлов. В этом пошаговом руководстве показано, как подготовить 6 узлов CentOS 7, установить ceph-deploy и развернуть кластер с одним монитором и тремя OSD. Включены проверки работоспособности, рекомендации по безопасности и список действий для типичных неисправностей.

Важно: это руководство ориентировано на Ceph Jewel с использованием ceph-deploy на CentOS 7 и предполагает, что у вас есть root-доступ ко всем узлам.

Введение

Ceph — открытая система хранения без единой точки отказа. Она предоставляет интерфейсы для объектного, блочного и файлового доступа. Ключевые компоненты кластера Ceph:

  • Ceph OSD (ceph-osd) — отвечает за хранение данных, репликацию и восстановление. Для отказоустойчивости требуется как минимум 2 OSD; в этом примере используется 3 OSD.
  • Ceph Monitor (ceph-mon) — хранит состояние кластера, карту OSD и CRUSH-карту.
  • Ceph Metadata Server (ceph-mds) — нужен для работы CephFS (если вы планируете монтировать Ceph как файловую систему).

Кратко о топологии, используемой в примере:

hostname IP address

ceph-admin 10.0.15.10 mon1 10.0.15.11 osd1 10.0.15.21 osd2 10.0.15.22 osd3 10.0.15.23 client 10.0.15.15

Все узлы используют CentOS 7. Каждый OSD-узел должен иметь две раздела: один root (/) и один пустой раздел, который будет использован под хранилище Ceph.

Конфигурация узлов Ceph и сетевые адреса

Что нужно знать перед началом

Определения в одну строку:

  • OSD — демон для работы с дисками и репликации данных.
  • Monitor — согласует состояние кластера и хранит критические метаданные.
  • ceph-deploy — утилита для автоматизации базовой установки Ceph (подходит для лабораторных и небольших установок).

Рекомендации:

  • Делайте резервные копии важных данных перед использованием zap/format.
  • Тестируйте все команды в контролируемой среде (виртуалки или тестовые сервера) перед применением в проде.

Содержание руководства

  1. Подготовка узлов — пользователи, NTP, SELinux, hosts
  2. Конфигурация SSH для безпарольного доступа
  3. Настройка Firewalld (порты для ceph-mon и ceph-osd)
  4. Подготовка дисков OSD (XFS)
  5. Установка Ceph и развертывание кластера
  6. Тестирование и базовая проверка состояния
  7. Критерии приёмки, чек-листы и процедуры
  8. Безопасность, резервирование и отладка
  9. Альтернативы и советы по масштабированию

Шаг 1 — Подготовка всех узлов

Этот шаг выполняется на всех 6 узлах. Для каждой команды приведены примеры, которые нужно запускать локально на каждом узле или через ceph-admin.

Создание пользователя Ceph

Создайте пользователя cephuser и задайте ему пароль:

useradd -d /home/cephuser -m cephuser
passwd cephuser

Далее даём этому пользователю право sudo без пароля. На всех узлах выполните:

echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser
chmod 0440 /etc/sudoers.d/cephuser
sed -i s'/Defaults requiretty/#Defaults requiretty'/g /etc/sudoers

Важно: редактирование /etc/sudoers должно быть корректным, иначе можно потерять доступ к sudo. Используйте tee и chmod, как показано, чтобы избежать синтаксических ошибок при прямом редактировании файла.

Установка и настройка NTP

Синхронизация времени должна быть точной на всех узлах:

yum install -y ntp ntpdate ntp-doc
ntpdate 0.us.pool.ntp.org
hwclock --systohc
systemctl enable ntpd.service
systemctl start ntpd.service

Если ваша инфраструктура в пределах другой страны, замените ntp pool на ближайший региональный пул (например, 0.ru.pool.ntp.org).

Установка Open VM Tools (опционально)

Если узлы развернуты в VMware:

yum install -y open-vm-tools

Отключение SELinux

Для простоты настройки в этом руководстве SELinux отключается. В продакшне лучше работать с SELinux в разрешающем режиме, но это требует дополнительной настройки политик.

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

Перезагрузка потребуется, чтобы изменение вступило в силу.

Настройка /etc/hosts

Отредактируйте /etc/hosts на каждом узле и добавьте сетевые записи:

10.0.15.10    ceph-admin
10.0.15.11    mon1
10.0.15.21    osd1
10.0.15.22    osd2
10.0.15.23    osd3
10.0.15.15    client

Проверьте доступность имен хостов по ping:

ping -c 5 mon1

Шаг 2 — Конфигурация SSH на ceph-admin

Ceph-admin будет выступать как точка управления и должна иметь возможность подключаться к другим узлам без ввода пароля.

Войдите на ceph-admin как root, переключитесь на cephuser:

ssh root@ceph-admin
su - cephuser

Создайте SSH-ключ для cephuser (оставьте passphrase пустым):

ssh-keygen

Создайте конфиг SSH для удобного доступа (файл ~/.ssh/config):

vim ~/.ssh/config

Вставьте содержимое:

Host ceph-admin
        Hostname ceph-admin
        User cephuser

Host mon1
        Hostname mon1
        User cephuser

Host osd1
        Hostname osd1
        User cephuser

Host osd2
        Hostname osd2
        User cephuser

Host osd3
        Hostname osd3
        User cephuser

Host client
        Hostname client
        User cephuser

Сделайте файл читаемым:

chmod 644 ~/.ssh/config

Добавьте ключи на удалённые узлы:

ssh-keyscan osd1 osd2 osd3 mon1 client >> ~/.ssh/known_hosts
ssh-copy-id osd1
ssh-copy-id osd2
ssh-copy-id osd3
ssh-copy-id mon1
ssh-copy-id client

Проверьте соединение:

ssh osd1

Генерация SSH-ключа и копирование на узлы


Шаг 3 — Настройка firewalld

Включаем firewalld и открываем порты, необходимые для работы компонентов Ceph.

На ceph-admin:

ssh root@ceph-admin
systemctl start firewalld
systemctl enable firewalld

Откройте базовые порты, используемые в интерфейсах мониторинга/администрирования:

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --zone=public --add-port=2003/tcp --permanent
sudo firewall-cmd --zone=public --add-port=4505-4506/tcp --permanent
sudo firewall-cmd --reload

На мониторе (mon1) откройте порт монитора Ceph (6789):

ssh mon1
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --zone=public --add-port=6789/tcp --permanent
sudo firewall-cmd --reload

На OSD-узлах откройте диапазон портов для OSD (6800–7300):

ssh osd1
sudo systemctl start firewalld
sudo systemctl enable firewalld
sudo firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
sudo firewall-cmd --reload

Повторите для osd2 и osd3.


Шаг 4 — Подготовка дисков OSD

В примере на каждом OSD-узле:

  1. /dev/sda — root
  2. /dev/sdb — пустой раздел для Ceph (в примере 30 ГБ)

Отформатируем /dev/sdb в XFS и создадим GPT-таблицу разделов:

ssh osd1
sudo fdisk -l /dev/sdb
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs /dev/sdb -f
sudo blkid -o value -s TYPE /dev/sdb

Убедитесь, что тип файловой системы xfs возвращается командой blkid.

Форматирование /dev/sdb в XFS на всех узлах


Шаг 5 — Сборка кластера Ceph

Все команды установки выполняются с ceph-admin под cephuser.

Войдите на ceph-admin и переключитесь на cephuser:

ssh root@ceph-admin
su - cephuser

Установка ceph-deploy

Добавляем репозиторий и устанавливаем ceph-deploy:

sudo rpm -Uhv http://download.ceph.com/rpm-jewel/el7/noarch/ceph-release-1-1.el7.noarch.rpm
sudo yum update -y && sudo yum install ceph-deploy -y

Создаём рабочую директорию для кластера:

mkdir cluster
cd cluster/

Создание конфигурации кластера

Определяем узел монитора mon1:

ceph-deploy new mon1

Отредактируйте ceph.conf и добавьте сетевые параметры под блок [global]:

# Your network address
public network = 10.0.15.0/24
osd pool default size = 2

osd pool default size = 2 означает, что по умолчанию каждый объект будет иметь 2 копии. Для продакшна рекомендуется как минимум 3 копии для выдержки отказов зоны.

Начальная конфигурация кластера Ceph

Установка Ceph на все узлы

Устанавливаем Ceph на ceph-admin, mon1 и osd узлы одной командой:

ceph-deploy install ceph-admin mon1 osd1 osd2 osd3

После установки создаём начальный монитор:

ceph-deploy mon create-initial
ceph-deploy gatherkeys mon1

Сбор ключей на узле монитора

Добавление OSD в кластер

Проверяем доступные диски:

ceph-deploy disk list osd1 osd2 osd3

Если /dev/sdb виден, можно удалить таблицы разделов (zap):

ceph-deploy disk zap osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

Подготовка OSD:

ceph-deploy osd prepare osd1:/dev/sdb osd2:/dev/sdb osd3:/dev/sdb

Активация OSD (после подготовки создаются разделы /dev/sdb1 и /dev/sdb2):

ceph-deploy osd activate osd1:/dev/sdb1 osd2:/dev/sdb1 osd3:/dev/sdb1

Проверьте результат:

ceph-deploy disk list osd1 osd2 osd3

OSD успешно добавлены в кластер

На OSD-узлах теперь будет разделение:

  1. /dev/sdb1 — Ceph Data
  2. /dev/sdb2 — Ceph Journal

Проверить можно через fdisk:

ssh osd1
sudo fdisk -l /dev/sdb

Разметка /dev/sdb на OSD

Развёртывание ключей управления на узлах

ceph-deploy admin ceph-admin mon1 osd1 osd2 osd3
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring

После этого базовый кластер Ceph создан.


Шаг 6 — Тестирование настроек кластера

Проверим здоровье кластера и общее состояние.

Входим на мониторе:

ssh mon1
sudo ceph health
sudo ceph -s

Ожидаемые состояния:

  • ceph health возвращает OK
  • присутствует монитор mon1
  • 3 OSD в статусе up
  • пул(ы) доступны

Статус кластера Ceph

Если всё хорошо — поздравляем, кластер создан.


Критерии приёмки

  • Ceph health = OK
  • Наличие минимум одного монитора (mon1) в списке
  • Все OSD в статусе up и in
  • Можно выполнить базовые операции ceph (получение статуса, создание пула)
  • ceph.client.admin.keyring уже развернут и имеет корректные права

Чек-листы по ролям

Администратор кластера (ceph-admin):

  • Создал cephuser на всех узлах
  • Настроил безпарольный SSH
  • Установил ceph-deploy и необходимые пакеты
  • Собрал и развернул монитор и OSD
  • Проверил состояние кластера (ceph -s)

Операционный инженер (OSD/хост):

  • Убедился в наличии пустого диска для OSD
  • Отформатировал /dev/sdb в XFS
  • Настроил firewalld на OSD
  • Проверил журналы systemd для ceph-osd

Мини-методология развертывания (по шагам)

  1. Подготовка: пользователи, сеть, NTP, ssh.
  2. Подготовка дисков: форматирование, проверка.
  3. Установка ceph-deploy и зависимостей.
  4. Создание конфигурации и определение монитора.
  5. Установка пакетов Ceph на все узлы.
  6. Подготовка/активация OSD.
  7. Развёртывание ключей и проверка здоровья кластера.
  8. Тестирование операций (создание пула, запись/чтение).

Как проверять (тестовые команды и критерии)

Создать тестовый пул и записать объекты:

sudo ceph osd pool create testpool 128
rados -p testpool put foo /etc/hosts
rados -p testpool get foo /tmp/foo.copy
diff /etc/hosts /tmp/foo.copy

Успех: diff не показывает различий.


Технические заметки и отладка (Runbook)

Типичные проблемы и команды для диагностики:

  • ceph health WARN/ERR

    • sudo ceph -s
    • sudo ceph health detail
    • проверить журналы: sudo journalctl -u ceph-mon@mon1
  • OSD не присоединился

    • sudo ceph osd tree
    • sudo ceph osd status
    • проверить логи ceph-osd: sudo journalctl -u ceph-osd@{id}
  • Сетевые проблемы

    • ping/ssh между узлами
    • sudo ss -ltnp | grep ceph

Rollback (быстрая оценка):

  • Если zap удалил данные по ошибке — восстановление возможно только из резервных копий; гарантировать rollback без резервных копий нельзя.

Безопасность и жёсткие настройки

Рекомендации по безопасности:

  • Ограничьте доступ к /etc/ceph и ключевым файлам только узлам, имеющим право управлять кластером (chmod 640/600 при необходимости).
  • Используйте отдельные сети для публичного и кластерного трафика (public и cluster network) в ceph.conf, если у вас более сложная сеть.
  • В продакшне рекомендуется не отключать SELinux без детальной проверки политик; вместо этого настройте правила SELinux для ceph.
  • Ограничьте доступ по SSH по IP-адресу и используйте ключи с passphrase, храня passphrase в защищённом менеджере секретов.

Альтернативные подходы и когда ceph-deploy не подходит

Когда ceph-deploy хорош:

  • Быстрая лабораторная установка
  • Небольшие кластеры и тестовые среды

Когда NOT использовать ceph-deploy:

  • Продакшн с сотнями узлов — лучше ceph-ansible, cephadm (для новых версий Ceph) или интеграция с orchestration (например, Rook + Kubernetes).
  • Нужна полная автоматизация с конфигурационным управлением — используйте Ansible/Terraform.

Альтернативы:

  • ceph-ansible — полнофункциональный плейбук для автоматизированной установки и обновлений.
  • cephadm — современная утилита от upstream для управления контейнеризированным развертыванием Ceph.
  • Rook — оператор Ceph для Kubernetes.

Факты и числа (Fact box)

  • Минимальное количество OSD в примере: 3
  • Типичный размер пула в примере: osd pool default size = 2
  • Порт монитора: 6789
  • Диапазон портов OSD: 6800–7300
  • Формат файловой системы диска OSD в примере: XFS

Советы по масштабированию и миграции

  • Для масштабирования добавляйте OSD по несколько штук и давайте системе время для восстановления и rebalancing.
  • При добавлении OSD следите за ceph status и не добавляйте слишком много одновременно.
  • Для миграции с ceph-deploy на cephadm/ceph-ansible подготовьте инвентарь и сохраните текущие конфигурации/ключи.

Частые ошибки и когда это не сработает

  • Неправильная синхронизация времени приводит к ошибкам аутентификации и расхождениям в кворуме мониторов.
  • Неправильные права на keyring приведут к отказу в доступе менеджера.
  • Использование недостаточного количества реплик (size < 3) в продакшне повышает риск потери данных при отказе хоста.

Пример playbook для быстрой проверки статуса (шаблон)

# Примерный список команд для быстрой проверки
sudo ceph -s
sudo ceph osd tree
sudo ceph osd df
sudo ceph health detail

Краткое объявление (для рассылки или документа)

Ceph кластер на CentOS 7 установлен и протестирован: создан монитор и 3 OSD, настроены сетевые порты и синхронизация времени. Руководство включает пошаговые команды, чек‑листы ролей, runbook для отладки и рекомендации по безопасности. Используйте это руководство как шаблон для лабораторных и мелкомасштабных развёртываний; для продакшн‑инфраструктуры рассмотрите ceph-ansible или cephadm.


Итог и дальнейшие шаги

Вы успешно настроили базовый Ceph-кластер. Рекомендуемые следующие шаги:

  • Изучите работу с RBD (блочное хранилище) и CephFS (файловая система).
  • Настройте мониторинг (Prometheus, Grafana) для отслеживания состояния OSD, latency и throughput.
  • Подумайте о политике резервного копирования метаданных и ключей.

Краткие ключевые выводы:

  • Ceph предоставляет гибкую и масштабируемую платформу хранения.
  • ceph-deploy подходит для быстрой сборки и тестирования кластера.
  • В продакшне используйте более зрелые инструменты автоматизации и планирование отказоустойчивости.

Спасибо за внимание. В следующей части руководства будет показано, как использовать Ceph как блочное устройство (RBD) и как смонтировать CephFS.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро