ЛИНСТОР складиште и његова интеграција са ОпенНебула

ЛИНСТОР складиште и његова интеграција са ОпенНебула

Недавно су момци из ЛИНБИТ-а представили своје ново СДС решење - Линстор. Ово је потпуно бесплатно складиште засновано на провереним технологијама: ДРБД, ЛВМ, ЗФС. Линстор комбинује једноставност и добро дизајнирану архитектуру, што вам омогућава да постигнете стабилност и прилично импресивне резултате.

Данас бих желео да причам о томе мало детаљније и да покажем како се лако може интегрисати са ОпенНебулом користећи линстор_ун – нови драјвер који сам развио посебно за ову сврху.

Линстор у комбинацији са ОпенНебула вам омогућава да изградите брз и поуздан облак који се лако може применити на вашу сопствену инфраструктуру.

Линстор архитектура

Линстор није ни систем датотека ни блок меморија сам по себи, Линстор је оркестратор који обезбеђује слој апстракције који вам омогућава да аутоматизујете креирање волумена у ЛВМ или ЗФС и да их реплицирате помоћу ДРБД9.

Разбијање стереотипа

Али чекај, ДРБД? — Зашто га аутоматизовати и како уопште може да функционише?

Подсетимо се прошлости, када је ДРБД8 био веома популаран. Његова стандардна употреба укључивала је стварање једног великог блок уређаја и његово сечење на много малих делова, користећи исти ЛВМ. Нека врста мдадм РАИД-1 али са репликацијом преко мреже.

Овај приступ није без недостатака и стога, са појавом ДРБД9, принципи дизајна складиштења су се променили; сада се креира посебан ДРБД уређај за сваку виртуелну машину.

Приступ са независним блок уређајима омогућава боље искоришћење простора у кластеру, а такође додаје низ додатних карактеристика. На пример, за сваки такав уређај можете одредити број реплика, њихову локацију и појединачна подешавања. Лако их је креирати/брисати, правити снимке, мењати величину, омогућити шифровање и још много тога. Вреди напоменути да ДРБД9 такође подржава кворум, што вам омогућава да избегнете ситуације са подељеним мозгом.

Ресурси и позадина

Приликом креирања новог блок уређаја, Линстор поставља потребан број реплика на различите чворове у кластеру. Сваку такву реплику назваћемо ДРБД ресурсом.

Постоје две врсте ресурса:

  • Ресурс података — су ДРБД уређај који се налази на чвору у ЛВМ или ЗФС базену.
    Тренутно постоји подршка за неколико бекенда и њихов број стално расте. Постоји подршка за ЛВМ, ТхинЛВМ и ЗФС. Последња два вам омогућавају да креирате и користите снимке.
  • Ресурс без диска — је ДРБД уређај постављен на чвор без позадине, али омогућава да се третира као обичан блок уређај; све операције читања/писања ће бити преусмерене на ресурсе података. Најближи аналог ресурсима без диска је иСЦСИ ЛУН.

Сваки ДРБД ресурс може имати до 8 реплика, а само једна од њих може бити активна подразумевано - Основни, сви остали ће бити Секундарна а њихова употреба ће бити немогућа све док постоји бар један Примарни, односно једноставно ће реплицирати податке између себе.

Инсталирањем ДРБД уређаја у систем, он аутоматски постаје Основни, тако да чак и ресурс без диска, у ДРБД терминологији, може бити примарни.

Па зашто вам треба Линстор?

Поверавањем свих задатака који захтевају велике ресурсе кернелу, Линстор је у суштини обична Јава апликација која вам омогућава да лако аутоматизујете креирање ДРБД ресурса.
Штавише, сваки ресурс који он креира биће независан ДРБД кластер који функционише независно, без обзира на стање контролне равни и других ДРБД ресурса.

Линстор се састоји од само две компоненте:

  • Линстор-контролер - Главни контролер, који обезбеђује АПИ за креирање и управљање ресурсима. Такође комуницира са сателитима, проверава слободан простор на њима и шаље задатке за креирање и брисање нових ресурса. Покреће се у једној инстанци и користи базу података, која може бити интерна (Х2) или екстерна (ПостгреСКЛ, МиСКЛ, МариаДБ)
  • Линстор-сателит — Инсталира се на свим чворовима за складиштење и обезбеђује контролеру информације о слободном простору, а такође обавља задатке примљене од контролера за креирање и брисање нових волумена и ДРБД уређаја изнад њих.

Линстор ради са следећим кључним концептима:

  • Чвор — физички сервер на коме ће се креирати и користити ДРБД ресурси.
  • Стораге Поол — ЛВМ или ЗФС базен креиран на чвору у коме ће се налазити ДРБД ресурси. Могућ је и базен без диска - ово је базен у којем ће се налазити само ресурси без диска.
  • Дефиниција ресурса — Дефиниција ресурса је у суштини прототип који описује име и сва његова својства.
  • Волуме Дефинитион — Дефиниција запремине. Сваки ресурс се може састојати од више томова, сваки волумен мора имати величину.
  • Ресурс — Креирана инстанца блок уређаја, сваки ресурс мора бити постављен на одређени чвор и у неко складиште за складиштење.

Инсталација Линстора

Препоручујем да користите Убунту као систем, јер... постоји за њу спреман ППА:

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

Или Дебиан, где се Линстор може инсталирати из званичног спремишта за Прокмок:

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

контролор

Овде је све једноставно:

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

Чворови за складиштење

Линук кернел се тренутно испоручује са модулом кернела у стаблу ДРБД8, нажалост не одговара нам и морамо да инсталирамо ДРБД9:

apt-get install drbd-dkms

Као што показује пракса, већина потешкоћа настаје управо због тога што се у систем учитава модул ДРБД8, а не ДРБД9. На срећу, ово је лако проверити покретањем:

modprobe drbd
cat /proc/drbd

Ако видиш верзија: 9 - значи да је све у реду ако верзија: 8 - то значи да је нешто пошло наопако и да морате да предузмете додатне кораке да бисте сазнали разлоге.

Сада хајде да инсталирамо линстор-сателит и дрбд-утилс:

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

Направите кластер

Складишни скупови и чворови

Као бацкенд ћемо узети ТхинЛВМ, јер најједноставнији је и подржава снимке.
Сет лвм2, ако то већ нисте урадили, хајде да направимо ТхинЛВМ скуп на свим нашим чворовима за складиштење:

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

Ако је све урађено исправно, требало би да видимо нешто попут:

+------------------------------------------------ -------------------------------------------------- ----+ | СторагеПоол | Чвор | Дривер | ПоолНаме | ФрееЦапацити | ТоталЦапацити | СуппортсСнапсхотс | |------------------------------------------------ - -------------------------------------------------- - ---| | подаци | ноде1 | ЛВМ_ТХИН | дрбдпоол/тхинпоол | 64 ГиБ | 64 ГиБ | истина | | подаци | ноде2 | ЛВМ_ТХИН | дрбдпоол/тхинпоол | 64 ГиБ | 64 ГиБ | истина | | подаци | ноде3 | ЛВМ_ТХИН | дрбдпоол/тхинпоол | 64 ГиБ | 64 ГиБ | истина | +------------------------------------------------ -------------------------------------------------- ----+

ДРБД ресурси

Сада покушајмо да креирамо наш нови ДРБД ресурс:

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

Хајде да проверимо креиране ресурсе:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Чвор | Ресурс | СторагеПоол | ВолумеНр | МинорНр | ДевицеНаме | Додељено | ИнУсе | Држава | |------------------------------------------------ - -------------------------------------------------- - --| | ноде1 | мирес | подаци | 0 | 1084 | /дев/дрбд1084 | 52 КиБ | Унусед | УпТоДате | | ноде2 | мирес | подаци | 0 | 1084 | /дев/дрбд1084 | 52 КиБ | Унусед | УпТоДате | +------------------------------------------------ -------------------------------------------------- ---+

Велики! — видимо да је ресурс креиран на прва два чвора, такође можемо покушати да креирамо ресурс без диска на трећем:

linstor resource create --diskless node3 myres

На чворовима ћете увек пронаћи овај уређај као /dev/drbd1084 или /dev/drbd/by-res/myres/0

Овако Линстор ради, можете добити више информација од званична документација.

Сада ћу вам рећи како да га интегришете са ОпенНебулом

Подешавање ОпенНебула

Нећу улазити превише дубоко у процес подешавања ОпенНебула, јер... сви кораци су детаљно описани у званична документација, коју препоручујем да контактирате, рећи ћу вам само о интеграцији ОпенНебула са Линстором.

линстор_ун

Да бих решио овај проблем, написао сам свој драјвер - линстор_ун, тренутно је доступан као додатак и мора се засебно инсталирати.

Целокупна инсталација се врши на фронтенд ОпенНебула чворовима и не захтева додатне радње на рачунарским чворовима.

Пре свега, морамо бити сигурни да имамо jq и линстор-клијент:

apt-get install jq linstor-client

Тим linstor node list треба да прикаже листу чворова. Сви ОпенНебула рачунарски чворови морају бити додати у Линстор кластер.

Преузмите и инсталирајте додатак:

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

Сада морамо да га додамо у ОпенНебула конфигурацију, да бисмо то урадили следимо једноставне кораке описане овде.

Затим поново покрените ОпенНебула:

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 приказује број реплика података који ће бити креирани за сваку нову слику у ОпенНебула.
  • Параметар CLONE_MODE означава тачно како ће слике бити клониране приликом креирања нових виртуелних машина, snapshot — ће направити снимак слике и применити виртуелну машину из снимка, copy — направиће комплетну копију слике за сваку виртуелну машину.
  • В BRIDGE_LIST Препоручује се да наведете све чворове који ће се користити за обављање операција клонирања слике.

За комплетну листу подржаних параметара, погледајте РЕАДМЕ пројекат.

Овим је подешавање завршено, сада можете преузети неки уређај са званичника ОпенНебула Маркетплаце и од њега креирати виртуелне машине.

Линк пројекта:
https://github.com/OpenNebula/addon-linstor_un

Извор: ввв.хабр.цом

Додај коментар