Depo LINSTOR ak entegrasyon li ak OpenNebula

Depo LINSTOR ak entegrasyon li ak OpenNebula

Pa gen lontan, mesye yo ki soti nan LINBIT prezante nouvo solisyon SDS yo - Linstor. Sa a se yon depo konplètman gratis ki baze sou teknoloji pwouve: DRBD, LVM, ZFS. Linstor konbine senplisite ak achitekti ki byen fèt, ki pèmèt ou reyalize estabilite ak rezilta byen enpresyonan.

Jodi a mwen ta renmen pale sou li nan yon ti kras plis detay epi montre kouman li fasil pou entegre ak OpenNebula lè l sèvi avèk linstor_un - yon nouvo chofè ke mwen devlope espesyalman pou objektif sa a.

Linstor an konbinezon ak OpenNebula pèmèt ou bati yon nwaj rapid ak serye ki ka fasilman deplwaye sou pwòp enfrastrikti ou.

Achitekti Linstor

Linstor se pa ni yon sistèm fichye ni yon depo blòk poukont li, Linstor se yon orchestrator ki bay yon kouch abstraksyon ki pèmèt ou otomatize kreyasyon volim nan LVM oswa ZFS epi replike yo lè l sèvi avèk DRBD9.

Kraze estereyotip

Men tann, DRBD? — Poukisa otomatize li ak ki jan li ka menm travay?

Ann sonje tan lontan an, lè DRBD8 te trè popilè. Itilizasyon estanda li yo enplike kreye yon sèl gwo aparèy blòk epi koupe li an anpil ti moso, lè l sèvi avèk menm LVM la. Yon kalite mdadm RAID-1 men ak replikasyon sou rezo a.

Apwòch sa a se pa san dezavantaj li yo, ak Se poutèt sa, ak avenman nan DRBD9, prensip yo nan konsepsyon depo yo te chanje; kounye a yo kreye yon aparèy DRBD separe pou chak machin vityèl.

Apwòch la ak aparèy blòk endepandan pèmèt pou pi bon itilizasyon espas nan gwoup la, epi tou li ajoute yon kantite karakteristik adisyonèl. Pou egzanp, pou chak aparèy sa yo ou ka detèmine kantite kopi, kote yo ak anviwònman endividyèl yo. Yo fasil pou kreye / efase, pran snapshots, redimansyonman, pèmèt chifreman ak plis ankò. Li enpòtan pou remake ke DRBD9 sipòte kowòm tou, ki pèmèt ou evite sitiyasyon fann nan sèvo.

Resous ak backends

Lè w ap kreye yon nouvo aparèy blòk, Linstor mete kantite kopi ki nesesè yo sou diferan nœuds nan gwoup la. Nou pral rele chak kopi sa yo yon resous DRBD.

Gen de kalite resous:

  • Resous done — se yon aparèy DRBD ki chita sou yon ne nan yon pisin LVM oswa ZFS.
    Nan moman sa a gen sipò pou plizyè backend ak nimewo yo toujou ap grandi. Gen sipò pou LVM, ThinLVM ak ZFS. De dènye yo pèmèt ou kreye epi sèvi ak snapshots.
  • Diskless resous — se yon aparèy DRBD ki mete sou yon nod san yon backend, men ki pèmèt yo trete li kòm yon aparèy blòk regilye; tout operasyon lekti/ekri yo pral redireksyon sou resous done yo. Analòg ki pi pre a resous diskless se iSCSI LUN.

Chak resous DRBD ka gen jiska 8 kopi, epi sèlman youn nan yo ka aktif pa default - Primè, tout lòt moun yo pral Segondè epi itilizasyon yo pral enposib osi lontan ke gen omwen yon Prensipal, se sa ki, yo pral tou senpleman repwodui done ant yo.

Lè w enstale yon aparèy DRBD nan sistèm lan, li vin otomatikman Primè, kidonk menm yon resous Diskless, nan tèminoloji DRBD, ka Prensipal.

Se konsa, poukisa ou bezwen Linstor?

Lè ou konfye tout travay ki gen anpil resous nan nwayo a, Linstor se esansyèlman yon aplikasyon Java regilye ki pèmèt ou otomatize fasilman kreyasyon resous DRBD yo.
Anplis, chak resous li kreye yo pral yon gwoup DRBD endepandan ki opere poukont yo, kèlkeswa eta avyon kontwòl la ak lòt resous DRBD yo.

Linstor konsiste de sèlman de eleman:

  • Linstor-kontwolè - Kontwolè prensipal la, ki bay yon API pou kreye ak jere resous yo. Li tou kominike ak satelit yo, tcheke espas gratis sou yo, epi voye travay yo kreye ak efase nouvo resous. Li kouri nan yon sèl egzanp epi sèvi ak yon baz done, ki ka swa entèn (H2) oswa ekstèn (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelit — Enstale sou tout nœuds depo epi li bay kontwolè a enfòmasyon sou espas gratis, epi tou li fè travay yo resevwa nan men kontwolè a pou kreye ak efase nouvo volim ak aparèy DRBD sou tèt yo.

Linstor opere ak konsèp kle sa yo:

  • Node — yon sèvè fizik sou ki resous DRBD yo pral kreye ak itilize.
  • Depo pisin — LVM oswa ZFS pisin ki te kreye sou ne kote resous DRBD yo pral lokalize. Yon pisin diskless posib tou - sa a se yon pisin kote sèlman resous diskless yo pral lokalize.
  • Definisyon Resous — Definisyon yon resous se esansyèlman yon pwototip ki dekri non an ak tout pwopriyete li yo.
  • Definisyon Volim — Definisyon volim. Chak resous ka konpoze de volim miltip, chak volim dwe gen yon gwosè.
  • Resous — Yon egzanp kreye nan yon aparèy blòk, yo dwe mete chak resous sou yon ne espesifik ak nan kèk pisin depo.

Linstor enstalasyon

Mwen rekòmande pou itilize Ubuntu kòm yon sistèm, paske... egziste pou li pare PPA:

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

Oswa Debian, kote Linstor ka enstale nan depo ofisyèl la pou 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

Kontwolè

Tout bagay se senp isit la:

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

Depo nœuds

Kernel Linux la kounye a bato ak yon modil nwayo nan pye bwa DRBD8, malerezman li pa kostim nou epi nou bezwen enstale DRBD9:

apt-get install drbd-dkms

Kòm pratik montre, pifò difikilte rive jisteman paske modil DRBD8 chaje nan sistèm nan, epi li pa DRBD9. Erezman, sa a se fasil tcheke lè w kouri:

modprobe drbd
cat /proc/drbd

Si ou wè vèsyon: 9 - sa vle di tout bagay anfòm si vèsyon: 8 - sa vle di yon bagay ale mal epi ou bezwen pran etap adisyonèl pou chèche konnen rezon ki fè yo.

Koulye a, kite a enstale linstor-satelit и drbd-utils:

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

Kreye yon grap

Depo pisin ak nœuds

Kòm yon backend nou pral pran ThinLVM, paske li se pi senp lan epi li sipòte snapshots.
Mete lvm2, si ou poko fè sa, ann kreye yon pisin ThinLVM sou tout nœuds depo nou yo:

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

Tout lòt aksyon yo ka fèt dirèkteman sou kontwolè a:

Ann ajoute nœuds nou yo:

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

Ann kreye pisin depo:

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

Koulye a, ann tcheke pisin yo kreye:

linstor storage-pool list

Si tout bagay fèt kòrèkteman, Lè sa a, nou ta dwe wè yon bagay tankou:

+------------------------------------------------ ------------------------------------------------- ----+ | DepoPool | Ne | Chofè | PoolName | Kapasite gratis | TotalCapacity | Sipòte Snapshots | |------------------------------------------------ ------------------------------------------------ ---| | done | ne1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | vre | | done | ne2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | vre | | done | ne3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | vre | +------------------------------------------------ ------------------------------------------------- ----+

Resous DRBD

Koulye a, ann eseye kreye nouvo resous DRBD nou an:

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

Ann tcheke resous ki kreye yo:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+ | Ne | Resous | DepoPool | VolimNr | MinorNr | DeviceName | Atribye ba | InUse | Eta | |------------------------------------------------ ------------------------------------------------ --| | ne1 | myres | done | 0 | 1084 | /dev/drbd1084 | 52 KiB | Pa itilize | Ajou | | ne2 | myres | done | 0 | 1084 | /dev/drbd1084 | 52 KiB | Pa itilize | Ajou | +------------------------------------------------ ------------------------------------------------- ---+

Gwo! - nou wè ke resous la te kreye sou de premye nœuds yo, nou ka eseye tou kreye yon resous diskless sou twazyèm lan:

linstor resource create --diskless node3 myres

Sou nœuds w ap toujou jwenn aparèy sa a kòm /dev/drbd1084 oswa /dev/drbd/by-res/myres/0

Men ki jan Linstor travay, ou ka jwenn plis enfòmasyon nan dokiman ofisyèl yo.

Koulye a, mwen pral di w ki jan yo entegre li ak OpenNebula

Mete kanpe OpenNebula

Mwen pa pral twò fon nan pwosesis konfigirasyon OpenNebula la, paske... tout etap yo dekri an detay nan dokiman ofisyèl yo, ki mwen rekòmande ou kontakte, mwen pral sèlman di ou sou entegrasyon an nan OpenNebula ak Linstor.

linstor_un

Pou rezoud pwoblèm sa a, mwen te ekri pwòp chofè mwen an - linstor_un, li disponib kounye a kòm yon plugin epi yo dwe enstale separeman.

Tout enstalasyon an fèt sou nœuds OpenNebula yo epi li pa mande pou lòt aksyon sou nœuds kalkile yo.

Premyerman, nou bezwen fer sir ki nou annan jq и linstor-kliyan:

apt-get install jq linstor-client

Ekip linstor node list ta dwe montre yon lis nœuds. Tout nœuds kalkile OpenNebula yo dwe ajoute nan gwoup Linstor la.

Telechaje epi enstale Plugin la:

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

Koulye a, nou bezwen ajoute li nan konfigirasyon OpenNebula la, pou fè sa nou swiv etap ki senp yo dekri isit la.

Lè sa a, rekòmanse OpenNebula:

systemctl restart opennebula

Epi ajoute datastores nou yo, sistèm:

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

Ak magazen imaj la:

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

  • Paramèt AUTO_PLACE montre kantite kopi done yo pral kreye pou chak nouvo imaj nan OpenNebula.
  • Paramèt CLONE_MODE endike egzakteman ki jan imaj yo pral klonaj lè yo kreye nouvo machin vityèl, snapshot — pral kreye yon snapshot nan imaj la epi deplwaye yon machin vityèl soti nan snapshot la, copy — pral fè yon kopi konplè imaj la pou chak machin vityèl.
  • В BRIDGE_LIST Li rekòmande pou presize tout nœuds ki pral itilize pou fè operasyon klonaj imaj.

Pou yon lis konplè paramèt sipòte, gade README pwojè.

Sa a konplete konfigirasyon an, kounye a ou ka telechaje kèk aparèy soti nan ofisyèl la OpenNebula Marketplace epi kreye machin vityèl nan li.

Lyen pwojè:
https://github.com/OpenNebula/addon-linstor_un

Sous: www.habr.com

Add nouvo kòmantè