Распределенное хранилище Ceph
Ceph – программное обеспечение для организации высокодоступного распределенного кластера хранения данных на серверном оборудовании общего назначения. В ПК СВ "Брест" Ceph
может быть использован для предоставления доступа к создаваемым в нем блочным устройствам RBD.
Требования
- Имеется 2N+1 узлов для развертывания
Сeph
- На узлах установлен пакет
python-minimal
- На серверах развернута ОС в соответствии с Установка ОС
Для более надежной работы кластера рекомендуется в дальнейшем добавление четвертого сервера с сервисом OSD для хранения данных.
При расчете продуктовых кластеров Ceph рекомендуется резервировать по 4 Gb ОЗУ на каждый сервис OSD.
Установка и настройка кластера Ceph с помощью ceph-deploy
Подготовка серверов ceph и серверов ПК СВ "Брест"
Синхронизация времени
На каждом сервере Ceph необходимо прописать в файл /etc/ntp.conf
сервер для синхронизации времени:
Далее перезапустить и сделать автозапуск после перезагрузки службы ntp
на каждом сервере Ceph командами:
Разрешение имен
Для удобной работы с кластером Ceph
необходимо чтобы все серверы инфраструктуры могли обращаться к узлам Ceph
по доменным именам. В зависимости от типа используемого домена настройте разрешение имен:
Создание пользователя ceph-adm
На каждом сервере кластера Ceph, Front-end
и узлах виртуализации добавить пользователя ceph-adm
и разрешить ему Sudo
без пароля следующими командами:
Если узел Ceph
настраивается на Front-end
, или узле виртуализации, выполнить команду:
На сервере <ceph-1-hostname>
настроить беспарольный доступ по ssh
на все серверы Ceph, Front-end
и узлы виртуализации (команды выполнять от пользователя <local-admin>
):
Установка служб кластера Ceph на серверах ceph и серверах ПК СВ "Брест"
Установить пакет ceph-deploy
на сервер <ceph-1-hostname>
командой:
ceph-deploy
выполнять строго из консоли сервера <ceph-1-hostname>
, находясь в домашнем каталоге администратора.
Необязательно разворачивать монитор (MON) на каждом узле кластера Ceph
, но количество мониторов должно быть 2N+1.
Запустить команду для установки Ceph
компонент на серверах Ceph
:
Запустить команду для установки на сервере ceph1
компоненты ceph-mgr
:
Запустить команду для создания нового кластера Ceph
, при этом требуется указать в команде сервера кластера, на которых в дальнейшем будут инициализированы мониторы кластера:
После выполнения команды будут созданы конфигурационный файл (по умолчанию ceph.conf
) и keyring-файл мониторов
Запустить команду для инициализации мониторов на ранее указанных серверах кластера:
Важно знать, что после инициализации мониторов на хостах нельзя менять сетевой адрес, к которому будет привязана служба монитора кластера Ceph
. Кластер перестанет быть доступен и работоспособен. Сменить сетевой адрес можно удалив службу монитора и инициализовать ее заново с новыми настройками сети.
Выполнить команду для запуска компоненты mgr
на сервере <ceph-1-hostname>
:
Запустить команду для перезагрузки серверов Ceph
:
где:
<X>
- количество узлов Ceph
Запустить команды для создания служб OSD
на блочных устройствах /dev/sdb
серверов кластера Ceph
Для каждой службы OSD
рекомендуется предоставлять один физический диск для хранения данных.
Запустить команды для установки утилиты управления кластером Ceph
:
Запустить команду для копирования конфигурационного файла и keyring-файла администратора на сервер <ceph-1-hostname>
:
Запустить команду для проверки кластера Ceph
на сервере <ceph-1-hostname>
:
Вывод команды будет содержать блок информации о кластере, блок информации о запущенных сервисах и блок информации о пулах данных.
Пример вывода команды:
Запустить команду для отправки конфигурационных файлов на сервера ПК СВ "Брест" и сервера Ceph
:
Проверка
Следующими командами можно получить информацию по работе служб мониторов на серверах кластера Ceph
, команда запускается на сервере <ceph-1-hostname>
:
Создание пула для организации и хранения данных
По формуле вычислить необходимое количество PGs для кластера Ceph
: Total PGs = ((Total number of OSD * 100) / Max Replication Count) с округлением до ближайшей степени 2 в сторону увеличения. В случае для 3 узлов Ceph
получится:
(3 OSD * 100) / 3 = 100 и округляем до 128.
На сервере <ceph-1-hostname>
используйте следующие команды для создания пула с именем one
и включаем возможность подключения к пулу по протоколу rbd:
Будет создан пул one с уровнем репликации равным 3 (значение по-умолчанию).
Создание пользователя и ключей для доступа к пулу кластера Ceph
Создать пользователя кластера Ceph
, который будет иметь доступ к пулу one
. Данный пользователь будет также использоваться libvirt
для доступа к образам дисков:
Далее необходимо получить копию ключа данного пользователя для его дальнейшей передачи на сервера ПК СВ "Брест":
Установка ключей на серверы ПК СВ "Брест" для доступа к данным на кластере Ceph
Скопировать все файлы ключей на все серверы (Front-end
и узлы виртуализации) и перенести в нужные каталоги следующими командами:
Далее требуется сгенерировать секретный ключ для Ceph
пользователя и скопировать его на сервера ПК СВ "Брест" в каталог /var/lib/one
Запомнить универсальный уникальный идентификатор (UUID) для дальнейшего использования, команды выполняются на сервере <ceph-1-hostname>
:
Скопировать полученный ключ на каждый сервер облака (Front-end
и узлы виртуализации):
Установить секретный ключ libvirt
и удалить файлы ключа на всех серверах облака (переменная $UUID должна быть определена с предыдущих шагов):
Проверка
Необходимо убедиться, что Ceph
клиент имеет корректные настройки на серверах ПК СВ "Брест", выполнив команду для каждого сервера облака (результатом выполнения команды должен быть пустой вывод без ошибок):
Установить пакет qemu-block-extra
на все серверы облака, выполнив для каждого из них команду:
Для установки данного пакета в качестве репозитория необходимо использовать диск для разработчика ОС Astra Linux SE и соответствующее обновление безопасности.
Подключение кластера Ceph в ПК СВ "Брест"
Создание хранилища system
Перейдите по адресу http://<front-1-hostname>.<domain>
, где front-1-hostname
имя вашей фронтальной машины и нажмите кнопку Login
В меню слева развернуть вкладку Storage и выбрать пункт Datastores, далее перейти в настройки и нажать кнопку +

На следующей странице справа выбрать вариант настройки Advanced и внести конфигурацию хранилища:
где:
NAME - имя хранилища
POOL_NAME - имя пула в кластере Ceph
CEPH_HOST - имена узлов мониторов
BRIDGE_LIST - имена узлов, которые получат доступ к хранилищу
CEPH_SECRET - UUID из файла secret.xml
Пример заполнения:

Нажать кнопку Create. Результат добавления нового хранилища в ПК СВ "Брест":

Создание хранилища images
Нажать кнопку + и на следующей странице справа выбрать вариант настройки Advanced и внести конфигурацию хранилища:
Пример заполнения:

Далее нажать кнопку Create
Проверка
В результате добавления хранилищ в разделе Storage - Datastores веб-интерфейса должен отображаться объем хранилища Ceph
(в примере - 189Гб):

Создание хранилищ из командной строки
Кроме создания хранилищ через веб интерфейс вы можете воспользоваться следующими командами из терминала на Front-end
, предварительно сформировав файлы описаний system-ds.txt
и images-ds.txt
:
Создать системное хранилище (CEPH_SECRET
значение брать из файла secret.xml
):
system-ds.txt
Создать хранилище образов (CEPH_SECRET
значение брать из файла secret.xml
):
images-ds.txt
- Требования
- Установка и настройка кластера Ceph с помощью ceph-deploy
- Подключение кластера Ceph в ПК СВ "Брест"
- Создание хранилищ из командной строки