LINSTOR қоймасы және оның OpenNebula-мен интеграциясы

LINSTOR қоймасы және оның OpenNebula-мен интеграциясы

Жақында LINBIT жігіттері өздерінің жаңа SDS шешімін ұсынды - Linstor. Бұл дәлелденген технологияларға негізделген мүлдем тегін сақтау орны: DRBD, LVM, ZFS. Linstor қарапайымдылық пен жақсы жобаланған архитектураны біріктіреді, бұл тұрақтылық пен айтарлықтай әсерлі нәтижелерге қол жеткізуге мүмкіндік береді.

Бүгін мен бұл туралы егжей-тегжейлі айтып, оны OpenNebula-мен linstor_un - осы мақсат үшін арнайы әзірлеген жаңа драйвер арқылы қаншалықты оңай біріктіруге болатынын көрсеткім келеді.

Linstor OpenNebula-мен бірге жеке инфрақұрылымда оңай орналастыруға болатын жылдам және сенімді бұлтты құруға мүмкіндік береді.

Linstor архитектурасы

Linstor - бұл файлдық жүйе де, блоктық сақтау да емес, Linstor - LVM немесе ZFS ішінде томдарды жасауды автоматтандыруға және DRBD9 көмегімен оларды көшіруге мүмкіндік беретін абстракциялық қабатты қамтамасыз ететін оркестр.

Стереотиптерді бұзу

Бірақ күте тұрыңыз, DRBD? — Неліктен оны автоматтандыру және ол қалай жұмыс істей алады?

DRBD8 өте танымал болған өткенді еске түсірейік. Оның стандартты қолданылуы бір үлкен блок құрылғысын жасауды және оны бірдей LVM көмегімен көптеген кішкене бөліктерге кесуді қамтиды. Mdadm RAID-1 түрі, бірақ желі арқылы репликациясы бар.

Бұл тәсілдің кемшіліктері де жоқ емес, сондықтан DRBD9 пайда болуымен сақтауды жобалау принциптері өзгерді, енді әрбір виртуалды машина үшін жеке DRBD құрылғысы жасалады.

Тәуелсіз блоктық құрылғылармен тәсіл кластердегі кеңістікті жақсырақ пайдалануға мүмкіндік береді, сонымен қатар бірқатар қосымша мүмкіндіктерді қосады. Мысалы, әрбір осындай құрылғы үшін көшірмелердің санын, олардың орналасуын және жеке параметрлерін анықтауға болады. Оларды жасау/жою, суретке түсіру, өлшемін өзгерту, шифрлауды қосу және т.б. оңай. Айта кету керек, DRBD9 сонымен қатар мидың бөлінген жағдайларын болдырмауға мүмкіндік беретін кворумды қолдайды.

Ресурстар және серверлер

Жаңа блок құрылғысын жасау кезінде Linstor репликалардың қажетті санын кластердегі әртүрлі түйіндерге орналастырады. Біз әрбір осындай көшірмені DRBD ресурсы деп атаймыз.

Ресурстардың екі түрі бар:

  • Деректер ресурсы — LVM немесе ZFS пулындағы түйінде орналасқан DRBD құрылғысы.
    Қазіргі уақытта бірнеше бэкендтерге қолдау бар және олардың саны үнемі өсіп келеді. LVM, ThinLVM және ZFS қолдауы бар. Соңғы екеуі суретті жасауға және пайдалануға мүмкіндік береді.
  • Дисксіз ресурс — сервері жоқ түйінге орналастырылған, бірақ оны кәдімгі блоктау құрылғысы ретінде қарастыруға мүмкіндік беретін DRBD құрылғысы; барлық оқу/жазу операциялары деректер ресурстарына қайта бағытталады. Дисксіз ресурстардың ең жақын аналогы iSCSI LUN болып табылады.

Әрбір DRBD ресурсында 8 көшірмеге дейін болуы мүмкін және олардың тек біреуі әдепкі бойынша белсенді болуы мүмкін - негізгі, қалғандары болады орта және кем дегенде бір Бастапқы бар болғанша оларды пайдалану мүмкін болмайды, яғни олар жай ғана деректерді бір-біріне қайталайды.

Жүйеге DRBD құрылғысын орнату арқылы ол автоматты түрде болады негізгі, осылайша DRBD терминологиясында тіпті Дисксіз ресурс Бастапқы болуы мүмкін.

Ендеше сізге Линстор не үшін керек?

Барлық ресурстарды қажет ететін тапсырмаларды ядроға сеніп тапсыру арқылы Linstor DRBD ресурстарын жасауды оңай автоматтандыруға мүмкіндік беретін кәдімгі Java қолданбасы болып табылады.
Оның үстіне, ол жасаған әрбір ресурс басқарушы жазықтықтың күйіне және басқа DRBD ресурстарына қарамастан тәуелсіз жұмыс істейтін тәуелсіз DRBD кластері болады.

Linstor тек екі компоненттен тұрады:

  • Линстор-контроллер - ресурстарды құру және басқару үшін API қамтамасыз ететін негізгі контроллер. Ол сондай-ақ жерсеріктермен байланысады, олардағы бос орынды тексереді және жаңа ресурстарды жасау және жою тапсырмаларын жібереді. Ол бір данада жұмыс істейді және дерекқорды пайдаланады, ол ішкі (H2) немесе сыртқы (PostgreSQL, MySQL, MariaDB) болуы мүмкін.
  • Linstor-спутник — Барлық сақтау түйіндерінде орнатылған және контроллерге бос орын туралы ақпарат береді, сонымен қатар олардың үстінде жаңа томдар мен DRBD құрылғыларын жасау және жою үшін контроллерден алынған тапсырмаларды орындайды.

Linstor келесі негізгі ұғымдармен жұмыс істейді:

  • Node — DRBD ресурстары жасалатын және пайдаланылатын физикалық сервер.
  • Бассейн — DRBD ресурстары орналасатын түйінде жасалған LVM немесе ZFS пулы. Дисксіз пул да мүмкін - бұл тек дисксіз ресурстар орналасатын пул.
  • Ресурс анықтамасы — Ресурстың анықтамасы мәні бойынша атауды және оның барлық қасиеттерін сипаттайтын прототип болып табылады.
  • Көлемнің анықтамасы — Көлемді анықтау. Әрбір ресурс бірнеше томдардан тұруы мүмкін, әрбір томның өлшемі болуы керек.
  • ресурс — Блоктық құрылғының жасалған данасы, әрбір ресурс белгілі бір түйінге және кейбір сақтау пулына орналастырылуы керек.

Linstor орнату

Мен Ubuntu жүйесін жүйе ретінде пайдалануды ұсынамын, себебі... ол үшін бар дайын PPA:

add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update

Немесе Debian, мұнда Linstor Proxmox үшін ресми репозиторийден орнатылуы мүмкін:

wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add -
PVERS=5 && echo "deb http://packages.linbit.com/proxmox/ proxmox-$PVERS drbd-9.0" > 
    /etc/apt/sources.list.d/linbit.list
apt-get update

Controller

Мұнда бәрі қарапайым:

apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller

Сақтау түйіндері

Linux ядросы қазіргі уақытта ағаш ішіндегі ядро ​​модулімен жеткізіледі DRBD8, өкінішке орай ол бізге сәйкес келмейді және орнатуымыз керек DRBD9:

apt-get install drbd-dkms

Тәжірибе көрсеткендей, қиындықтардың көпшілігі DRBD8 емес, DRBD9 модулі жүйеге жүктелгендіктен туындайды. Бақытымызға орай, мұны іске қосу арқылы тексеру оңай:

modprobe drbd
cat /proc/drbd

Көрсең нұсқа: 9 - бұл бәрі жақсы, егер нұсқа: 8 - бұл бірдеңе дұрыс болмады және оның себептерін анықтау үшін қосымша қадамдар жасау керек дегенді білдіреді.

Енді орнатамыз линстор-спутник и drbd-utils:

apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite

Кластер құру

Сақтау пулдары мен түйіндері

Бейне ретінде біз аламыз ThinLVM, өйткені бұл ең қарапайым және суреттерді қолдайды.
Орнату lvm2, егер мұны әлі жасамаған болсаңыз, барлық сақтау түйіндерінде ThinLVM пулын жасайық:

sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool

Барлық келесі әрекеттерді тікелей контроллерде орындауға болады:

Түйіндерімізді қосамыз:

linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13

Сақтау пулдарын жасайық:

linstor storage-pool create lvmthin node1 data drbdpool/thinpool
linstor storage-pool create lvmthin node2 data drbdpool/thinpool
linstor storage-pool create lvmthin node3 data drbdpool/thinpool

Енді құрылған бассейндерді тексерейік:

linstor storage-pool list

Егер бәрі дұрыс орындалса, біз келесідей нәрсені көруіміз керек:

+------------------------------------------------ ------------------------------------------------- ----+ | StoragePool | Түйін | Жүргізуші | PoolName | FreeCapacity | TotalCapacity | SupportsSnapshots | |------------------------------------------------ - ------------------------------------------------- - ---| | деректер | түйін1 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | шын | | деректер | түйін2 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | шын | | деректер | түйін3 | LVM_THIN | drbdpool/thinpool | 64 ГБ | 64 ГБ | шын | +------------------------------------------------ ------------------------------------------------- ----+

DRBD ресурстары

Енді жаңа DRBD ресурсын жасауға тырысайық:

linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2

Жасалған ресурстарды тексерейік:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+ | Түйін | Ресурс | StoragePool | VolumeNr | MinorNr | Құрылғы атауы | Бөлінген | InUse | Мемлекет | |------------------------------------------------ - ------------------------------------------------- - --| | түйін1 | myres | деректер | 0 | 1084 | /dev/drbd1084 | 52 КБ | Пайдаланылмаған | UpToDate | | түйін2 | myres | деректер | 0 | 1084 | /dev/drbd1084 | 52 КБ | Пайдаланылмаған | UpToDate | +------------------------------------------------ ------------------------------------------------- ---+

Тамаша! — ресурстың алғашқы екі түйінде жасалғанын көреміз, үшіншісінде де дискісіз ресурс жасауға тырысуға болады:

linstor resource create --diskless node3 myres

Түйіндерде сіз әрқашан бұл құрылғыны табасыз /dev/drbd1084 немесе /dev/drbd/by-res/myres/0

Linstor осылай жұмыс істейді, сіз одан қосымша ақпаратты ала аласыз ресми құжаттама.

Енді мен оны OpenNebula-мен қалай біріктіру керектігін айтамын

OpenNebula орнату

Мен OpenNebula орнату процесіне тым тереңдеп бармаймын, себебі... барлық қадамдар егжей-тегжейлі сипатталған ресми құжаттама, мен сізге хабарласуды ұсынамын, мен сізге тек OpenNebula-ның Linstor-пен интеграциясы туралы айтып беремін.

linstor_un

Бұл мәселені шешу үшін мен өз драйверімді жаздым - linstor_un, ол қазіргі уақытта плагин ретінде қол жетімді және бөлек орнатылуы керек.

Толық орнату алдыңғы қатардағы OpenNebula түйіндерінде орындалады және есептеу түйіндерінде қосымша әрекеттерді қажет етпейді.

Ең алдымен, бізде бар екеніне көз жеткізу керек jq и linstor-клиент:

apt-get install jq linstor-client

команда linstor node list түйіндер тізімін көрсету керек. Барлық OpenNebula есептеу түйіндері Linstor кластеріне қосылуы керек.

Плагинді жүктеп алыңыз және орнатыңыз:

curl -L https://github.com/OpenNebula/addon-linstor_un/archive/master.tar.gz | tar -xzvf - -C /tmp

mv /tmp/addon-linstor_un-master/vmm/kvm/* /var/lib/one/remotes/vmm/kvm/

mkdir -p /var/lib/one/remotes/etc/datastore/linstor_un
mv /tmp/addon-linstor_un-master/datastore/linstor_un/linstor_un.conf /var/lib/one/remotes/etc/datastore/linstor_un/linstor_un.conf

mv /tmp/addon-linstor_un-master/datastore/linstor_un /var/lib/one/remotes/datastore/linstor_un
mv /tmp/addon-linstor_un-master/tm/linstor_un /var/lib/one/remotes/tm/linstor_un

rm -rf /tmp/addon-linstor_un-master

Енді біз оны OpenNebula конфигурациясына қосуымыз керек, мұны істеу үшін біз сипатталған қарапайым қадамдарды орындаймыз осында.

Содан кейін OpenNebula-ны қайта іске қосыңыз:

systemctl restart opennebula

Біздің деректер қоймаларын, жүйені қосыңыз:

cat > system-ds.conf <<EOT
NAME="linstor-system"
TYPE="SYSTEM_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
CLONE_MODE="snapshot"
CHECKPOINT_AUTO_PLACE="1"
BRIDGE_LIST="node1 node2 node3"
TM_MAD="linstor_un"
EOT

onedatastore create system-ds.conf

Ал сурет дүкені:

cat > images-ds.conf <<EOT
NAME="linstor-images"
TYPE="IMAGE_DS"
STORAGE_POOL="data"
AUTO_PLACE="2"
BRIDGE_LIST="node1 node2 node3"
DISK_TYPE="BLOCK"
DS_MAD="linstor_un"
TM_MAD="linstor_un"
EOT

onedatastore create images-ds.conf

  • Параметр AUTO_PLACE OpenNebula бағдарламасындағы әрбір жаңа кескін үшін жасалатын деректер репликаларының санын көрсетеді.
  • Параметр CLONE_MODE жаңа виртуалды машиналарды жасау кезінде кескіндердің қалай клондалатынын көрсетеді, snapshot — суреттің суретін жасайды және суреттен виртуалды машинаны орналастырады, copy — әрбір виртуалды машина үшін кескіннің толық көшірмесін жасайды.
  • В BRIDGE_LIST Кескінді клондау операцияларын орындау үшін пайдаланылатын барлық түйіндерді көрсету ұсынылады.

Қолдау көрсетілетін параметрлердің толық тізімін қараңыз README Жоба.

Бұл орнатуды аяқтайды, енді кейбір құрылғыны ресми өкілден жүктеп алуға болады OpenNebula Marketplace және одан виртуалды машиналарды жасаңыз.

Жоба сілтемесі:
https://github.com/OpenNebula/addon-linstor_un

Ақпарат көзі: www.habr.com

пікір қалдыру