Download PDF
Download page Создание и настройка хранилищ Ceph для тестового стенда.
Создание и настройка хранилищ Ceph для тестового стенда
Оглавление
Описание тестовой среды
В данном примере в качестве тестовой среды выступает система виртуализации QEMU/KVM в ОС СН Astra Linux Special Edition 1.7.2.
При этом описываемые действия по созданию и настройке гостевых машин выполняются в программе Virt-manager версии 2.2.1-3.
Для организации Ceph-кластера будут развернуты три гостевые машины со следующими параметрами:
- количество процессоров: 1;
- размер памяти (ОЗУ): 2 ГБ;
- объем диска для размещения файлов ОС Astra Linux: 12 ГБ;
- объем диска для размещения данных хранилища: 24 ГБ.
В качестве административной рабочей станции будет выступать гостевая машина виртуализации, на которой установлены программные компоненты ПК СВ (далее по тексту – фронтальная машина).
При этом вычислительные ресурсы тестового стенда должны обеспечить одновременное функционирование фронтальной машины и трех гостевых машин Ceph-кластера.
В этом примере в качестве установочного носителя используется файл образа технологического установочного диска 1.7.2-11.08.2022_15.28.iso (установочный диск Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) с интегрированным обновлением БЮЛЛЕТЕНЬ № 2022-0819SE17 (оперативное обновление 1.7.2)).
1. Настройка сервера времени на фронтальной машине
Для корректной работы Ceph-кластера требуется, чтобы на всех узлах кластера было одинаковое время. Для обеспечения синхронности показаний времени будет использоваться служба chronyd (пакет chrony). В качестве сервера времени для узлов кластера будет выступать фронтальная машина.
Для настройки службы chronyd на работу в режиме сервера времени в ОС фронтальной машины необходимо выполнить действия, описанные ниже.
Установить пакет
chronyкомандой:sudo apt install chronyВ конфигурационный файл
/etc/chrony/chrony.confдобавить следующие строки:local stratum 8 manual allow 172.16.1/24CODEгде
172.16.1/24– диапазон IP-адресов (в формате директивchrony), установленный при создании виртуальной сети в Virt-Manager (см. ПК СВ «Брест» в пределах одного сервера (сервисный режим)).Перезапустить службу
chronyd:sudo systemctl restart chronyd
2. Развертывание Ceph-кластера
2.1. Общие сведения
В данном примере будет развернут Ceph-кластер из 3 узлов:
| Сетевое имя | IP-адрес |
|---|---|
| astra-ceph1 | 172.16.1.31 |
| astra-ceph2 | 172.16.1.32 |
| astra-ceph3 | 172.16.1.33 |
Значения IP-адресов узлов кластера выбраны исходя из диапазона, установленного при создании виртуальной сети в Virt-Manager (172.16.1.0 /24) – см. ПК СВ «Брест» в пределах одного сервера (сервисный режим).
При настройке на узлах кластера будут развернуты:
- служба монитора (MON);
- служба хранилища данных (OSD).
Такая конфигурация предназначена только для ознакомления и тестирования Ceph. При развертывании Ceph-кластера на объекте эксплуатации не рекомендуется размещать службы монитора и OSD на одном узле кластера.
В составе каждого из узлов кластера будут два жестких диска:
/dev/vdaдля размещения ОС Astra Linux;/dev/vdbдля размещения службы OSD.
Кроме того, на узле astra-ceph1 будет запущена служба ceph-mgr (служба диспетчера Ceph).
Развертывание Ceph-кластера будет выполняется на фронтальной машине от имени пользователя с ролью администратора Ceph-кластера и с помощью инструмента командной строки ceph-deploy.
Недопустимо использование инструмента командной строки ceph-deploy от имени суперпользователя (с sudo или же от имени пользователя root).
2.2. Создание и настройка гостевой машины astra-ceph1
- Создать гостевую машину
astra-ceph1. Действия по созданию гостевой машины аналогичны действиям, описанным в статье Создание гостевой машины (за исключением пункта установки дополнительного оборудования — канал SPICE добавлять не нужно). При этом необходимо установить следующие параметры гостевой машины:- количество процессоров: 1;
- размер памяти (ОЗУ): 2 ГБ;
объем диска: 12 ГБ.
Диск для размещения службы OSD будет добавлен позже.
В гостевой машине
astra-ceph1установить операционную систему специального назначения "Astra Linux Special Edition" РУСБ.10015-01. При этом следует учитывать следующие особенности установки:- на странице Установка базовой системы выбрать для установки ядро
linux-5.15-generic; - на странице Выбор программного обеспечения выбрать пункт Средства удаленного подключения SSH;
- на странице Дополнительные настройки ОС выбрать Базовый уровень защищенности "Орел";
- на странице Дополнительные настройки ОС выбрать пункт Запрет автонастройки сети.
- на странице Установка базовой системы выбрать для установки ядро
- Настроить сетевое соединение:
в файл
/etc/network/interfacesдобавить следующие строки:auto eth0 iface eth0 inet static address 172.16.1.31 netmask 255.255.255.0 gateway 172.16.1.1CODEзапустить в работу сетевой интерфейс командой:
sudo ifup eth0файл
/etc/hostsпривести к следующему виду:127.0.0.1 localhost 172.16.1.31 astra-ceph1CODEзадать сетевое имя гостевой машине, выполнив команду:
sudo hostnamectl set-hostname astra-ceph1Сообщение об ошибке вида:sudo: unable to resolve host <предыдущее_имя_гостевой_машины>: В соединении отказаноCODEможно игнорировать (перед тем как выполнить команду инструмент командной строки
sudoобращается к файлу/etc/hostsчтобы определить IP-адрес используя предыдущее имя гостевой машины).добавить в автозапуск и запустить службу
sshкомандами:sudo systemctl enable ssh
sudo systemctl start sshДалее можно подключиться к гостевой машинеastra-ceph1из хостовой ОС по SSH.
- Подключить образ установочного носителя к гостевой машине
astra-ceph1(см. Подключение образа установочного носителя к гостевой машине). - Установить и настроить службу времени
chronyd:установить пакет
chronyкомандой:sudo apt install chrony- в конфигурационном файле
/etc/chrony/chrony.confзакомментировать (в начале строки установить символ "#") строки с описанием кластера серверов точного времениpool.ntp.org; в конфигурационный файл
/etc/chrony/chrony.confдобавить информацию о предпочитаемом сервере времени. Для этого в блоке с описанием серверов времени добавить строку вида:server 172.16.1.20 preferCODEгде 172.16.1.20 – IP-адрес фронтальной машины;
перезапустить службу
chronyd:sudo systemctl restart chronydпроверить доступность сервера времени:
chronyc trackingпример вывода после выполнения команды:Reference ID : 7F7F0101 () Stratum : 8 Ref time (UTC) : Thu Jul 20 05:37:43 2023 System time : 0.000000000 seconds fast of NTP time Last offset : +0.000000000 seconds RMS offset : 0.000000000 seconds Frequency : 0.000 ppm slow Residual freq : +0.000 ppm Skew : 0.000 ppm Root delay : 0.000000000 seconds Root dispersion : 0.000000000 seconds Update interval : 0.0 seconds Leap status : NormalCODEгде значение параметра "
Leap status" может принимать следующие значения:Normal– в случае нормальной корректировки времени;Not synchronised– в случае если компьютер в данный момент времени не синхронизирован.
- Создать и настроить учетную запись пользователя с ролью администратора Ceph-кластера (например,
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
- Выключить гостевую машину
astra-ceph1. - Подключить к гостевой машине
astra-ceph1диск для размещения службы OSD:- в окне программы Virt-manager на панели инструментов окна гостевой машины нажать на кнопку [Показать виртуальное оборудование];

- в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;

- в открывшемся окне Добавление виртуального оборудования:
в левом поле выбрать пункт Хранилище;
в правом поле установить флаг Создать образ диска для виртуальной машины;
- задать размер диска равным 24 ГБ;
нажать на кнопку [Готово];
- закрыть окно гостевой машины
astra-ceph1.
- в окне программы Virt-manager на панели инструментов окна гостевой машины нажать на кнопку [Показать виртуальное оборудование];
2.3. Создание и настройка гостевой машины astra-ceph2
- Создать гостевую машину
astra-ceph2путем клонирования гостевой машиныastra-ceph1:- в окне программы
Virt-managerна строке с гостевой машинойastra-ceph1нажать правую кнопку мыши и в открывшемся контекстном меню выбрать пункт Клонировать;
- в открывшемся окне Клонирование виртуальной машины:
- задать наименование гостевой машины (
astra-ceph2); - нажать на кнопку [Клонировать].
Дождаться завершения процесса клонирования.
- задать наименование гостевой машины (
- в окне программы
Запустить гостевую машину
astra-ceph2.Для первичной настройки гостевой машиныastra-ceph2можно подключиться к ней из хостовой ОС по SSH, используя IP-адрес и аутентификационные параметры гостевой машиныastra-ceph1(исходная машинаastra-ceph1должна быть выключена).- В гостевой машине
astra-ceph2скорректировать настройки сетевого соединения:файл
/etc/network/interfacesпривести к следующему виду:auto eth0 iface eth0 inet static address 172.16.1.32 netmask 255.255.255.0 gateway 172.16.1.1CODEфайл
/etc/hostsпривести к следующему виду:127.0.0.1 localhost 172.16.1.32 astra-ceph2CODEфайл
/etc/hostnameпривести к следующему виду:astra-ceph2CODEСообщение об ошибке вида:
sudo: unable to resolve host astra-ceph1: Временный сбой в разрешении именCODEможно игнорировать (перед тем как выполнить команду инструмент командной строки
sudoобращается к файлу/etc/hostsчтобы определить IP-адрес используя предыдущее имя гостевой машины).
- Выключить гостевую машину
astra-ceph2.
2.4. Создание и настройка гостевой машины astra-ceph3
- Создать гостевую машину
astra-ceph3путем клонирования гостевой машиныastra-ceph1.Действия по созданию гостевой машиныastra-ceph3аналогичны действиям, описанным в разделе Создание и настройка гостевой машины astra-ceph2. Запустить гостевую машину
astra-ceph3.Для первичной настройки гостевой машиныastra-ceph3можно подключиться к ней из хостовой ОС по SSH, используя IP-адрес и аутентификационные параметры гостевой машиныastra-ceph1(исходная машинаastra-ceph1должна быть выключена).- В гостевой машине
astra-ceph3скорректировать настройки сетевого соединения:файл
/etc/network/interfacesпривести к следующему виду:auto eth0 iface eth0 inet static address 172.16.1.33 netmask 255.255.255.0 gateway 172.16.1.1CODEфайл
/etc/hostsпривести к следующему виду:127.0.0.1 localhost 172.16.1.33 astra-ceph3CODEфайл
/etc/hostnameпривести к следующему виду:astra-ceph3CODEСообщение об ошибке вида:
sudo: unable to resolve host astra-ceph1: Временный сбой в разрешении именCODEможно игнорировать (перед тем как выполнить команду инструмент командной строки
sudoобращается к файлу/etc/hostsчтобы определить IP-адрес используя предыдущее имя гостевой машины).
- Выключить гостевую машину
astra-ceph3.
2.5. Настройка фронтальной машины и развертывание Ceph-кластера
На фронтальной машине файл
/etc/hostsпривести к следующему виду:127.0.0.1 localhost 172.16.1.20 <имя_фронтальной_машины> 172.16.1.31 astra-ceph1 172.16.1.32 astra-ceph2 172.16.1.33 astra-ceph3CODEУстановить пакет
ceph-deployкомандой:sudo apt install ceph-deploy- Создать и настроить учетную запись пользователя
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 необходимо задать уровень целостности равный 127:
sudo pdpl-user -i 127 ceph-adm
- Включить гостевые машины
astra-ceph1, astra-ceph2иastra-ceph3. Удостовериться в том, что для всех гостевых машин подключен установочный диск. Войти в ОС фронтальной машины под учетной записью
ceph-adm.Недопустимо использование инструмента командной строки
ceph-deployот имени суперпользователя (сsudoили же от имени пользователяroot).- На фронтальной машине настроить беспарольный ssh-доступ:
сгенерировать ssh-ключи (публичный и приватный) командой:
ssh-keygenскопировать публичный ключ на узлы кластера командой:
for N in $(seq 1 3); do ssh-copy-id ceph-adm@astra-ceph$N; doneВ ходе выполнения команды для каждого узла кластера необходимо ответить "yes" ("Да") и указать пароль пользователяceph-adm;скопировать приватный ключ на саму фронтальную машину командой:
ssh-copy-id ceph-adm@<имя_фронтальной_машины>В ходе выполнения команды необходимо ответить "yes" ("Да") и указать пароль пользователяceph-adm.
Установить базовые компоненты 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Установить дополнительный компонент
ceph-mgr(служба диспетчера Ceph) на узлеastra-ceph1. Для этого на фронтальной машине выполнить команду:ceph-deploy --username ceph-adm install --mgr astra-ceph1Создать новый кластер Ceph, указав в команде узлы кластера, на которых в дальнейшем будут инициализированы первоначальные мониторы:
ceph-deploy --username ceph-adm new astra-ceph1 astra-ceph2 astra-ceph3После выполнения команды в домашнем каталоге пользователяceph-admбудут созданы конфигурационный файлceph.confи keyring-файл мониторов.Инициализировать мониторы на ранее указанных узлах кластера выполнив команду:
ceph-deploy --username ceph-adm mon create-initialЗарегистрировать службу диспетчера Ceph на узле
astra-ceph1. Для этого на фронтальной машине выполнить команду:ceph-deploy --username ceph-adm mgr create astra-ceph1Создать OSD на дисках
/dev/vdbузлов кластера и добавить их в кластер, выполнив последовательно команды:ceph-deploy --username ceph-adm osd create --data /dev/vdb astra-ceph1
ceph-deploy --username ceph-adm osd create --data /dev/vdb astra-ceph2
ceph-deploy --username ceph-adm osd create --data /dev/vdb astra-ceph3Установить клиентские инструментальные средства Ceph на фронтальную машину:
ceph-deploy --username ceph-adm install --cli <имя_фронтальной_машины>Указать, что в качестве административной рабочей станции будет выступать фронтальная машина:
ceph-deploy admin <имя_фронтальной_машины>Проверить состояние Ceph-кластера командой:
sudo ceph -sПример вывода после выполнения команды:cluster: id: 8ecf49d8-b926-4096-8429-3e39502a6dca health: HEALTH_WARN mons are allowing insecure global_id reclaim services: mon: 3 daemons, quorum astra-ceph1,astra-ceph2,astra-ceph3 (age 24m) mgr: astra-ceph1(active, since 19m) osd: 3 osds: 3 up (since 16m), 3 in (since 16m) data: pools: 1 pools, 1 pgs objects: 0 objects, 0 B usage: 15 MiB used, 72 GiB / 72 GiB avail pgs: 1 active+cleanCODEСообщение вида:
mons are allowing insecure global_id reclaimCODEможно игнорировать (это предупреждение о возможной эксплуатации уязвимости). Чтобы исключить вывод этого предупреждения необходимо:
выполнить команду:
sudo ceph config set mon auth_allow_insecure_global_id_reclaim falseперезагрузить службу Ceph командой:
sudo systemctl restart ceph.target
3. Дополнительная настройка Ceph-кластера для работы с ПК СВ
Дополнительно на фронтальной машине от имени пользователя ceph-adm необходимо выполнить действия, описанные ниже.
Создать пул для хранилищ, указав наименование пула
one:sudo ceph osd pool create one 128где 128 – количество групп в пуле, которое определяется по следующей формуле: ((Общее количество OSD * 100) / Уровень репликации) с округлением до ближайшей степени 2 в сторону увеличения.В описываемом примере:
(3 OSD * 100) / 3 = 100 (округляется до 128)
Таким образом, количество групп в пуле должно быть равным 128.
Пример вывода после успешного выполнения команды:
pool 'one' createdCODEНастроить пул на работу с RBD:
sudo ceph osd pool application enable one rbdПример вывода после успешного выполнения команды:enabled application 'rbd' on pool 'one'CODEСоздать Ceph-пользователя, который будет иметь доступ к пулу хранилищ. Данный пользователь будет также использоваться службой
libvirtдля доступа к образам дисков. Для того чтобы создать пользователя, например, с именемlibvirt, необходимо выполнить команду:sudo ceph auth get-or-create client.libvirt mon 'profile rbd' osd 'profile rbd pool=one'Пример вывода после успешного выполнения команды:[client.libvirt] key = AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==CODEПрефикс
clientозначает, что команда выполняется в отношении логической сущности "пользователь".Получить копию ключа Ceph-пользователя для последующей настройки службы узла виртуализации:
sudo ceph auth get-key client.libvirt | tee client.libvirt.keyПример вывода после успешного выполнения команды:AQAS8hJkyaa9FxAAnRqI2RTD1nqmOcJLxPRWNg==CODEЭкспортировать набор ключей Ceph-пользователя в файл
ceph.client.libvirt.keyring:sudo ceph auth get client.libvirt -o ceph.client.libvirt.keyringПример вывода после успешного выполнения команды:exported keyring for client.libvirtCODE
4. Настройка службы узла виртуализации для работы с Ceph-кластером
На фронтальной машине от имени пользователя ceph-adm необходимо выполнить действия, описанные ниже.
Cкопировать набор ключей Ceph-пользователя в каталог
/etc/ceph:sudo cp ceph.client.libvirt.keyring /etc/ceph/Cкопировать ключ Ceph-пользователя в каталог
/var/lib/one:sudo cp client.libvirt.key /var/lib/one/Cгенерировать универсальный уникальный идентификатор (UUID) и сохранить его в файл
secret.xml:UUID=$(uuidgen)
cat > secret.xml <<EOF
<secret ephemeral='no' private='no'>
<uuid>$UUID</uuid>
<usage type='ceph'>
<name>client.libvirt secret</name>
</usage>
</secret>
EOFCкопировать файл
secret.xmlв каталог/var/lib/one:sudo cp secret.xml /var/lib/one/Задать секретный ключ
libvirt, используя файлsecret.xml:sudo virsh -c qemu:///system secret-define /var/lib/one/secret.xmlПример вывода после успешного выполнения команды:Секрет c84b8321-6d49-4b43-8d1b-0efc1686edc4 созданCODEСвязать секретный ключ
libvirtи ключ Ceph-пользователя:sudo virsh -c qemu:///system secret-set-value --secret $UUID --file /var/lib/one/client.libvirt.keyПример вывода после успешного выполнения команды:Значение установленоCODEУбедиться в том, что Ceph-пользователь (с наименованием
libvirt) имеет корректные настройки, выполнив команду:sudo rbd ls -p one --id libvirtРезультатом выполнения команды должен быть пустой вывод без ошибок.
5. Создание (регистрация) хранилищ в веб-интерфейсе ПК СВ
5.1. Создание системного хранилища
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- в поле Название задать наименование хранилища;
- в выпадающем списке Тип хранилища выбрать значение Ceph;
- установить флаг Система.
- Прокрутить страницу Создать хранилище ниже, затем:
- в поле Список мостов на узле указать сетевое имя фронтальной машины (на которой также запущена служба узла виртуализации);
- в поле Пул Ceph для хранения образов ввести значение one;
- в поле Пользователь Ceph ввести значение libvirt;
- в поле Узел Ceph через пробел перечислить узлы кластера Ceph;
в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID).
Значение UUID можно скопировать из файла
/var/lib/one/secret.xml.

- На странице Создать хранилище нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища отобразить актуальный размер.
5.2. Создание хранилища образов
- В веб-интерфейсе ПК СВ в меню слева выбрать пункт меню Хранилище — Хранилища и на открывшейся странице Хранилища нажать на кнопку [+], а затем в открывшемся меню выбрать пункт Создать.
- На открывшейся странице Создать хранилище:
- в поле Название задать наименование хранилища;
- в выпадающем списке Тип хранилища выбрать значение Ceph;
- установить флаг Образы.
- Прокрутить страницу Создать хранилище ниже, затем:
- в поле Список мостов на узле указать сетевое имя фронтальной машины (на которой также запущена служба узла виртуализации);
- в поле Пул Ceph для хранения образов ввести значение one;
- в поле Пользователь Ceph ввести значение libvirt;
- в поле Узел Ceph через пробел перечислить узлы кластера Ceph;
в поле Ceph секрет ввести значение универсального уникального идентификатора (UUID).
Значение UUID можно скопировать из файла
/var/lib/one/secret.xml.

- На странице Создать хранилище нажать на кнопку [Создать].
- Дождаться когда на странице Хранилища для созданного хранилища отобразить актуальный размер.
6. Проверка работы хранилищ
Для проверки работы созданных хранилищ можно выполнить действия по развертыванию ВМ. Для этого:
- выполнить загрузку образа установочного носителя в хранилище образов – см. Загрузка установочного носителя в хранилище;
- создать образ диска виртуальной машины в хранилище образов – см. Создание диска ВМ (пустого) в хранилище;
- подготовить предварительный шаблон ВМ и выполнить установку ОС – см. Настройка шаблона для тиражирования ВМ;
- при необходимости в ОС виртуальной машины можно подключить интернет-репозитории (см. Настройка репозиториев в ВМ), установить пакет
one-contextи настроить шаблон ВМ для тиражирования (см. Настройка шаблона для тиражирования ВМ).