Создание и настройка хранилищ 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
добавить следующие строки:CODEгде
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
добавить следующие строки:CODEзапустить в работу сетевой интерфейс командой:
sudo ifup eth0файл
/etc/hosts
привести к следующему виду:CODEзадать сетевое имя гостевой машине, выполнив команду:
sudo hostnamectl set-hostname astra-ceph1Сообщение об ошибке вида: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
добавить информацию о предпочитаемом сервере времени. Для этого в блоке с описанием серверов времени добавить строку вида:CODEгде 172.16.1.20 – IP-адрес фронтальной машины;
перезапустить службу
chronyd
:sudo systemctl restart chronydпроверить доступность сервера времени:
chronyc trackingпример вывода после выполнения команды:CODEгде значение параметра "
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 на панели инструментов окна гостевой машины нажать на кнопку [Показать виртуальное оборудование];
- в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;
- в открывшемся окне Добавление виртуального оборудования:
- закрыть окно гостевой машины
astra-ceph1
.
- в окне программы Virt-manager на панели инструментов окна гостевой машины нажать на кнопку [Показать виртуальное оборудование];
2.3. Создание и настройка гостевой машины astra-ceph2
- Создать гостевую машину
astra-ceph2
путем клонирования гостевой машиныastra-ceph1
: Запустить гостевую машину
astra-ceph2
.Для первичной настройки гостевой машиныastra-ceph2
можно подключиться к ней из хостовой ОС по SSH, используя IP-адрес и аутентификационные параметры гостевой машиныastra-ceph1
(исходная машинаastra-ceph1
должна быть выключена).- В гостевой машине
astra-ceph2
скорректировать настройки сетевого соединения:файл
/etc/network/interfaces
привести к следующему виду:CODEфайл
/etc/hosts
привести к следующему виду:CODEфайл
/etc/hostname
привести к следующему виду:CODEСообщение об ошибке вида:
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
привести к следующему виду:CODEфайл
/etc/hosts
привести к следующему виду:CODEфайл
/etc/hostname
привести к следующему виду:CODEСообщение об ошибке вида:
CODEможно игнорировать (перед тем как выполнить команду инструмент командной строки
sudo
обращается к файлу/etc/hosts
чтобы определить IP-адрес используя предыдущее имя гостевой машины).
- Выключить гостевую машину
astra-ceph3
.
2.5. Настройка фронтальной машины и развертывание Ceph-кластера
На фронтальной машине файл
/etc/hosts
привести к следующему виду:CODEУстановить пакет
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Пример вывода после выполнения команды:CODEСообщение вида:
CODEможно игнорировать (это предупреждение о возможной эксплуатации уязвимости). Чтобы исключить вывод этого предупреждения необходимо:
выполнить команду:
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.
Пример вывода после успешного выполнения команды:
CODEНастроить пул на работу с RBD:
sudo ceph osd pool application enable one rbdПример вывода после успешного выполнения команды:CODEСоздать Ceph-пользователя, который будет иметь доступ к пулу хранилищ. Данный пользователь будет также использоваться службой
libvirt
для доступа к образам дисков. Для того чтобы создать пользователя, например, с именемlibvirt
, необходимо выполнить команду:sudo ceph auth get-or-create client.libvirt mon 'profile rbd' osd 'profile rbd pool=one'Пример вывода после успешного выполнения команды:CODEПрефикс
client
означает, что команда выполняется в отношении логической сущности "пользователь".Получить копию ключа Ceph-пользователя для последующей настройки службы узла виртуализации:
sudo ceph auth get-key client.libvirt | tee client.libvirt.keyПример вывода после успешного выполнения команды:CODEЭкспортировать набор ключей Ceph-пользователя в файл
ceph.client.libvirt.keyring
:sudo ceph auth get client.libvirt -o ceph.client.libvirt.keyringПример вывода после успешного выполнения команды:CODE
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Пример вывода после успешного выполнения команды: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
и настроить шаблон ВМ для тиражирования (см. Настройка шаблона для тиражирования ВМ).
- Оглавление
- Описание тестовой среды
- 1. Настройка сервера времени на фронтальной машине
- 2. Развертывание Ceph-кластера
- 3. Дополнительная настройка Ceph-кластера для работы с ПК СВ
- 4. Настройка службы узла виртуализации для работы с Ceph-кластером
- 5. Создание (регистрация) хранилищ в веб-интерфейсе ПК СВ
- 6. Проверка работы хранилищ