Кластер серверов astra linux

Распределенное хранилище Ceph

Ceph – программное обеспечение для организации высокодоступного распределенного кластера хранения данных на серверном оборудовании общего назначения. В ПК СВ «Брест» Ceph может быть использован для предоставления доступа к создаваемым в нем блочным устройствам RBD.

Требования

  • Имеется 2N+1 узлов для развертывания Сeph
  • На узлах установлен пакет python-minimal
  • На серверах развернута ОС в соответствии с Установка ОС

Для более надежной работы кластера рекомендуется в дальнейшем добавление четвертого сервера с сервисом OSD для хранения данных.

При расчете продуктовых кластеров Ceph рекомендуется резервировать по 4 Gb ОЗУ на каждый сервис OSD .

Установка и настройка кластера Ceph с помощью ceph-deploy

Подготовка серверов ceph и серверов ПК СВ «Брест»

Синхронизация времени

На каждом сервере Ceph необходимо прописать в файл /etc/ntp.conf сервер для синхронизации времени:

Далее перезапустить и сделать автозапуск после перезагрузки службы ntp на каждом сервере Ceph командами:

sudo systemctl enable ntp sudo systemctl restart ntp

Разрешение имен

Для удобной работы с кластером Ceph необходимо чтобы все серверы инфраструктуры могли обращаться к узлам Ceph по доменным именам. В зависимости от типа используемого домена настройте разрешение имен:

Внести записи об узлах Ceph в DNS-сервисе FreeIPA, как указано в этом подразделе: Добавление записей в DNS

Создайте локальный файл со следующим содержимым:

Отредактировать локальные файлы на каждом узле Ceph как описано в разделе Разрешение имен

Информацию об узлах Ceph также потребуется аналогичным образом внести на всех остальных узлах домена, если это не сделано ранее.

Создание пользователя ceph-adm

На каждом сервере кластера Ceph, Front-end и узлах виртуализации добавить пользователя ceph-adm и разрешить ему Sudo без пароля следующими командами :

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

Если узел Ceph настраивается на Front-end , или узле виртуализации, выполнить команду:

sudo pdpl-user -i 127 ceph-adm

На сервере настроить беспарольный доступ по ssh на все серверы Ceph, Front-end и узлы виртуализации (команды выполнять от пользователя < local-admin >):

ssh-keygen ssh-copy-id ceph-adm@

Вариант использования циклов:

ssh-keygen for node_id in $(seq 1 ); do ssh-copy-id ceph-adm@ceph-$node_id; done for front_id in $(seq 1 ); do ssh-copy-id ceph-adm@front-$front_id; done for ceph_id in $(seq 1 ); do ssh-copy-id ceph-adm@node-$ceph_id; done

узлов Сeph c именами вида ceph-1, ceph-2, и т.д.;

Читайте также:  Linux настройка l2tp клиент

фронтальных машин с именами вида front-1, front-2, и т.д.;

узлов виртуализации c именами вида node-1, node-2, и т.д.;

Установка служб кластера Ceph на серверах ceph и серверах ПК СВ «Брест»

Установить пакет ceph-deploy на сервер командой:

sudo apt install ceph-deploy

Далее все команды с ceph-deploy выполнять строго из консоли сервера , находясь в домашнем каталоге администратора.

Необязательно разворачивать монитор (MON) на каждом узле кластера Ceph , но количество мониторов должно быть 2N+1.

Запустить команду для установки Ceph компонент на серверах Ceph :

ceph-deploy --username ceph-adm install --mon --osd  .

Запустить команду для установки на сервере ceph1 компоненты ceph-mgr :

ceph-deploy --username ceph-adm install --mgr

Запустить команду для создания нового кластера Ceph , при этом требуется указать в команде сервера кластера, на которых в дальнейшем будут инициализированы мониторы кластера:

ceph-deploy --username ceph-adm new  .

После выполнения команды будут созданы конфигурационный файл (по умолчанию ceph.conf ) и keyring-файл мониторов

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

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

Важно знать, что после инициализации мониторов на хостах нельзя менять сетевой адрес, к которому будет привязана служба монитора кластера Ceph . Кластер перестанет быть доступен и работоспособен. Сменить сетевой адрес можно удалив службу монитора и инициализовать ее заново с новыми настройками сети.

Выполнить команду для запуска компоненты mgr на сервере :

ceph-deploy --username ceph-adm mgr create

Запустить команду для перезагрузки серверов Ceph :

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

Запустить команды для создания служб OSD на блочных устройствах /dev/sdb серверов кластера Ceph

ceph-deploy --username ceph-adm osd create --data /dev/sdb ceph-deploy --username ceph-adm osd create --data /dev/sdb . ceph-deploy --username ceph-adm osd create --data /dev/sdb

Для каждой службы OSD рекомендуется предоставлять один физический диск для хранения данных.

Запустить команды для установки утилиты управления кластером Ceph :

ceph-deploy --username ceph-adm install --cli  . ceph-deploy --username ceph-adm install --cli  . ceph-deploy --username ceph-adm install --cli  .

Запустить команду для копирования конфигурационного файла и keyring-файла администратора на сервер :

ceph-deploy --username ceph-adm admin

Запустить команду для проверки кластера Ceph на сервере :

Вывод команды будет содержать блок информации о кластере, блок информации о запущенных сервисах и блок информации о пулах данных.

 cluster: id: 6d4e04dd-2514-463c-8d91-98b37db7912c health: HEALTH_OK services: mon: 3 daemons, quorum ceph1,ceph2,ceph3 mgr: ceph1(active) osd: 3 osds: 3 up, 3 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 bytes usage: 3164 MB used, 596 GB / 599 GB avail pgs: 

Запустить команду для отправки конфигурационных файлов на сервера ПК СВ «Брест» и сервера Ceph :

ceph-deploy --username ceph-adm config push  . ceph-deploy --username ceph-adm config push  . ceph-deploy --username ceph-adm config push  .

Проверка

Следующими командами можно получить информацию по работе служб мониторов на серверах кластера Ceph , команда запускается на сервере :

sudo ceph mon stat sudo ceph mon dump

Создание пула для организации и хранения данных

По формуле вычислить необходимое количество PGs для кластера Ceph : Total PGs = ((Total number of OSD * 100) / Max Replication Count) с округлением до ближайшей степени 2 в сторону увеличения . В случае для 3 узлов Ceph получится:

Читайте также:  Start exe on linux

(3 OSD * 100) / 3 = 100 и округляем до 128.

На сервере используйте следующие команды для создания пула с именем one и включаем возможность подключения к пулу по протоколу rbd :

sudo ceph osd pool create one 128 sudo ceph osd pool application enable one rbd

Будет создан пул one с уровнем репликации равным 3 (значение по-умолчанию).

Создание пользователя и ключей для доступа к пулу кластера Ceph

Создать пользователя кластера Ceph , который будет иметь доступ к пулу one . Данный пользователь будет также использоваться libvirt для доступа к образам дисков:

sudo ceph auth get-or-create client.libvirt mon 'allow rwx' osd 'allow rwx pool=one'

Далее необходимо получить копию ключа данного пользователя для его дальнейшей передачи на сервера ПК СВ «Брест»:

sudo ceph auth get-key client.libvirt | tee client.libvirt.key sudo ceph auth get client.libvirt -o ceph.client.libvirt.keyring

Установка ключей на серверы ПК СВ «Брест» для доступа к данным на кластере Ceph

Скопировать все файлы ключей на все серверы ( Front-end и узлы виртуализации) и перенести в нужные каталоги следующими командами:

scp ceph.client.libvirt.keyring ceph-adm@:/tmp scp client.libvirt.key ceph-adm@:/tmp ssh ceph-adm@ "sudo mv /tmp/ceph.client.libvirt.keyring /etc/ceph" ssh ceph-adm@ "sudo mv /tmp/client.libvirt.key /var/lib/one" ssh ceph-adm@ "sudo ln -s /var/lib/one/client.libvirt.key /root/client.libvirt.key"

Далее требуется сгенерировать секретный ключ для Ceph пользователя и скопировать его на сервера ПК СВ «Брест» в каталог /var/lib/one

Запомнить универсальный уникальный идентификатор (UUID) для дальнейшего использования, команды выполняются на сервере :

sudo apt install uuid-runtime UUID=`uuidgen` cat > secret.xml $UUID client.libvirt secret   EOF

Скопировать полученный ключ на каждый сервер облака ( Front-end и узлы виртуализации):

scp secret.xml ceph-adm@:/tmp ssh ceph-adm@ "sudo mv /tmp/secret.xml /var/lib/one" ssh ceph-adm@ "sudo ln -s /var/lib/one/secret.xml /root/secret.xml"

Установить секретный ключ libvirt и удалить файлы ключа на всех серверах облака (переменная $UUID должна быть определена с предыдущих шагов):

ssh ceph-adm@ "sudo virsh -c qemu:///system secret-define /root/secret.xml" BASE64=$(cat client.libvirt.key) ssh ceph-adm@ "sudo virsh -c qemu:///system secret-set-value --secret $UUID --base64 $BASE64" ssh ceph-adm@ "sudo rm /root/client.libvirt.key" ssh ceph-adm@ "sudo rm /var/lib/one/client.libvirt.key"

Проверка

Необходимо убедиться, что Ceph клиент имеет корректные настройки на серверах ПК СВ «Брест», выполнив команду для каждого сервера облака (результатом выполнения команды должен быть пустой вывод без ошибок):

ssh ceph-adm@ "sudo rbd ls -p one --id libvirt"

Установить пакет qemu-block-extra на все серверы облака , выполнив для каждого из них команду:

ssh ceph-adm@ "sudo apt install qemu-block-extra"

Для установки данного пакета в качестве репозитория необходимо использовать диск для разработчика ОС Astra Linux SE и соответствующее обновление безопасности.

Читайте также:  Узнать днс сервер linux

Подключение кластера Ceph в ПК СВ «Брест»

Создание хранилища system

Перейдите по адресу http://. , где front-1-hostname имя вашей фронтальной машины и нажмите кнопку Login

В меню слева развернуть вкладку Storage и выбрать пункт Datastores, далее перейти в настройки и нажать кнопку +

На следующей странице справа выбрать вариант настройки Advanced и внести конфигурацию хранилища:

NAME = ceph_system TM_MAD = ceph TYPE = SYSTEM_DS POOL_NAME = one CEPH_HOST = "  . " CEPH_USER = libvirt BRIDGE_LIST = "  .   . " CEPH_SECRET = "d86670c2-a7b3-4285-bbfd-9a8acce8cd24"

POOL_NAME — имя пула в кластере Ceph

CEPH_HOST — имена узлов мониторов

BRIDGE_LIST — имена узлов, которые получат доступ к хранилищу

CEPH_SECRET — UUID из файла secret.xml

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

Создание хранилища images

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

NAME = "cephds" DS_MAD = ceph TM_MAD = ceph DISK_TYPE = RBD POOL_NAME = one CEPH_HOST = "  . " CEPH_USER = libvirt BRIDGE_LIST = "  .   . " CEPH_SECRET = "d86670c2-a7b3-4285-bbfd-9a8acce8cd24"

Далее нажать кнопку Create

Проверка

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

Создание хранилищ из командной строки

Кроме создания хранилищ через веб интерфейс вы можете воспользоваться следующими командами из терминала на Front-end , предварительно сформировав файлы описаний system-ds.txt и images-ds.txt :

Создать системное хранилище ( CEPH_SECRET значение брать из файла secret.xml ):

NAME = ceph_system TM_MAD = ceph TYPE = SYSTEM_DS POOL_NAME = one CEPH_HOST = "  . " CEPH_USER = libvirt BRIDGE_LIST = "  .   . " CEPH_SECRET = "d86670c2-a7b3-4285-bbfd-9a8acce8cd24"
sudo onedatastore create system-ds.txt

Создать хранилище образов ( CEPH_SECRET значение брать из файла secret.xml ):

NAME = "cephds" DS_MAD = ceph TM_MAD = ceph DISK_TYPE = RBD POOL_NAME = one CEPH_HOST = "  . " CEPH_USER = libvirt BRIDGE_LIST = "  .   . " CEPH_SECRET = "d86670c2-a7b3-4285-bbfd-9a8acce8cd24" 
sudo onedatastore create system-ds.txt

Источник

Оцените статью
Adblock
detector