Ruajtja LINSTOR dhe integrimi i saj me OpenNebula

Ruajtja LINSTOR dhe integrimi i saj me OpenNebula

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ë PPA i gatshëm:

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

Ose 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 update

Controller

Këtu gjithçka është e thjeshtë:

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

Storage 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-dkms

Siç 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/drbd

NĂ«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-satellite

Krijimi 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/thinpool

Të 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.13

Le 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/thinpool

Tani le të kontrollojmë pool-et e krijuara:

linstor storage-pool list

Në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 2

Le 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 myres

Në 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 dokumentacionin zyrtar.

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ë dokumentacionin zyrtar, 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 — linstor_un, 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-client

Ekipa 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-master

Tani duhet ta shtojmë atë në konfigurimin e OpenNebula; për këtë, ndiqni hapat e thjeshtë të përshkruar më poshtë këtu.

MĂ« pas, rinisim OpenNebula:

systemctl restart opennebula

Dhe 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.conf

Dhe 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_PLACE tregon numrin e replikave tĂ« tĂ« dhĂ«nave qĂ« do tĂ« krijohen pĂ«r çdo imazh tĂ« ri nĂ« OpenNebula.
  • Parametri CLONE_MODE tregon 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_LIST rekomandohet 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ë README project.

Me kaq, konfigurimi përfundon; tani mund të ngarkoni një appliance nga OpenNebula Marketplace zyrtar dhe të krijoni makina virtuale prej tij.

Lidhja e projektit:
https://github.com/OpenNebula/addon-linstor_un

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster