Подключение хранилища данных iSCSI на базе TROK#
TROK поддерживает установку следующих компонентов:
Controller— центральный контроллер для управления кластером;Worker— системная утилита для управления хранилищем;WEBUI— веб-интерфейс для управления TROK;Harbor— компонент, необходимый для обеспечения возможности предоставления ресурсов по протоколам NFS, iSCSI или SMB.
Есть несколько вариантов установки:
Controllerс несколькимиWorker- полноценный кластер;comdinedузел - совмещениеControllerиWorkerна одной машине.
Режимы установки:
консольный ( поддерживаются ключи установки, а так же есть интерактивный режим);
GUI установщик;
пакетный режим установки - выбор конкретных пакетов и их ручная установка;
ansible.
Компонент |
Контроллер |
Клиент (CLI/GUI) |
Worker (с хранилищем) |
Disklessworker |
|---|---|---|---|---|
CPU RAM Дисковое пространство Примечания |
1 чип с 4 ядрами и более. Частота: от 2 ГГц | 1 ядро | 1 чип с 4 ядрами и более Частота: от 2 ГГц Минимальный объем: 8 ГБ. Рекомендуемый объем: 64 ГБ и более. Тип: DDR4, DDR5, ECC (защита от сбоев) | 512 МБ | Минимальный объем: 8 ГБРекомендуемый объем: 64 ГБ и более. Тип: DDR4, DDR5, ECC (защита от сбоев) Минимум 2 накопителя: Дисковое пространство для операционной системы и программного обеспечения емкостью 128 ГБ и более (SAS/SATA HDD/SSD); Дисковое пространство для хранения данных TROK: 1 накопитель (и более) с емкостью не менее 128 ГБ (SAS/SATA HDD) | Накопитель для операционной системы и программного обеспечения емкостью 128 ГБ и более (SAS/SATA HDD/SSD) | 2 накопителя: Дисковое пространство для операционной системы и программного обеспечения емкостью 128 ГБ и более (SAS/SATA HDD/SSD); Дисковое пространство для хранения данных TROK (серверы хранения данных): 1 накопитель (и более) с емкостью не менее 1 ТБ (SAS/SATA HDD) 2 сетевых порта с пропускной способностью 10 Гбит/с | Только для управления | 2 сетевых порта с пропускной способностью 10 Гбит/с |
1 ядро и более от 1 ГБ Накопитель для операционной системы и программного обеспечения емкостью 128 ГБ и более (SAS/SATA HDD/SSD) Используется для кворума или как initiator NVMe-oF |
||
Для проверки подключения и настройки хранилища по iSCSI предстпален вариантом установки comdined узла со следующими характеристиками:
CPU - 6 ядер
RAM - 8 GB
диски:
один диск на 50GB под ОС;
два диска по 200GB под хранилища;
один сетевой интерфейс.
Какой бы тип установки не был выбран, финальная настройка будет одинакова для всех случаев.
Ручная настройка#
Для ручной установки хранилища данных будут использованы терминал и веб-интерфейс:
Для подготовки ВМ необходимо использовать версию ОС СН 1.8.5.46. В ходе установки необходимо выбрать уровень защищенности операционной системы «Орел».
Предупреждение
Необходимо использовать версию ядра ОС СН linux-6.1-generic.
После установки ОС необходимо подготовить репозитории.
Предупреждение
Для установки программного обеспечения TROK рекомендуется использовать операционные системы, настроенные на работу с репозиториями ветки «frozen» либо с репозиториями, размещенными на установочном дистрибутиве Astra Linux Special Edition.
Например для версии 1.8.5.46 будет выглядеть следующим образом:
#deb cdrom:[OS Astra Linux 1.8.5.46 1.8_x86-64 DVD ]/ 1.8_x86-64 contrib main non-free non-free-firmware
#deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free non-free-firmware
#deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/1.8.5/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/1.8.5/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
Примонтировать установочный образ TROK в систему, убедиться, что уже установлена библиотека
libyaml-cpp:
apt-cache search libyaml-cpp
Предупреждение
Для ОС СН 1.8.5.46 должна быть 0.7 версиябиблиотеки,если версия отличается, необходимо ее актуалитзировать командой:
sudo apt install libyaml-cpp0.7
ISO образ подключен напрямую к ВМ, необходимо примонтировать его к созданной директории и перейти в папку со скриптами установки с помощью команд:
sudo mkdir /mnt/trok_installer
sudo mount -o loop /dev/sr2 /mnt/trok_installer/
cd /mnt/trok_installer/installer
locadmin@trok-combined:/mnt/trok_installer/installer$ ls
config.yaml trok-installer trok-installer-gui
убедиться в наличии конфигурационного файла установки, а так же двух скриптов на разный режим установки.
Для установки с использованием командной строки в интерактивном режимевыполнить команду:
sudo ./trok-installer
Пример вывода выполнения команды:
В процессе установки необходимо выбрать:
для типа установки вариант 3 (
Combined);для дополнительных компонентов вариатнты 1,2 (
Harbor,WebUI).
Предупреждение
После запуска процесса установки могут появиться вопросы об установке уже имеющихся пакетов, на эти вопросы необходимо дать согласие.
Установка может остановиться и не реагировать на предложенные ключи на данном моменте:
После успешной установки необходимо проверить что запущены все необходимые службы командой:
sudo systemctl status trok-auth.service trok-controller.service trok-cp-endpoint.service trok-worker.service
Кроме того, необходимо проверить, что установлены drbd пакеты:
sudo apt list --installed | grep drbd
Пример вывода после выполнения команды:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
drbd-6.1.158-1-generic/stable,now 9.2.15-3 amd64 [установлен]
drbd-reactor/stable,now 1.4.1-1 amd64 [установлен, автоматически]
drbd-ueficert/stable,now 9.2.11 all [установлен]
drbd-utils/stable,now 9.28.0-1 amd64 [установлен]
Примечание
Если окажется так, что отутствует пакет drbd-ueficert, его можно доставить командой:
sudo apt install drbd-ueficert
Проверить наличие дисков, которые будут использоваться для хранилищ и создать физические тома и группы томов командами:
sudo lsblk
sudo pvcreate /dev/sdb
sudo vgcreate storage_brest /dev/sdb
sudo pvcreate /dev/sdc
sudo vgcreate storage_brest2 /dev/sdc
где sdb и sdc — предполагаемые тома.
Проверить состояние служб и пакетов командами:
sudo dpkg -s trok-harbor-meta
sudo systemctl status targetclid.service
sudo systemctl status drbd-reactor
Перейти в панель управления веб-интерфейсом, проверить на каком порту работает
nginxкомандой:
sudo ss -tulpn | grep nginx
Пример вывода команды:
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=3238,fd=5),("nginx",pid=3236,fd=5),("nginx",pid=3235,fd=5),("nginx",pid=3234,fd=5),("nginx",pid=3233,fd=5),("nginx",pid=3232,fd=5),("nginx",pid=3106,fd=5))
Далее необходимо:
перейти по IP-адресу ВМ в браузере;
b. пройти авторизацию: .. note:: Логинпароль по умолчанию - adminadmin (так же система предложит сменить пароль). c. после успешной авторизации откроется главная страница:
добавить узлы:
перейти в ,
указать параметры узла: IP-адрес, Имя узла, *порт*(если порт не менялся при установке, то оставить значение по умолчанию),
нажать на кнопку Добавить +, через некоторое время после добавления значение состояния узла должно перейти в Online.
добавить пулы хранения:
перейти в ,
указать параметры пула: Имя пула (должно быть уникальное), Узел (выбрать узел на котором расположена группа томов), Группа томов (группа, созданная на предыдущих шагах), Тип томов,
нажать на кнопку Добавить +, после чего появится сообщение об успешном добвалении пула, кроме того новый пул появится в таблице ;
добавить шаблон ресурсов:
перейти в ,
указать параметры шаблона ресурсов,
нажать на кнопку Добавить +;
добавить шаблон томов:
перейти в ,
указать параметры шаблона ресурсов,
нажать на кнопку Добавить +, после чего появится сообщение об успешном создании шаблона тома, кроме того новый шаблон тома появится в таблице ;
добавить ресурсы:
перейти в ,
указать параметры ресурсов (рекомендуется отключить вариант Автоматический выбор узла хранения),
нажать на кнопку Добавить +, после чего новый шаблон тома появится в таблице ;
Примечание
если только один combined узел, необходимо принудительно перевести ресурс из состояния Inconsistent в UpToDate командами:
sudo drbdadm status
sudo drbdadm primary storage-brest2 --force
Создать и отредактировать файл конфигурации
DRBD Reactor(т.к. для данного теста используеется два LUN на двух разных ресурсах, создается два конфигурационных файла):
sudo nano /etc/drbd-reactor.d/iscsi-trokcombine.toml
[[promoter]]
[promoter.resources]
[promoter.resources.storage-brest]
on-drbd-demote-failure = "reboot-immediate"
runner = "systemd"
start = [
"ocf:heartbeat:IPaddr2 service_ip0 cidr_netmask=24 ip=10.177.126.230",
"ocf:heartbeat:iSCSITarget target allowed_initiators='' incoming_password=12345678 incoming_username=astra iqn=iqn.2025-12.ru.astra:storage-brest portals=10.177.126.230:3260",
"ocf:heartbeat:iSCSILogicalUnit lu1 lun=1 path=/dev/drbd/by-res/storage-brest/0 product_id='TROK iSCSI' scsi_sn=7509fab1 target_iqn=iqn.2025-12.ru.astra:storage-brest"
]
stop-services-on-exit = true
target-as = "Requires"
sudo nano /etc/drbd-reactor.d/iscsi-trokcombine2.toml
[[promoter]]
[promoter.resources]
[promoter.resources.storage-brest2]
on-drbd-demote-failure = "reboot-immediate"
runner = "systemd"
start = [
"ocf:heartbeat:IPaddr2 service_ip0 cidr_netmask=24 ip=10.177.126.231",
"ocf:heartbeat:iSCSITarget target allowed_initiators='' incoming_password=12345678 incoming_username=astra iqn=iqn.2025-12.ru.astra:storage-brest2 portals=10.177.126.231:3260",
"ocf:heartbeat:iSCSILogicalUnit lu1 lun=1 path=/dev/drbd/by-res/storage-brest2/0 product_id='TROK iSCSI' scsi_sn=7509fab2 target_iqn=iqn.2025-12.ru.astra:storage-brest2"
]
stop-services-on-exit = true
target-as = "Requires"
Проверить состояние конфигурационного файла
DRBD Reactorкомандой:
sudo drbd-reactorctl status
Предупреждение
Если в выводе команды статусы ресурсов не переводятся в состояние active (рядомс записью ресурса не появляется отметка зеленым цветом), необходимо выполнить команду:
sudo drbdadm secondary <ресурс>
где <ресурс> — название не активного ресурса.
Выполнить настройку на инициаторах (в данном примере на стенде ПК СВ)командами:
sudo iscsiadm -m discovery -t st -p 10.177.126.230
echo "InitiatorName=iqn.2026-02.ru.astra:storage-brest" > /etc/iscsi/initiatorname.iscsi
sudo nano /etc/iscsi/iscsid.conf - явки пароли
sudo iscsiadm -m discovery -t sendtargets -p 10.177.126.230
sudo iscsiadm -m node --loginsudo iscsiadm -m discovery -t st -p 10.177.126.231
echo "InitiatorName=iqn.2026-02.ru.astra:storage-brest2" > /etc/iscsi/initiatorname.iscsi
sudo nano /etc/iscsi/iscsid.conf - явки пароли
sudo iscsiadm -m discovery -t sendtargets -p 10.177.126.231
sudo iscsiadm -m node --login
Уже подключенные по iSCSI диски использовать для добавления хранилища BREST_LVM в ПК СВ:
NAME="brest-lvm-system"
TYPE="SYSTEM_DS"
TM_MAD="brest_lvm"
DRIVER="qcow2"
NAME="brest-lvm-images"
TYPE="IMAGE_DS"
DISK_TYPE="BLOCK"
DS_MAD="brest_lvm"
TM_MAD="brest_lvm"
DRIVER="qcow2"
например --- brest_lvm хранилищам были назначены - 100 и 101 ID
организовать блокировки:sudo ls /dev/disk/by-id/ - найти подключенные iscsi диски
sudo vgcreate --shared --lock-type sanlock vg-one-100 /dev/disk/by-id/scsi-ID
sudo vgcreate --shared --lock-type sanlock vg-one-101 /dev/disk/by-id/scsi-ID
Пример вывода созданных хранилищ в веб-интерфейсе ПК СВ:
Настройка с использованием API TROK#
Для установки с использованием API TROK хранилища данных будут использованы терминал и веб-интерфейс:
Для подготовки ВМ необходимо использовать версию ОС СН 1.8.5.46. В ходе установки необходимо выбрать уровень защищенности операционной системы «Орел».
Предупреждение
Необходимо использовать версию ядра ОС СН ` ``linux-6.1-generic`.
После установки ОС необходимо подготовить репозитории.
Предупреждение
Для установки программного обеспечения TROK рекомендуется использовать операционные системы, настроенные на работу с репозиториями ветки «frozen» либо с репозиториями, размещенными на установочном дистрибутиве Astra Linux Special Edition.
Например для версии 1.8.5.46 будет выглядеть следующим образом:
#deb cdrom:[OS Astra Linux 1.8.5.46 1.8_x86-64 DVD ]/ 1.8_x86-64 contrib main non-free non-free-firmware
#deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-main/ 1.8_x86-64 main contrib non-free non-free-firmware
#deb https://download.astralinux.ru/astra/stable/1.8_x86-64/repository-extended/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/1.8.5/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
deb https://dl.astralinux.ru/astra/frozen/1.8_x86-64/1.8.5/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
Примонтировать установочный образ TROK в систему, убедиться, что уже установлена библиотека
libyaml-cpp:
apt-cache search libyaml-cpp
Предупреждение
Для ОС СН 1.8.5.46 должна быть 0.7 версиябиблиотеки,если версия отличается, необходимо ее актуалитзировать командой:
sudo apt install libyaml-cpp0.7
ISO образ подключен напрямую к ВМ, необходимо примонтировать его к созданной директории и перейти в папку со скриптами установки с помощью команд:
sudo mkdir /mnt/trok_installer
sudo mount -o loop /dev/sr2 /mnt/trok_installer/
cd /mnt/trok_installer/installer
locadmin@trok-combined:/mnt/trok_installer/installer$ ls
config.yaml trok-installer trok-installer-gui
убедиться в наличии конфигурационного файла установки, а так же двух скриптов на разный режим установки.
Для установки с использованием командной строки в интерактивном режимевыполнить команду:
sudo ./trok-installer
Пример вывода выполнения команды:
В процессе установки необходимо выбрать:
для типа установки вариант 3 (
Combined);для дополнительных компонентов вариатнты 1,2 (
Harbor,WebUI).
Предупреждение
После запуска процесса установки могут появиться вопросы об установке уже имеющихся пакетов, на эти вопросы необходимо дать согласие.
Установка может остановиться и не реагировать на предложенные ключи на данном моменте:
в таком случае прервать процесс установки и выполнить команду:
sudo dpkg --configure -a
после выполнения запустить установку с начала:
sudo ./trok-installer
После успешной установки необходимо проверить что запущены все необходимые службы командой:
sudo systemctl status trok-auth.service trok-controller.service trok-cp-endpoint.service trok-worker.service
Кроме того, необходимо проверить, что установлены drbd пакеты:
sudo apt list --installed | grep drbd
Пример вывода после выполнения команды:
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
drbd-6.1.158-1-generic/stable,now 9.2.15-3 amd64 [установлен]
drbd-reactor/stable,now 1.4.1-1 amd64 [установлен, автоматически]
drbd-ueficert/stable,now 9.2.11 all [установлен]
drbd-utils/stable,now 9.28.0-1 amd64 [установлен]
Примечание
Если окажется так, что отутствует пакет drbd-ueficert, его можно доставить командой:
sudo apt install drbd-ueficert
Проверитьверсию API командой:
curl --request GET \
--url http://IP/v1/controller/version | jq
Получить значения
CLIENT_IDиCLIENT_SECRETиз ПК СВ.
Примечание
Значения CLIENT_ID и CLIENT_SECRET предустановлены по умолчанию: CLIENT_ID=»851ff3caeae253535bd881ce54adf5c0» CLIENT_SECRET=»6c28fc8668b51dbc8cd5dfdd1da0ff2851ded014fba54d225d00faef7fdc6ba62825d7fe6b63d38e1e5856e7cda44282a99a67a8935e8c0fe9158f519ac3e3c0»
Получить токен авторизации с помощью команды:
curl -X POST \
'http://IP/v2/auth/token?client_id=851ff3caeae253535bd881ce54adf5c0&client_secret=6c28fc8668b51dbc8cd5dfdd1da0ff2851ded014fba54d225d00faef7fdc6ba62825d7fe6b63d38e1e5856e7cda44282a99a67a8935e8c0fe9158f519ac3e3c0&grant_type=client_credentials' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'accept: application/json' \
-d '{}' | jq
Пример вывода токена:
-H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiI4NTFmZjNjYWVhZTI1MzUzNWJkODgxY2U1NGFkZjVjMCIsImlhdCI6MTc3OTQzNjgxOCwiZXhwIjoxNzc5NDM3NDE4LCJqdGkiOiI0YzUxMzE4Yy0wOTZmLTQ1NGMtYWU0Ny04Yzk4N2RkYmY2ZGIifQ.stfKijottIovT15t-Gwv9ucrFlWgoRtwEtapaUcwg7g'
Примечание
Все методы API должны вызываться с полученым токеном.
Проверить список узлов командой:
curl -X 'GET' \
'http://IP/v2/nodes' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer token' | jq
Примечание
При первом запросе в выводе будет пусто, т.к. еще не создано узлов.
Добавить новый узел (в данном примере типа
Combined):
curl --request POST \
--url http://IP/v2/nodes \
-H 'Authorization: Bearer token' \
--header 'Content-Type: application/json' \
--data '
{
"name": "trok-combined",
"net_interfaces": [
{
"address": "IP",
"is_active": true,
"name": "default-worker",
"satellite_encryption_type": "PLAIN",
"satellite_port": 50002
}
],
"type": "Combined"
}
' | jq
где <Имя> — имя узла, <Порт> — порт узла;
Согласно с подготовленными хранилищами добавить пулы хранения данных:
Проверить список узлов:
curl -X 'GET' \
'http://IP/v2/nodes' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer token' | jq
узнать UUID нужного узла:
curl -X 'POST' \
'http://IP/v2/nodes/UUID_NODE/storage-pools' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer token' \
--data '
{
"props": {
"StorDriver/StorPoolName": "storage_brest_api_1"
},
"provider_kind": "LVM",
"storage_pool_name": "storage_brest_api_1"
}
' | jq
указазь имя и тип подготовленного тома на машине:
curl --request GET \
--url http://IP/v1/nodes/UUID_node/storage-pools \
-H 'Authorization: Bearer token' | jq
Добавить шаблон ресурсов:
проверить список шаблонов (он должен быть пуст);
curl --request GET \
--url http://IP/v2/resource-definitions \
-H 'Authorization: Bearer token' | jq
узнать UUID нужной группы (в данном примере используется группа ресурсов по умолчанию);
curl --request GET \
--url http://IP/v2/resource-groups \
-H 'Authorization: Bearer token' | jq
добавить шаблон ресурсов (необходимо указать имя и UUID группы ресурсов).
curl --request POST \
--url http://IP/v2/resource-definitions \
--header 'Content-Type: application/json' \
-H 'Authorization: Bearer token' \
--data '
{
"resource_definition": {
"name": "name",
"resource_group_uuid": "uuid"
}
}
' | jq
Примечание
Имя и UUID созданных шаблонов понадобятся для добавления шаблонов томов.
Добавить шаблон томов (необходимы: UUID шаблона ресурса, имя шаблона ресурса и рабмер тома):
curl --request POST \
--url http://IP/v2/resource-definitions/resource_definition_uuid/volume-definitions \
--header 'Content-Type: application/json' \
-H 'Authorization: Bearer token' \
--data '
{
"volume_definition": {
"resource_definition_name": "resource_definition_name",
"resource_definition_uuid": "resource_definition_uuid",
"size_kib": 75000000
}
}
' | jq
curl --request GET \
--url http://IP/v2/volume-definitions \
-H 'Authorization: Bearer token' | jq
Добавить ресурсы (необходимы: имя и UUID узла, имя и UUID пула хранения, UUID шаблона ресурсов):
curl --request GET \
--url http://IP/v2/volume-definitions \
-H 'Authorization: Bearer token' | jq
curl --request GET \
--url http://IP/v1/nodes/node_uuid/storage-pools \
-H 'Authorization: Bearer token' | jq
curl --request POST \
--url http://IP/v2/resource-definitions/resource_definition_uuid/resources/node_uuid \
--header 'Content-Type: application/json' \
-H 'Authorization: Bearer token' \
--data '
{
"resource": {
"name": "name_resource",
"node_name": "node_name",
"props": {
"StorPoolId": "storage_pool_uuid"
},
"volumes": [
{
"storage_pool_name": "storage_pool_name",
"storage_pool_uuid": "storage_pool_uuid"
}
]
}
}
' | jq
Проверить список на доступность:
curl --request GET \
--url http://IP/v2/view/resources \
-H 'Authorization: Bearer token' | jq
Настроить конфигурационный файл ``DRBD Reactor``(можно повторить настройку из раздела ручной настройки):
sudo nano /etc/drbd-reactor.d/iscsi-trokcombine.toml
[[promoter]]
[promoter.resources]
[promoter.resources.def-storage-brest-api-1]
on-drbd-demote-failure = "reboot-immediate"
runner = "systemd"
start = [
"ocf:heartbeat:IPaddr2 service_ip0 cidr_netmask=24 ip=10.177.126.230",
"ocf:heartbeat:iSCSITarget target allowed_initiators='' incoming_password=12345678 incoming_username=astra iqn=iqn.2025-12.ru.astra:def-storage-brest-api-1 portals=10.177.126.230:3260",
"ocf:heartbeat:iSCSILogicalUnit lu1 lun=1 path=/dev/drbd/by-res/def-storage-brest-api-1/0 product_id='TROK iSCSI' scsi_sn=7509fab1 target_iqn=iqn.2025-12.ru.astra:def-storage-brest-api-1"
]
stop-services-on-exit = true
target-as = "Requires"
sudo nano /etc/drbd-reactor.d/iscsi-trokcombine2.toml
[[promoter]]
[promoter.resources]
[promoter.resources.def-storage-brest-api-2]
on-drbd-demote-failure = "reboot-immediate"
runner = "systemd"
start = [
"ocf:heartbeat:IPaddr2 service_ip0 cidr_netmask=24 ip=10.177.126.231",
"ocf:heartbeat:iSCSITarget target allowed_initiators='' incoming_password=12345678 incoming_username=astra iqn=iqn.2025-12.ru.astra:def-storage-brest-api-2 portals=10.177.126.231:3260",
"ocf:heartbeat:iSCSILogicalUnit lu1 lun=1 path=/dev/drbd/by-res/def-storage-brest-api-2/0 product_id='TROK iSCSI' scsi_sn=7509fab2 target_iqn=iqn.2025-12.ru.astra:def-storage-brest-api-2"
]
stop-services-on-exit = true
target-as = "Requires"