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/24
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
добавить следующие строки:auto eth0 iface eth0 inet static address 172.16.1.31 netmask 255.255.255.0 gateway 172.16.1.1
CODEзапустить в работу сетевой интерфейс командой:
sudo ifup eth0файл
/etc/hosts
привести к следующему виду:127.0.0.1 localhost 172.16.1.31 astra-ceph1
CODEзадать сетевое имя гостевой машине, выполнив команду:
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 prefer
CODEгде 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 : Normal
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 на панели инструментов окна гостевой машины нажать на кнопку [Показать виртуальное оборудование];
- в окне параметров гостевой машины нажать на кнопку [Добавить оборудование] в левом нижнем углу;
- в открывшемся окне Добавление виртуального оборудования:
в левом поле выбрать пункт Хранилище;
в правом поле установить флаг Создать образ диска для виртуальной машины;
- задать размер диска равным 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.1
CODEфайл
/etc/hosts
привести к следующему виду:127.0.0.1 localhost 172.16.1.32 astra-ceph2
CODEфайл
/etc/hostname
привести к следующему виду:astra-ceph2
CODEСообщение об ошибке вида:
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.1
CODEфайл
/etc/hosts
привести к следующему виду:127.0.0.1 localhost 172.16.1.33 astra-ceph3
CODEфайл
/etc/hostname
привести к следующему виду:astra-ceph3
CODEСообщение об ошибке вида:
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-ceph3
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Пример вывода после выполнения команды: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+clean
CODEСообщение вида:
mons are allowing insecure global_id reclaim
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.
Пример вывода после успешного выполнения команды:
pool 'one' created
CODEНастроить пул на работу с 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.libvirt
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Пример вывода после успешного выполнения команды:Секрет 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
и настроить шаблон ВМ для тиражирования (см. Настройка шаблона для тиражирования ВМ).