Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7), РУСБ.10015-10
- Astra Linux Special Edition РУСБ.10015-17
- Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)
- Astra Linux Special Edition РУСБ.10015-03 (очередное обновление 7.6)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
- Astra Linux Special Edition РУСБ.10015-16 исп. 1
- Astra Linux Special Edition РУСБ.10015-16 исп. 2
- Astra Linux Special Edition РУСБ.10265-01 (очередное обновление 8.1)
- Astra Linux Common Edition 2.12
Общие положения
Распределенные файловые системы используются в высокоскоростных вычислениях и фокусируются на высокой доступности, производительности и масштабируемости. ОС Astra Linux поддерживает распределенную файловую систему Ceph.
Ceph --- распределенная объектная сеть хранения, обеспечивающая файловый и блочный интерфейсы доступа.
Может использоваться на системах, состоящих как из нескольких серверов, так и из тысяч узлов. Встроенные механизмы продублированной репликации данных обеспечивают высокую отказоустойчивость системы. При добавлении или удалении новых узлов массив данных автоматически балансируется с учетом внесенных изменений. В Ceph обработка данных и метаданных разделена на различные группы узлов в кластере.
Ceph представляет клиентам различные варианты доступа к данным:
- файловая система cephfs;
- блочное устройство rbd;
- объектное хранилище с доступом через s3-совместимое api.
Развертывание Ceph с помощью средства ceph-deploy
Далее описан возможный вариант настройки распределенного хранилища на базе Ceph на примере кластера из 3 узлов:
astra-ceph1
;astra-ceph2;
astra-ceph3
.
и административной рабочей станции astra-ceph-admin
.
При настройке на узлах кластера будут развернуты:
- сервис монитора (MON);
- сервис хранилища данных (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-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, если он не были ранее установлены:
sudo apt install python sshРазрешить автоматический запуск службы ssh, выполнив команду:
sudo systemctl enable --now sshДальнейшие предварительные действия на узлах кластера при необходимости можно выполнить с рабочей станции, подключаясь через SSH от имени администратора системы;создать учетную запись пользователя, например,
ceph-adm
:sudo adduser ceph-admВ результате появится диалог, в котором необходимо задать пароль пользователя и ввести дополнительную информацию. По окончании диалога необходимо ответить "y" ("Да");предоставить созданной учетной записи пользователя возможность использовать привилегии суперпользователя (sudo) без запроса пароля, последовательно выполнив следующие команды:
echo "ceph-adm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-adm
sudo chmod 0440 /etc/sudoers.d/ceph-admзадать высокий уровень целостности для созданного пользователя ceph-adm:
sudo pdpl-user -i 63 ceph-adm
ceph-deploy
выполняется на административной рабочей станции astra-ceph-admin
от имени пользователя ceph-adm
.Недопустимо использование средства
ceph-deploy
от имени суперпользователя (с sudo или же от имени пользователя root).Для развертывания Ceph необходимо выполнить на административной рабочей станции astra-ceph-admin
следующую последовательность действий:
Установить средство
ceph-deploy
:sudo apt install ceph-deploy pythonВойти в сессию пользователя ceph-adm:
su - ceph-admВ сессии пользователя ceph-adm выполнить следующие команды:
Создать ssh-ключ для беспарольного доступа и скопировать его на узлы кластера:
ssh-keygenВ ходе копирования для каждого узла кластера необходимо ответить <<yes>> (<<Да>>) и указать пароль пользователя
for N in $(seq 1 3); do ssh-copy-id ceph-adm@astra-ceph$N; doneceph-adm
;Скопировать ssh-ключ для беспарольного доступа к самой административной станции:
ssh-copy-id ceph-adm@astra-ceph-adminУстановить базовые компоненты Ceph на узлах кластера:
ceph-deploy --username ceph-adm install --mon --osd astra-ceph1 astra-ceph2 astra-ceph3Параметры --mon и --osd определяют компоненты Ceph, необходимые для установки. Если эти параметры не указаны будут установлены все компоненты Ceph;Перезагрузить узлы кластера:
for N in $(seq 1 3); do ssh ceph-adm@astra-ceph$N sudo reboot; doneУстановить на узле
astra-ceph1
дополнительный компонентceph-mgr
(сервис мониторинга):ceph-deploy --username ceph-adm install --mgr astra-ceph1Создать новый кластер Ceph, указав в команде узлы кластера, на которых в дальнейшем будут инициализированы первоначальные мониторы:
ceph-deploy --username ceph-adm new astra-ceph1 astra-ceph2 astra-ceph3После выполнения команды будут созданы конфигурационный файл ceph.conf и keyring-файл мониторов;Инициализировать мониторы на ранее указанных узлах кластера выполнив команду:
ceph-deploy --username ceph-adm mon create-initialСоздать mgr на узле
astra-ceph1
используя команду:ceph-deploy --username ceph-adm mgr create astra-ceph1Создать OSD на дисках /dev/sdb узлов кластера и добавить их в кластер используя команды:
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
используя команду:ceph-deploy --username ceph-adm install --cli astra-ceph-adminСкопировать конфигурационный файл и keyring-файл пользователя admin на административную рабочую станцию astra-ceph-admin используя команду:
ceph-deploy admin astra-ceph-adminЕсли предполагается использовать вариант доступа RBD (блочный доступ к данным), то установить и активировать сервис Metadata Server Daemon - сервер метаданных на узле
astra-ceph1:
ceph-deploy --username ceph-adm install --mds astra-ceph1
ceph-deploy --username ceph-adm mds create astra-ceph1Выйти из сессии пользователя ceph-adm:
exit
После завершения развертывания кластера Ceph проверить его состояние можно используя команду:
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
Ниже представлен пример настройки работы с хранилищем в варианте файловой системы cephfs. Основное преимущество файловой системы cephfs в том, что при её использовании возможно монтировать один и тот же каталог с данными на чтение и запись множеству клиентов. Для того, чтобы клиенты могли подключать Ceph как файловую систему, необходимо в кластере инициализировать хотя бы один сервер метаданных (MDS).
Для организации доступа к файловой системе cephfs выполнить следующую последовательность действий на административной рабочей станции astra-ceph-admin
:
Установить и активировать сервис Metadata Server Daemon - сервер метаданных на узле
astra-ceph1:
ceph-deploy --username ceph-adm install --mds astra-ceph1
ceph-deploy --username ceph-adm mds create astra-ceph1Создать в кластере пулы для данных cephfs_data и метаданных cephfs_metadata, указав для каждого пула размер плейсмент-группы (PG) равный 64:
sudo ceph osd pool create cephfs_data 64Значением размера PG должно быть число, являющееся степенью 2 (64, 128, 256...). При этом необходимо соблюсти баланс между количеством групп на OSD и их размером. Чем больше PG на одной OSD, тем больше понадобится памяти для хранения информации об их расположении. А чем больше размер самой PG, тем больше данных будет перемещаться при балансировке. Примерная формула расчета PG:
sudo ceph osd pool create cephfs_metadata 64
sudo ceph osd pool application enable cephfs_metadata cephfsTotal PGs = (Number OSD * 100) / max_replication_count
Более подробная формула доступна на официальном сайте Ceph: https://docs.ceph.com/en/latest/rados/operations/placement-groups/#choosing-the-number-of-placement-groups.
Создать файловую систему cephfs:
sudo ceph fs new cephfs cephfs_metadata cephfs_data- Для проверки доступа к файловой системе cephfs выполнить следующую последовательность действий на административной рабочей станции
astra-ceph-admin
:получить ключ администратора, для чего выполнить команду:
cat ceph.client.admin.keyring | grep keyи скопировать в буфер значение параметра key. Пример вывода после выполнения команды:key = AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==
создать файл с ключом администратора (полученном на предыдущем шаге):
echo "AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==" > admin.secretсоздать локальный каталог, в который будет монтироваться файловая система cephfs:
sudo mkdir /mnt/cephfsсмонтировать в созданный локальный каталог файловую систему cephfs:
sudo mount -t ceph 10.0.0.171:6789:/ /mnt/cephfs -o name=admin,secretfile=admin.secretгде 10.0.0.171 --- адрес одного из мониторов. При рабочем развертывании следует указывать все мониторы, но в данном случае, пул подключается временно, только для того, чтобы создать в нем каталог, и достаточно одного монитора. Мониторы при этом перечисляются через запятую, и команда для рабочего развертывания может выглядеть так:sudo mount -t ceph 10.0.0.171,10.0.0.172,10.0.0.173:/ /mnt/mycephfs -o name=admin,secretfile=admin.secretпроверить результат монтирования, выполнив команду:
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, который будем монтировать к другому серверу:sudo mkdir /mnt/cephfs/data1Создать пользователя client.data1 для доступа к директории data1, для чего выполнить команду:
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==
Значение ключа доступа также можно посмотреть с помощью команды:
sudo ceph auth get-key client.data1На любом другом сервере локальной сети, поддерживающем работу с cephfs, примонтировать каталог data1, указав IP-адреса всех трех мониторов:
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 --- ключ пользователя, полученный на предыдущем шаге.На сервере локальной сети проверить результат монтирования, выполнив команду:
df -h | grep mntПример вывода после выполнения команды:10.0.0.171,10.0.0.172,10.0.0.173:/ 15G 0 15G 0% /mnt
Таким образом, директория data1 на файловой системе cephfs подключена. Можно создать в ней тестовый файл, этот же файл должен стать доступен с любого другого клиента, к которому подключен этот же каталог.