Данная статья применима к:

  • 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). 

Использованная конфигурация предназначена только для ознакомления и тестирования 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.

  1. Перед началом развертывания на всех узлах кластера и на административной рабочей станции необходимо выполнить следующие предварительные действия:

    1. Установить пакеты python и ssh, если он не были ранее установлены:

      sudo apt install python ssh

    2. Разрешить автоматический запуск службы ssh, выполнив команду:

      sudo systemctl enable --now ssh 

      Дальнейшие предварительные действия на узлах кластера при необходимости можно выполнить с рабочей станции, подключаясь через SSH от имени администратора системы;
    3. создать учетную запись пользователя, например, ceph-adm:

      sudo adduser ceph-adm
      В результате появится диалог, в котором необходимо задать пароль пользователя и ввести дополнительную информацию. По окончании диалога необходимо ответить "y" ("Да");

    4. предоставить созданной учетной записи пользователя возможность использовать привилегии суперпользователя (sudo) без запроса пароля, последовательно выполнив следующие команды:

      echo "ceph-adm ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-adm
      sudo chmod 0440 /etc/sudoers.d/ceph-adm

    5. задать высокий уровень целостности для созданного пользователя ceph-adm:

      sudo pdpl-user -i 63 ceph-adm


Развертывание Ceph с помощью средства ceph-deploy выполняется на административной рабочей станции astra-ceph-admin от имени пользователя ceph-adm.
Недопустимо использование средства ceph-deploy от имени суперпользователя (с sudo или же от имени пользователя root).

Для развертывания Ceph необходимо выполнить на административной рабочей станции astra-ceph-admin следующую последовательность действий:

  1. Установить средство ceph-deploy:

     sudo apt install ceph-deploy python

  2. Войти в сессию пользователя ceph-adm:

     su - ceph-adm

  3. В сессии пользователя ceph-adm выполнить следующие команды:

    1. Создать ssh-ключ для беспарольного доступа и скопировать его на узлы кластера:

      ssh-keygen 
      for N in $(seq 1 3); do ssh-copy-id ceph-adm@astra-ceph$N; done
      В ходе копирования для каждого узла кластера необходимо ответить <<yes>> (<<Да>>) и указать пароль пользователя ceph-adm;

    2. Скопировать ssh-ключ для беспарольного доступа к самой административной станции:

      ssh-copy-id ceph-adm@astra-ceph-admin

    3. Установить базовые компоненты  Ceph на узлах кластера:

      ceph-deploy --username ceph-adm install --mon --osd astra-ceph1 astra-ceph2 astra-ceph3
      Параметры --mon и --osd определяют компоненты Ceph, необходимые для установки. Если эти параметры не указаны будут установлены все компоненты Ceph;

    4. Перезагрузить узлы кластера:

      for N in $(seq 1 3); do ssh ceph-adm@astra-ceph$N sudo reboot; done

    5. Установить на узле astra-ceph1 дополнительный компонент ceph-mgr (сервис мониторинга):

      ceph-deploy --username ceph-adm install --mgr astra-ceph1

    6. Создать новый кластер Ceph, указав в команде узлы кластера, на которых в дальнейшем будут инициализированы первоначальные мониторы:

      ceph-deploy --username ceph-adm new astra-ceph1 astra-ceph2 astra-ceph3
      После выполнения команды будут созданы конфигурационный файл ceph.conf и keyring-файл мониторов;

    7. Инициализировать мониторы на ранее указанных узлах кластера выполнив команду:

      ceph-deploy --username ceph-adm mon create-initial

    8. Создать mgr на узле astra-ceph1 используя команду:

      ceph-deploy --username ceph-adm mgr create astra-ceph1

    9. Создать 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

    10. Установить основные компоненты Ceph на административную рабочую станцию astra-ceph-admin используя команду:

      ceph-deploy --username ceph-adm install --cli astra-ceph-admin

    11. Скопировать конфигурационный файл и keyring-файл пользователя admin на административную рабочую станцию astra-ceph-admin используя команду:

      ceph-deploy admin astra-ceph-admin

    12. Если предполагается использовать вариант доступа RBD (блочный доступ к данным), то установить и активировать сервис Metadata Server Daemon - сервер метаданных на узле astra-ceph1:

      ceph-deploy --username ceph-adm install --mds astra-ceph1
      ceph-deploy --username ceph-adm mds create astra-ceph1

    13. Выйти из сессии пользователя ceph-adm:

      exit

  4. После завершения развертывания кластера 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:

  1. Установить и активировать сервис Metadata Server Daemon - сервер метаданных на узле astra-ceph1:

    ceph-deploy --username ceph-adm install --mds astra-ceph1
    ceph-deploy --username ceph-adm mds create astra-ceph1

  2. Создать в кластере пулы для данных cephfs_data и метаданных cephfs_metadata, указав для каждого пула размер плейсмент-группы (PG) равный 64:

    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/en/latest/rados/operations/placement-groups/#choosing-the-number-of-placement-groups.

  3. Создать файловую систему cephfs:

    sudo ceph fs new cephfs cephfs_metadata cephfs_data

  4. Для проверки доступа к файловой системе cephfs выполнить следующую последовательность действий на административной рабочей станции astra-ceph-admin:
    1. получить ключ администратора, для чего выполнить команду:

      cat ceph.client.admin.keyring | grep key
      и скопировать в буфер значение параметра key. Пример вывода после выполнения команды:

      key = AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==
    2. создать файл с ключом администратора (полученном на предыдущем шаге):

      echo "AQBBVX1gl2oJJBAAh40D+1Kphz/0QA/Gbkz1sw==" > admin.secret

    3. создать локальный каталог, в который будет монтироваться файловая система cephfs:

      sudo mkdir /mnt/cephfs

    4. смонтировать в созданный локальный каталог файловую систему 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

    5. проверить результат монтирования, выполнив команду:

      df -h | grep cephfs
      Пример вывода после выполнения команды:

      10.0.0.171:6789:/    15G            0   15G            0% /mnt/cephfs

      В приведенном примере размер пула данных равен 15 Гб (в кластере 3 диска по 16 Гб, фактор репликации 3 и 1 гб занят под служебные нужды). Таким образом, в наличии имеется 15 Гб свободного места для использования в кластере ceph. Это место делится поровну между всеми пулами. 

Для того. чтобы начать пользоваться файловой системой cephfs выполнить следующую последовательность действий:

  1. На административной рабочей станции astra-ceph-admin создать в cephfs подкаталог data1, который будем монтировать к другому серверу:

    sudo mkdir /mnt/cephfs/data1

  2. Создать пользователя 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

  3. На любом другом сервере локальной сети, поддерживающем работу с 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 --- ключ пользователя, полученный на предыдущем шаге.

  4. На сервере локальной сети проверить результат монтирования, выполнив команду:

    df -h | grep mnt
    Пример вывода после выполнения команды:

    10.0.0.171,10.0.0.172,10.0.0.173:/    15G     0   15G      0% /mnt

Таким образом, директория data1 на файловой системе cephfs подключена. Можно создать в ней тестовый файл, этот же файл должен стать доступен с любого другого клиента, к которому подключен этот же каталог.

  • No labels