Оглавление |
---|
Информация | ||
---|---|---|
| ||
|
Общие положения
Распределенные файловые системы используются в высокоскоростных вычислениях и фокусируются на высокой доступности, производительности и масштабируемости. ОС Astra Linux поддерживает распределенную файловую систему Ceph.
Ceph --- распределенная объектная сеть хранения, обеспечивающая файловый и блочный интерфейсы доступа.
Может использоваться на системах, состоящих как из нескольких серверов, так и из тысяч узлов. Встроенные механизмы продублированной репликации данных обеспечивают высокую отказоустойчивость системы. При добавлении или удалении новых узлов массив данных автоматически балансируется с учетом внесенных изменений. В Ceph обработка данных и метаданных разделена на различные группы узлов в кластере.
Развертывание Ceph с помощью средства ceph-deploy
Далее описан возможный вариант настройки распределенного хранилища на базе Ceph на примере кластера из 3 узлов:
astra-ceph1
;astra-ceph2;
astra-ceph3
.
и административной рабочей станции astra-ceph-admin
.
При настройке на узлах кластера будут развернуты:
- сервис монитора (MON);
- сервис хранилища данных (OSD).
Предупреждение |
---|
Использованная конфигурация предназначена только для ознакомления и тестирования Ceph. При развертывании рабочей системы на объекте не рекомендуется размещать монитор и OSD на одном узле. |
В составе каждого из узлов кластера имеются два жестких диска:
- /dev/sda для размещения ОС Astra Linux;
- /dev/sdb для размещения службы OSD.
Кроме того, на узле astra-ceph1
будет запущен сервис ceph-mgr
(Ceph Manager Daemon).
Предполагается, что перед началом развертывания Ceph на узлах astra-ceph1
, astra-ceph2
и astra-ceph3
выполнены следующие действия:
- установлен фиксированный IP-адрес, в качестве сервера DNS указан IP-адрес административной рабочей станции
astra-ceph-admin
; - настроена служба синхронизации времени. В качестве сервера единого сетевого времени выступает административная рабочая станция
astra-ceph-admin
.
Предупреждение |
---|
Предполагается, что далее во время развертывания Ceph на всех узлах кластера доступен репозиторий ОС Астра. |
При развертывании с помощью средства ceph-deploy
администрирование кластера осуществляется с административной рабочей станции astra-ceph-admin
. Для удобства развёртывания, в файле /etc/hosts указаны короткие имена рабочей станции и узлов кластера:
Блок кода |
---|
10.0.0.100 astra-ceph-admin 10.0.0.171 astra-ceph1 10.0.0.172 astra-ceph2 10.0.0.173 astra-ceph3 |
Средство ceph-deploy
обеспечивает быстрый способ развертывания Ceph без тонкой настройки, используя инструменты ssh, sudo и Python.
Перед началом развертывания на всех узлах кластера и на административной рабочей станции необходимо выполнить следующие предварительные действия:
Установить пакеты python и ssh, если он не были ранее установлены:
Command sudo apt install python ssh Разрешить автоматический запуск службы ssh, выполнив команду:
Command sudo systemctl enable --now ssh Информация Дальнейшие предварительные действия на узлах кластера при необходимости можно выполнить с рабочей станции, подключаясь через SSH от имени администратора системы; создать учетную запись пользователя, например,
ceph-adm
:Command sudo adduser ceph-adm В результате появится диалог, в котором необходимо задать пароль пользователя и ввести дополнительную информацию. По окончании диалога необходимо ответить "y" ("Да");
предоставить созданной учетной записи пользователя возможность использовать привилегии суперпользователя (sudo) без запроса пароля, последовательно выполнив следующие команды:
Command echo "ceph-adm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-adm
sudo chmod 0440 /etc/sudoers.d/ceph-admзадать высокий уровень целостности для созданного пользователя ceph-adm:
Command sudo pdpl-user -i 63 ceph-adm
Развертывание Ceph с помощью средства ceph-deploy
выполняется на административной рабочей станции astra-ceph-admin
от имени пользователя ceph-adm
.
Предупреждение |
---|
Недопустимо использование средства ceph-deploy от имени суперпользователя (с sudo или же от имени пользователя root). |
Далее для развертывания Ceph необходимо выполнить на административной рабочей станции astra-ceph-admin
следующую последовательность действий:
настроить беспарольный ssh-доступ на все узлы кластера, выполнив последовательность команд:
Command ssh-keygen
for N in $(seq 1 3); do ssh-copy-id ceph-adm@astra-ceph$N; doneВ ходе выполнения команд для каждого узла кластера необходимо ответить <<yes>> (<<Да>>) и указать пароль пользователя
ceph-adm
;скопировать ssh-ключ для беспарольного доступа к самой административной станции:
Command ssh-copy-id ceph-adm@astra-ceph-admin установить средство
ceph-deploy
:Command sudo apt install ceph-deploy python установить базовые компоненты Ceph на узлах кластера:
Command ceph-deploy --username ceph-adm install --mon --osd astra-ceph1 astra-ceph2 astra-ceph3 Параметры --mon и --osd определяют компоненты Ceph, необходимые для установки. Если эти параметры не указаны будут установлены все компоненты Ceph;
перезагрузить узлы кластера:
Command for N in $(seq 1 3); do ssh ceph-adm@astra-ceph$N sudo reboot; done установить на узле
astra-ceph1
дополнительный компонентceph-mgr
(сервис мониторинга):Command ceph-deploy --username ceph-adm install --mgr astra-ceph1 создать новый кластер Ceph, указав в команде узлы кластера, на которых в дальнейшем будут инициализированы первоначальные мониторы:
Command ceph-deploy --username ceph-adm new astra-ceph1 astra-ceph2 astra-ceph3 После выполнения команды будут созданы конфигурационный файл ceph.conf и keyring-файл мониторов;
инициализировать мониторы на ранее указанных узлах кластера выполнив команду:
Command ceph-deploy --username ceph-adm mon create-initial создать mgr на узле
astra-ceph1
используя команду:Command ceph-deploy --username ceph-adm mgr create astra-ceph1 создать OSD на дисках /dev/sdb узлов кластера и добавить их в кластер используя команды:
Command ceph-deploy --username ceph-adm osd create --data /dev/sdb astra-ceph1
ceph-deploy --username ceph-adm osd create --data /dev/sdb astra-ceph2
ceph-deploy --username ceph-adm osd create --data /dev/sdb astra-ceph3установить основные компоненты Ceph на административную рабочую станцию
astra-ceph-admin
используя команду:Command ceph-deploy --username ceph-adm install --cli astra-ceph-admin скопировать конфигурационный файл и keyring-файл пользователя admin на административную рабочую станцию astra-ceph-admin используя команду:
Command ceph-deploy admin astra-ceph-admin после завершения развертывания кластера Ceph проверить его состояние можно используя команду:
Command sudo ceph -s
В случае корректной работы кластера параметр health принимает значение HEALTH_OK:Блок кода cluster: id: 03ff5b8a-a453-4da3-8296-2d473649bcc4 health: HEALTH_OK services: mon: 3 daemons, quorum astra-ceph1,astra-ceph2,astra-ceph3 (age 3h) mgr: astra-ceph1(active, since 3h) osd: 3 osds: 3 up (since 3h), 3 in (since 25h) data: pools: 0 pools, 0 pgs objects: 0 objects, 0 bytes usage: 3.0 GiB used, 45 GiB / 48 GiB avail pgs:
Использование кластера Ceph
Ceph представляет для клиента различные варианты доступа к данным:
- файловая система cephfs;
- блочное устройство rbd;
- объектное хранилище с доступом через s3-совместимое api.
Ниже представлен пример настройки работы с хранилищем в варианте файловой системы cephfs. Основное преимущество файловой системы cephfs в том, что при её использовании возможно монтировать один и тот же каталог с данными на чтение и запись множеству клиентов. Для того, чтобы клиенты могли подключать Ceph как файловую систему, необходимо в кластере инициализировать хотя бы один сервер метаданных (MDS).
Для организации доступа к файловой системе cephfs выполнить следующую последовательность действий на административной рабочей станции astra-ceph-admin
:
установить и активировать сервис Metadata Server Daemon - сервер метаданных на узле
astra-ceph1:
Command ceph-deploy --username ceph-adm install --mds astra-ceph1
ceph-deploy --username ceph-adm mds create astra-ceph1создать в кластере пулы для данных cephfs_data и метаданных cephfs_metadata, указав для каждого пула размер плейсмент-группы (PG) равный 64:
Command sudo ceph osd pool create cephfs_data 64
sudo ceph osd pool create cephfs_metadata 64
sudo ceph osd pool application enable cephfs_metadata cephfsЗначением размера PG должно быть число, являющееся степенью 2 (64, 128, 256...). При этом необходимо соблюсти баланс между количеством групп на OSD и их размером. Чем больше PG на одной OSD, тем больше понадобится памяти для хранения информации об их расположении. А чем больше размер самой PG, тем больше данных будет перемещаться при балансировке. Примерная формула расчета PG:
Блок кода Total PGs = (Number OSD * 100) / max_replication_count
Более подробная формула доступна на официальном сайте Ceph - : https://docs.ceph.com/pgcalc//en/latest/rados/operations/placement-groups/#choosing-the-number-of-placement-groups.
создать файловую систему cephfs:
Command sudo ceph fs new cephfs cephfs_metadata cephfs_data - Для проверки доступа к файловой системе cephfs выполнить следующую последовательность действий на административной рабочей станции
astra-ceph-admin
:получить ключ администратора, для чего выполнить команду:
Command cat ceph.client.admin.keyring | grep key и скопировать в буфер значение параметра key. Пример вывода после выполнения команды:
Блок кода key = AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==
создать файл с ключом администратора (полученном на предыдущем шаге):
Command echo "AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==" > admin.secret создать локальный каталог, в который будет монтироваться файловая система cephfs:
Command sudo mkdir /mnt/cephfs смонтировать в созданный локальный каталог файловую систему cephfs:
Command sudo mount -t ceph 10.0.0.171:6789:/ /mnt/cephfs -o name=admin,secretfile=admin.secret где 10.0.0.171 --- адрес одного из мониторов. При рабочем развертывании следует указывать все мониторы, но в данном случае, пул подключается временно, только для того, чтобы создать в нем каталог, и достаточно одного монитора. Мониторы при этом перечисляются через запятую, и команда для рабочего развертывания может выглядеть так:
Command sudo mount -t ceph 10.0.0.171,10.0.0.172,10.0.0.173:/ /mnt/mycephfs -o name=admin,secretfile=admin.secret проверить результат монтирования, выполнив команду:
Command df -h | grep cephfs Пример вывода после выполнения команды:
Блок кода 10.0.0.171:6789:/ 15G 0 15G 0% /mnt/cephfs
В приведенном примере размер пула данных равен 15 Гб (в кластере 3 диска по 16 Гб, фактор репликации 3 и 1 гб занят под служебные нужды). Таким образом, в наличии имеется 15 Гб свободного места для использования в кластере ceph. Это место делится поровну между всеми пулами.
Для того. чтобы начать пользоваться файловой системой cephfs выполнить следующую последовательность действий:
на административной рабочей станции
astra-ceph-admin
создать в cephfs подкаталог data1, который будем монтировать к другому серверу:Command sudo mkdir /mnt/cephfs/data1 создать пользователя client.data1 для доступа к директории data1, для чего выполнить команду:
Command sudo ceph auth get-or-create client.data1 mon 'allow r' mds 'allow r,allow rw path=/data1' osd 'allow rw pool=cephfs_data' и скопировать значение параметра key. Пример вывода после выполнения команды:
Блок кода [client.data1] key = AQDh335g/MDeKBAAOxnXO/H4W7g2snPOpq+lCA==
Значение ключа доступа также можно посмотреть с помощью команды:
Command sudo ceph auth get-key client.data1 на любом другом сервере локальной сети, поддерживающем работу с cephfs, примонтировать каталог data1, указав IP-адреса всех трех мониторов:
Command sudo mount -t ceph 10.0.0.171,10.0.0.172,10.0.0.173:/ /mnt -o name=data1,secret='AQDh335g/MDeKBAAOxnXO/H4W7g2snPOpq+lCA==' В приведенном примере 10.0.0.171,10.0.0.172,10.0.0.173 --- IP-адреса мониторов кластера, значение параметра secret --- ключ пользователя, полученный на предыдущем шаге.
на сервере локальной сети проверить результат монтирования, выполнив команду:
Command df -h | grep mnt Пример вывода после выполнения команды:
Блок кода 10.0.0.171,10.0.0.172,10.0.0.173:/ 15G 0 15G 0% /mnt
Таким образом, директория data1 на файловой системе cephfs подключена. Можно создать в ней тестовый файл, этот же файл должен стать доступен с любого другого клиента, к которому подключен этот же каталог.