Depoja LINSTOR dhe integrimi i saj me OpenNebula

Depoja LINSTOR dhe integrimi i saj me OpenNebula

Jo mĂ« parĂ«, djemtĂ« nga LINBIT prezantuan zgjidhjen e tyre tĂ« re SDS — Linstor. Ky Ă«shtĂ« njĂ« ruajtje krejtĂ«sisht e lirĂ« qĂ« pĂ«rdor teknologji tĂ« provuara: DRBD, LVM, ZFS. Linstor kombinon thjeshtĂ«sinĂ« dhe njĂ« arkitekturĂ« tĂ« mirĂ«pĂ«rpunuar, duke lejuar arritjen e stabilitetit dhe rezultateve mjaft tĂ« kĂ«naqshme.

Sot do tĂ« flas mĂ« nĂ« detaje pĂ«r tĂ« dhe do tĂ« tregoj se sa e thjeshtĂ« Ă«shtĂ« ta integrosh me OpenNebula duke pĂ«rdorur linstor_un — njĂ« driver tĂ« ri qĂ« e zhvillova posaçërisht pĂ«r kĂ«tĂ« qĂ«llim.

Linstor së bashku me OpenNebula mundëson ndërtimin e një cloud-i të shpejtë dhe të besueshëm, i cili mund të vendoset pa probleme në infrastrukturën tuaj.

Arkitektura e Linstor

Linstor nuk është as një sistem skedarësh dhe as një depozitë bllokesh vetë, Linstor është një orkestrator që ofron një shtresë abstrahimi që lejon automatizimin e krijimit të volumeve në LVM ose ZFS dhe replikimin e tyre me DRBD9.

Të thyejmë stereotipet

Por ndaloni, DRBD? — Pse ta automatizojmĂ« atĂ« dhe si mund tĂ« funksionojĂ« kjo?

Le të kujtojmë të kaluarën, kur DRBD8 ishte shumë i popullarizuar. Përdorimi standard përfshinte krijimin e një pajisjeje të madhe blloku dhe ndarjen e saj në shumë copa të vogla, me ndihmën e të njëjtit LVM. Një RAID-1 si mdadm, por me replikim në rrjet.

Ky këndvështrim ka disavantazhet e tij, dhe për këtë arsye me ardhjen e DRBD9, parimet e ndërtimit të ruajtjes ndryshuan, tani për çdo makinë virtuale krijohet një pajisje e veçantë DRBD.

Qasje me pajisje blloku tĂ« pavarura lejon mĂ« mirĂ« shfrytĂ«zimin e hapĂ«sirĂ«s nĂ« klaster, si dhe shton njĂ« sĂ«rĂ« mundĂ«sish shtesĂ«. PĂ«r shembull, pĂ«r çdo pajisje tĂ« tillĂ«, mund tĂ« pĂ«rcaktohet numri i replikave, vendndodhja e tyre dhe cilĂ«simet individuale. ËshtĂ« e lehtĂ« t'i krijoni / t'i fshini, tĂ« bĂ«ni kopje tĂ« sigurisĂ«, ndryshoni madhĂ«sinĂ«, aktivizoni enkriptimin dhe shumĂ« tĂ« tjera. Duhet tĂ« theksohet se DRBD9 gjithashtu mbĂ«shtet kuorum, i cili ndihmon nĂ« evitimin e situatave tĂ« ndarjes sĂ« mendimeve.

Burimet dhe prapavijat

Duke krijuar njĂ« pajisje tĂ« re blloku, Linstor vendos numrin e nevojshĂ«m tĂ« replikave nĂ« node tĂ« ndryshme nĂ« klaster. Çdo kopje tĂ« tillĂ« do ta quajmĂ« burim DRBD.

Burimet janë të dy tipeve:

  • Data-burimi — pĂ«rfaqĂ«son njĂ« pajisje DRBD e vendosur nĂ« njĂ« nyje nĂ« rezervuarin LVM ose ZFS.
    Aktualisht ekziston mbështetje për disa backend 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 snapshoteve.
  • Burimi Diskless — pĂ«rfaqĂ«son njĂ« pajisje DRBD e vendosur nĂ« njĂ« nyje pa backend, por duke lejuar trajtimin e saj si njĂ« pajisje zakonore bllokimi, tĂ« gjitha operacionet e leximit/shkrimit do tĂ« redirigjohen nĂ« burimet e dhĂ«nave. Analogjia mĂ« e afĂ«rt me burimet diskless Ă«shtĂ« iSCSI LUN.

Çdo burim DRBD mund tĂ« ketĂ« deri nĂ« 8 replika, dhe vetĂ«m njĂ« prej tyre mund tĂ« jetĂ« aktiv nga default — Kryesor, tĂ« gjitha tĂ« tjera do tĂ« jenĂ« Sekondar dhe pĂ«rdorimi i tyre do tĂ« jetĂ« i pamundur derisa tĂ« ketĂ« tĂ« paktĂ«n njĂ« Kryesor, domethĂ«nĂ« ato thjesht do tĂ« riplikojnĂ« tĂ« dhĂ«nat mes tyre.

Duke montuar pajisjen DRBD në sistem, ajo automatikisht bëhet Kryesor, kështu që madje edhe burimi Diskless, sipas terminologjisë DRBD, mund të jetë Kryesor.

Pse na nevojitet Linstor?

Duke i besuar të gjitha detyrat që kërkojnë burime bërthamës, Linstor në thelb është një aplikacion Java i zakonshëm që mundëson automatizimin e lehtë të krijimit të burimeve DRBD.
Çdo burim i krijuar do tĂ« pĂ«rfaqĂ«sojĂ« njĂ« klasĂ«r DRBD tĂ« pavarur, i cili funksionon nĂ« mĂ«nyrĂ« autonome, pavarĂ«sisht nga gjendja e control-plane dhe burimeve tĂ« tjera DRBD.

Linstor përbëhet vetëm nga dy komponentë:

  • Linstor-controller — Kontrolluesi kryesor, i cili ofron njĂ« API pĂ«r krijimin dhe menaxhimin e burimeve. Ai gjithashtu komunikon 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. Aktivizohet nĂ« njĂ« njĂ«si 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 nodet e ruajtjes dhe ofron informacion pĂ«r kontrolluesin mbi hapĂ«sirĂ«n e lirĂ«, si dhe kryen detyra tĂ« marra nga kontrolluesi pĂ«r krijimin dhe fshirjen e volumeve tĂ« rinj dhe paisjeve DRBD mbi ta.

Linstor operon me konceptet kyçe të mëposhtme:

  • Node — Serveri fizik, nĂ« tĂ« cilin do tĂ« krijohen dhe pĂ«rdoren burimet DRBD.
  • Storage Pool — NjĂ« rezervuar LVM ose ZFS, i krijuar nĂ« nodin ku do tĂ« vendosen burimet DRBD. Gjithashtu Ă«shtĂ« e mundur njĂ« rezervuar pa disq tĂ« lĂ«vizshĂ«m — ky Ă«shtĂ« njĂ« rezervuar nĂ« tĂ« cilin do tĂ« vendosen vetĂ«m burimet pa disq.
  • Definimi i Burimeve — Definimi i burimeve, nĂ« thelb Ă«shtĂ« njĂ« prototip qĂ« pĂ«rshkruan emrin dhe tĂ« gjitha pronat e tij.
  • Definimi i Volumeve — Definimi i njĂ« volume. Çdo burim mund tĂ« pĂ«rbĂ«het nga disa volume, çdo volum duhet tĂ« ketĂ« njĂ« madhĂ«si.
  • Burim — NjĂ« instancĂ« e krijuar e njĂ« pajisjeje bllokuese, çdo burim duhet tĂ« vendoset nĂ« njĂ« nodĂ« tĂ« caktuar dhe nĂ« njĂ« storage pool.

Instalimi i Linstor

Si sistem rekomandoj të përdorni Ubuntu, pasi 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 depozita 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-nodet

Në këtë moment, në bërthamën Linux po ofrohet moduli in-tree DRBD8, fatkeqësisht ai nuk na përshtatet dhe na nevojitet të instalojmë DRBD9:

apt-get install drbd-dkms

Siç tregon praktika, shumica e vështirësive ndodhin pikërisht për shkak se në sistem është ngarkuar moduli DRBD8, dhe jo DRBD9. Për fat të mirë, kjo është lehtë për t'u verifikuar 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 shkoi keq dhe ju nevojitet tĂ« merrni masa tĂ« mĂ«tejshme pĂ«r tĂ« pĂ«rcaktuar arsyet.

Tani do të instalojmë linstor-satellite dhe drbd-utils:

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

Krijimi i klasterit

Grupet e ruajtjes dhe nodet

Si një backend do të marrim ThinLVM, pasi është më e thjeshtë dhe mbështet snapshot-et.
Instaloni lvm2, nëse nuk e keni bërë akoma, dhe le të krijojmë një ThinLVM pool në të gjitha nodet tona të ruajtjes:

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

Të gjitha veprimet në vazhdim mund të kryhen direkt në kontrollues:

Do të shtojmë nodet 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ë grupet e ruajtjes:

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 do të kontrollojmë grupet e krijuara:

linstor storage-pool list

Nëse gjithçka është bërë siç duhet, duhet të shohim diçka si:

+-------------------------------------------------------------------------------------------------------+
| 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! — shohim qĂ« burimi Ă«shtĂ« krijuar nĂ« dy nodet e para, gjithashtu mund tĂ« provojmĂ« tĂ« krijojmĂ« njĂ« resurs pa disk nĂ« nodin e tretĂ«:

linstor resource create --diskless node3 myres

Në nyje gjithmonë do të gjeni këtë pajisje si /dev/drbd1084 ose /dev/drbd/by-res/myres/0

Kështu funksionon Linstor, mund të merrni më shumë informacion nga dokumenti zyrtar.

Tani do t'ju tregoj se si ta integroj me OpenNebula

Konfigurimi i OpenNebula

Nuk do të thellohem shumë në procesin e konfigurimit të OpenNebula, pasi të gjitha hapat janë përshkruar në detaje në dokumenti zyrtar, për të cilën rekomandoj të konsultoheni, do të flas vetëm për integrimin e OpenNebula me Linstor.

linstor_un

PĂ«r zgjidhjen e kĂ«tij problemi kam shkruar njĂ« drejtues tĂ« vetin — linstor_un, aktualisht ai Ă«shtĂ« nĂ« dispozicion si njĂ« plug-in dhe duhet instaluar ndaras.

E gjithë instalimi bëhet në frontend të nyjeve OpenNebula dhe nuk kërkon veprime shtesë në nyjet e kompjutimit.

Së pari, na nevojitet të sigurohemi që kemi jq dhe linstor-client:

apt-get install jq linstor-client

Ekipa linstor node list duhet të tregojë listën e nyjeve. Të gjitha nyjet e kompjutimit OpenNebula duhet të jenë të shtuar në klasterin Linstor.

Do të shkarkojmë dhe instalojmë plug-in-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 na duhet ta shtojmë atë në konfigurimin OpenNebula, për këtë kryejmë disa hapa të thjeshtë të përshkruar këtu.

Pasi të përfundojmë, do ta rimbushim OpenNebula:

systemctl restart opennebula

Dhe do të shtojmë datastore-t tona, sistemin:

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 depoja 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 replicave tĂ« tĂ« dhĂ«nave qĂ« do tĂ« krijohen pĂ«r çdo imazh tĂ« ri nĂ« OpenNebula.
  • Parametri CLONE_MODE tregon se si do tĂ« klonohen imazhet kur krijohen makina virtuale tĂ« reja, snapshot do tĂ« krijojĂ« njĂ« snapshot tĂ« imazhit dhe nga snapshot do tĂ« zhvillohet makina virtuale, copy — do tĂ« bĂ«jĂ« njĂ« kopje tĂ« plotĂ« tĂ« imazhit pĂ«r çdo makinĂ« virtuale.
  • NĂ« BRIDGE_LIST Ă«shtĂ« rekomanduar tĂ« specifikoni tĂ« gjitha nodet qĂ« do tĂ« pĂ«rdoren pĂ«r tĂ« kryer operacionet e klonimit tĂ« imazheve.

Lista e plotë e parametrave të mbështetur është e përfshirë në README projektit.

Me këtë, konfigurimi përfundon, tani mund të ngarkohet ndonjë appliance nga zyrtarja OpenNebula Marketplace dhe të krijoni makinat virtuale nga ajo.

Linku për projektin:
https://github.com/OpenNebula/addon-linstor_un

Burimi: habr.com

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