
Jo shumë kohë më parë, ekipi i LINBIT prezantoi zgjidhjen e re SDS, Linstor. Kjo është një platformë ruajtjeje plotësisht open-source, e ndërtuar mbi teknologji të provuara si DRBD, LVM dhe ZFS. Linstor kombinon thjeshtësinë me një arkitekturë të menduar mirë, duke ofruar stabilitet dhe performancë mbresëlënëse.
Sot dua tĂ« flas pak mĂ« nĂ« detaje pĂ«r tĂ« dhe tĂ« tregoj sa lehtĂ« mund tĂ« integrohet me OpenNebula duke pĂ«rdorur linstor_un â njĂ« driver i ri qĂ« e kam zhvilluar posaçërisht pĂ«r kĂ«tĂ« qĂ«llim.
Linstor, në kombinim me OpenNebula, ju lejon të ndërtoni një cloud të shpejtë dhe të besueshëm, që mund të vendoset pa vështirësi në infrastrukturën tuaj.
Arkitektura e Linstor
Linstor nuk është as sistem skedarësh dhe as ruajtje blloqesh në vetvete; Linstor është një orkestrues që ofron një shtresë abstraksioni, e cila mundëson automatizimin e krijimit të volumeve në LVM ose ZFS dhe replikimin e tyre me ndihmën e DRBD9.
Thyejmë stereotipet
Por prisni, DRBD? â Pse duhet automatizuar dhe si mund tĂ« funksionojĂ« kjo nĂ« praktikĂ«?
Le të kthehemi pak pas në kohë, kur DRBD8 ishte gjerësisht i përdorur. Përdorimi standard i tij nënkuptonte krijimin e një pajisjeje të madhe blloku dhe ndarjen e saj në shumë pjesë të vogla, me ndihmën e LVM. Diçka e ngjashme me mdadm RAID-1, por me replikim përmes rrjetit.
Kjo qasje ka mangësitë e veta, prandaj me ardhjen e DRBD9 parimet e ndërtimit të ruajtjes ndryshuan: tani për çdo makinë virtuale krijohet një pajisje DRBD e veçantë.
Qasja me pajisje blloku të pavarura mundëson shfrytëzim më të mirë të hapësirës në klaster dhe, gjithashtu, shton një sërë mundësish të tjera. Për shembull, për secilën prej këtyre pajisjeve mund të përcaktohet numri i replikave, vendosja e tyre dhe parametrat individualë. Ato krijohen dhe fshihen lehtësisht, mund të bëhen snapshot-e, të ndryshohet madhësia, të aktivizohet enkriptimi dhe shumë më tepër. Vlen të theksohet se DRBD9 mbështet gjithashtu quorum, i cili ndihmon në shmangien e situatave split-brain.
Burimet dhe backend-et
Kur krijon një pajisje të re blloku, Linstor vendos numrin e nevojshëm të replikave në nyje të ndryshme të klasterit. Secilën prej këtyre replikave do ta quajmë burim DRBD.
Burimet janë të dy llojeve:
- Burim Data â janĂ« njĂ« pajisje DRBD e vendosur nĂ« nyje brenda njĂ« pool-i LVM ose ZFS.
Aktualisht mbĂ«shteten disa backend-e dhe numri i tyre po rritet vazhdimisht. Ka mbĂ«shtetje pĂ«r LVM, ThinLVM dhe ZFS. Dy tĂ« fundit lejojnĂ« krijimin dhe pĂ«rdorimin e snapshot-eve. - Burim Diskless â Ă«shtĂ« njĂ« pajisje DRBD e vendosur nĂ« njĂ« nyje pa backend, por qĂ« lejon tĂ« pĂ«rdoret si njĂ« pajisje e zakonshme blloku; tĂ« gjitha operacionet e leximit/shkrimit do tĂ« ridrejtohen te burimet data. Analogu mĂ« i afĂ«rt me burimet diskless Ă«shtĂ« iSCSI LUN.
Ădo burim DRBD mund tĂ« ketĂ« deri nĂ« 8 replika, dhe si parazgjedhje vetĂ«m njĂ«ra prej tyre mund tĂ« jetĂ« aktive â Primary, ndĂ«rsa tĂ« gjitha tĂ« tjerat do tĂ« jenĂ« Secondary dhe pĂ«rdorimi i tyre do tĂ« jetĂ« i pamundur pĂ«r sa kohĂ« qĂ« ekziston tĂ« paktĂ«n njĂ« Primary, pra ato thjesht do tĂ« replikojnĂ« tĂ« dhĂ«nat mes tyre.
Kur pajisja DRBD montohet në sistem, ajo bëhet automatikisht Primary, kështu që edhe një burim Diskless, sipas terminologjisë së DRBD, mund të jetë Primary.
Atëherë, pse nevojitet Linstor?
Duke ia besuar kernel-it të gjitha detyrat që kërkojnë shumë burime, Linstor në thelb është një aplikacion i zakonshëm Java që ju lejon të automatizoni lehtësisht krijimin e burimeve DRBD.
Njëkohësisht, çdo burim i krijuar prej tij përfaqëson një klaster të pavarur DRBD, i cili funksionon në mënyrë autonome, pavarësisht gjendjes së control-plane dhe burimeve të tjera DRBD.
Linstor përbëhet vetëm nga dy komponentë:
- Linstor-controller â Kontrolluesi kryesor, i cili ofron API pĂ«r krijimin dhe menaxhimin e burimeve. Ai komunikon edhe me satelitĂ«t, duke kontrolluar hapĂ«sirĂ«n e lirĂ« nĂ« to, dhe dĂ«rgon detyra pĂ«r krijimin dhe fshirjen e burimeve tĂ« reja. Niset nĂ« njĂ« instancĂ« tĂ« vetme dhe pĂ«rdor njĂ« bazĂ« tĂ« dhĂ«nash, e cila mund tĂ« jetĂ« si e brendshme (H2), ashtu edhe e jashtme (PostgreSQL, MySQL, MariaDB)
- Linstor-satellite â Instalohet nĂ« tĂ« gjitha nyjet e storage dhe i jep kontrolluesit informacion pĂ«r hapĂ«sirĂ«n e lirĂ«, si edhe ekzekuton detyrat e marra nga kontrolluesi pĂ«r krijimin dhe fshirjen e volumeve tĂ« reja dhe tĂ« pajisjeve DRBD mbi to.
Linstor përdor konceptet kryesore të mëposhtme:
- Nyja â serveri fizik mbi tĂ« cilin do tĂ« krijohen dhe pĂ«rdoren burimet DRBD.
- Storage Pool â njĂ« pool LVM ose ZFS i krijuar nĂ« nyje, ku do tĂ« vendosen burimet DRBD. ĂshtĂ« i mundur edhe njĂ« pool diskless â ky Ă«shtĂ« njĂ« pool ku do tĂ« vendosen vetĂ«m burime diskless.
- Resource Definition â PĂ«rkufizimi i resource-it, nĂ« thelb Ă«shtĂ« njĂ« prototip qĂ« pĂ«rshkruan emrin dhe tĂ« gjitha vetitĂ« e tij.
- PĂ«rkufizimi i volume-it â PĂ«rkufizimi i volume-it. Ădo resource mund tĂ« pĂ«rbĂ«het nga disa volume dhe secili volume duhet tĂ« ketĂ« madhĂ«si.
- Resource â Instanca e krijuar e pajisjes bllok. Ădo resource duhet tĂ« vendoset nĂ« njĂ« node tĂ« caktuar dhe nĂ« njĂ« storage pool.
Instalimi i Linstor
Si sistem rekomandoj të përdorni Ubuntu, sepse për të ekziston një :
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get updateOse Debian, ku Linstor mund të instalohet nga depoja zyrtare për 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 updateController
Këtu gjithçka është e thjeshtë:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controllerStorage nodes
Aktualisht, me kernelin Linux vjen moduli in-tree i kernelit DRBD8, por fatkeqësisht ai nuk na përshtatet dhe duhet të instalojmë DRBD9:
apt-get install drbd-dkmsSiç tregon praktika, shumica e vështirësive lindin pikërisht për shkak se në sistem është ngarkuar moduli DRBD8 dhe jo DRBD9. Fatmirësisht, kjo kontrollohet lehtë duke ekzekutuar:
modprobe drbd
cat /proc/drbdNĂ«se shihni version: 9 â do tĂ« thotĂ« se gjithçka Ă«shtĂ« nĂ« rregull; nĂ«se version: 8 â do tĂ« thotĂ« se diçka ka shkuar keq dhe duhet tĂ« ndĂ«rmerrni hapa shtesĂ« pĂ«r tĂ« sqaruar arsyet.
Tani le të instalojmë linstor-satellite dhe drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satelliteKrijimi i cluster-it
Storage pools dhe nodes
Si backend do të përdorim ThinLVM, sepse është më i thjeshti dhe mbështet snapshots.
Instaloni lvm2, nëse nuk e keni bërë ende, dhe le të krijojmë një ThinLVM pool në të gjitha storage nodes tona:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpoolTë gjitha veprimet e mëtejshme mund të kryhen drejtpërdrejt në controller:
Le të shtojmë nodes tona:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13Le të krijojmë storage pools:
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/thinpoolTani le të kontrollojmë pool-et e krijuara:
linstor storage-pool listNëse gjithçka është kryer saktë, duhet të shohim diçka të tillë:
+-------------------------------------------------------------------------------------------------------+ | StoragePool | Node | Driver | PoolName | FreeCapacity | TotalCapacity | SupportsSnapshots | |-------------------------------------------------------------------------------------------------------| | data | node1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | true | | data | node2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | true | | data | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | true | +-------------------------------------------------------------------------------------------------------+
Burimet DRBD
Tani le të provojmë të krijojmë burimin tonë të ri DRBD:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2Le të kontrollojmë burimet e krijuara:
linstor resource list +------------------------------------------------------------------------------------------------------+ | Node | Resource | StoragePool | VolumeNr | MinorNr | DeviceName | Allocated | InUse | State | |------------------------------------------------------------------------------------------------------| | node1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Unused | UpToDate | | node2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Unused | UpToDate | +------------------------------------------------------------------------------------------------------+
Shkëlqyeshëm! Tani shohim që burimi u krijua në dy nyjet e para; gjithashtu mund të provojmë të krijojmë një burim diskless në të tretën:
linstor resource create --diskless node3 myresNë nyje këtë pajisje do ta gjeni gjithmonë si /dev/drbd1084 ose /dev/drbd/by-res/myres/0
Kështu funksionon Linstor; më shumë informacion mund të gjeni te .
Tani do t'ju tregoj se si ta integroni atë me OpenNebula
Konfigurimi i OpenNebula
Nuk do të hyj shumë në hollësitë e procesit të konfigurimit të OpenNebula, sepse të gjithë hapat janë përshkruar në detaje në , të cilit ju rekomandoj t'i referoheni; unë do të ndalem vetëm te integrimi i OpenNebula me Linstor.
linstor_un
PĂ«r ta zgjidhur kĂ«tĂ« detyrĂ«, kam shkruar drejtuesin tim tĂ« posaçëm â , i cili aktualisht Ă«shtĂ« i disponueshĂ«m si plugin dhe duhet tĂ« instalohet veçmas.
I gjithë instalimi kryhet në nyjet frontend të OpenNebula dhe nuk kërkon veprime shtesë në nyjet compute.
Së pari duhet të sigurohemi që kemi jq dhe linstor-client:
apt-get install jq linstor-clientEkipa linstor node list duhet të shfaqë listën e nyjeve. Të gjitha nyjet compute të OpenNebula duhet të shtohen në klasterin Linstor.
Le ta shkarkojmë dhe instalojmë plugin-in:
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-masterTani duhet ta shtojmë atë në konfigurimin e OpenNebula; për këtë, ndiqni hapat e thjeshtë të përshkruar më poshtë .
MĂ« pas, rinisim OpenNebula:
systemctl restart opennebulaDhe shtojmë datastore-et tona, atë të sistemit:
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.confDhe depozitën e imazheve:
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- Parametri
AUTO_PLACEtregon numrin e replikave të të dhënave që do të krijohen për çdo imazh të ri në OpenNebula. - Parametri
CLONE_MODEtregon saktĂ«sisht se si do tĂ« klonohen imazhet gjatĂ« krijimit tĂ« makinave tĂ« reja virtuale,snapshotâ do tĂ« krijojĂ« njĂ« snapshot tĂ« imazhit dhe do ta pĂ«rdorĂ« atĂ« pĂ«r tĂ« vendosur makinĂ«n virtuale,copyâ do tĂ« krijojĂ« njĂ« kopje tĂ« plotĂ« tĂ« imazhit pĂ«r secilĂ«n makinĂ« virtuale. - NĂ«
BRIDGE_LISTrekomandohet të specifikohen të gjitha nyjet që do të përdoren për kryerjen e operacioneve të klonimit të imazheve.
Lista e plotë e parametrave të mbështetur jepet në project.
Me kaq, konfigurimi përfundon; tani mund të ngarkoni një appliance nga zyrtar dhe të krijoni makina virtuale prej tij.
Lidhja e projektit:
Burimi: habr.com
