Hifadhi ya LINSTOR na ujumuishaji wake na OpenNebula

Hifadhi ya LINSTOR na ujumuishaji wake na OpenNebula

Sio muda mrefu uliopita, wavulana kutoka LINBIT waliwasilisha suluhisho lao jipya la SDS - Linstor. Hii ni hifadhi ya bure kabisa kulingana na teknolojia zilizothibitishwa: DRBD, LVM, ZFS. Linstor inachanganya unyenyekevu na usanifu iliyoundwa vizuri, ambayo inakuwezesha kufikia utulivu na matokeo ya kuvutia kabisa.

Leo ningependa kuizungumzia kwa undani zaidi na kuonyesha jinsi inavyoweza kuunganishwa kwa urahisi na OpenNebula kwa kutumia linstor_un - kiendeshi kipya ambacho nilitengeneza mahsusi kwa kusudi hili.

Linstor pamoja na OpenNebula hukuruhusu kuunda wingu la haraka na la kuaminika ambalo linaweza kutumwa kwa urahisi kwenye miundombinu yako mwenyewe.

Usanifu wa Linstor

Linstor sio mfumo wa faili wala uhifadhi wa kuzuia kwa kila sekunde, Linstor ni orchestrator ambayo hutoa safu ya uondoaji ambayo hukuruhusu kubinafsisha uundaji wa kiasi katika LVM au ZFS na kuiga tena kwa kutumia DRBD9.

Kuvunja mila potofu

Lakini subiri, DRBD? - Kwa nini kuifanya otomatiki na inawezaje kufanya kazi?

Hebu tukumbuke siku za nyuma, wakati DRBD8 ilikuwa maarufu sana. Matumizi yake ya kawaida yalihusisha kuunda kifaa kimoja kikubwa cha kuzuia na kukata vipande vidogo vingi, kwa kutumia LVM sawa. Aina ya mdadm RAID-1 lakini yenye urudufishaji kwenye mtandao.

Njia hii sio bila shida zake, na kwa hivyo, pamoja na ujio wa DRBD9, kanuni za muundo wa uhifadhi zimebadilika; sasa kifaa tofauti cha DRBD kimeundwa kwa kila mashine ya kawaida.

Mbinu na vifaa vya kuzuia huru inaruhusu matumizi bora ya nafasi katika nguzo, na pia huongeza idadi ya vipengele vya ziada. Kwa mfano, kwa kila kifaa kama hicho unaweza kuamua idadi ya nakala, eneo lao na mipangilio ya mtu binafsi. Ni rahisi kuunda/kufuta, kupiga picha, kurekebisha ukubwa, kuwezesha usimbaji fiche na mengi zaidi. Inafaa kumbuka kuwa DRBD9 pia inasaidia akidi, ambayo hukuruhusu kuzuia hali za mgawanyiko wa ubongo.

Rasilimali na backends

Wakati wa kuunda kifaa kipya cha kuzuia, Linstor huweka nambari inayohitajika ya nakala kwenye nodi tofauti kwenye nguzo. Tutaita kila nakala kama hii rasilimali ya DRBD.

Kuna aina mbili za rasilimali:

  • Rasilimali ya data - ni kifaa cha DRBD kilicho kwenye nodi kwenye bwawa la LVM au ZFS.
    Kwa sasa kuna msaada kwa backends kadhaa na idadi yao inakua mara kwa mara. Kuna msaada kwa LVM, ThinLVM na ZFS. Mbili za mwisho hukuruhusu kuunda na kutumia snapshots.
  • Rasilimali isiyo na diski - ni kifaa cha DRBD kilichowekwa kwenye nodi bila sehemu ya nyuma, lakini kikiruhusu kushughulikiwa kama kifaa cha kawaida cha kuzuia; shughuli zote za kusoma/kuandika zitaelekezwa kwenye rasilimali za data. Analog ya karibu zaidi na rasilimali zisizo na diski ni iSCSI LUN.

Kila rasilimali ya DRBD inaweza kuwa na nakala 8, na moja tu kati yao inaweza kuwa hai kwa chaguo-msingi - Msingi, kila mtu mwingine atakuwa Sekondari na matumizi yao hayatawezekana maadamu kuna angalau Msingi mmoja, yaani, wataiga data kati yao wenyewe.

Kwa kusakinisha kifaa cha DRBD kwenye mfumo, kinakuwa kiotomatiki Msingi, kwa hivyo hata rasilimali isiyo na Diski, katika istilahi ya DRBD, inaweza kuwa Msingi.

Kwa hivyo kwa nini unahitaji Linstor?

Kwa kukabidhi kazi zote zinazohitaji rasilimali nyingi kwa kernel, Linstor kimsingi ni programu ya kawaida ya Java ambayo hukuruhusu kubinafsisha uundaji wa rasilimali za DRBD kwa urahisi.
Zaidi ya hayo, kila rasilimali iliyoundwa na yeye itakuwa nguzo huru ya DRBD ambayo inafanya kazi kwa kujitegemea, bila kujali hali ya ndege ya udhibiti na rasilimali nyingine za DRBD.

Linstor ina sehemu mbili tu:

  • Linstor-mtawala - Kidhibiti kikuu, ambacho hutoa API ya kuunda na kusimamia rasilimali. Pia huwasiliana na satelaiti, kuangalia nafasi ya bure juu yao, na kutuma kazi za kuunda na kufuta rasilimali mpya. Inaendesha kwa mfano mmoja na hutumia hifadhidata, ambayo inaweza kuwa ya ndani (H2) au ya nje (PostgreSQL, MySQL, MariaDB)
  • Linstor-satellite - Imewekwa kwenye nodi zote za hifadhi na hutoa kidhibiti taarifa kuhusu nafasi ya bure, na pia hufanya kazi zilizopokelewa kutoka kwa kidhibiti ili kuunda na kufuta kiasi kipya na vifaa vya DRBD juu yao.

Linstor inafanya kazi na dhana kuu zifuatazo:

  • Node - seva halisi ambayo rasilimali za DRBD zitaundwa na kutumika.
  • Dimbwi la Kuhifadhi - Dimbwi la LVM au ZFS limeundwa kwenye nodi ambayo rasilimali za DRBD zitapatikana. Dimbwi la diski pia linawezekana - hii ni dimbwi ambalo rasilimali zisizo na diski zitapatikana.
  • Ufafanuzi wa Rasilimali - Ufafanuzi wa rasilimali kimsingi ni mfano unaoelezea jina na sifa zake zote.
  • Ufafanuzi wa Kiasi - Ufafanuzi wa sauti. Kila rasilimali inaweza kujumuisha juzuu nyingi, kila ujazo lazima uwe na saizi.
  • Rasilimali - Mfano ulioundwa wa kifaa cha kuzuia, kila rasilimali lazima iwekwe kwenye nodi maalum na kwenye bwawa la kuhifadhi.

Ufungaji wa Linstor

Ninapendekeza kutumia Ubuntu kama mfumo, kwa sababu ... ipo kwa ajili yake tayari PPA:

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

Au Debian, ambapo Linstor inaweza kusanikishwa kutoka kwa hazina rasmi ya 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

Mdhibiti

Kila kitu ni rahisi hapa:

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

Node za kuhifadhi

Linux kernel kwa sasa inasafirishwa na moduli ya kernel ya ndani ya mti DRBD8, kwa bahati mbaya haifai sisi na tunahitaji kufunga DRBD9:

apt-get install drbd-dkms

Kama inavyoonyesha mazoezi, matatizo mengi hutokea kwa usahihi kwa sababu moduli ya DRBD8 imepakiwa kwenye mfumo, na si DRBD9. Kwa bahati nzuri, hii ni rahisi kuangalia kwa kukimbia:

modprobe drbd
cat /proc/drbd

Ukiona toleo: 9 - ina maana kila kitu ni sawa ikiwa toleo: 8 - inamaanisha kuwa kuna kitu kilienda vibaya na unahitaji kuchukua hatua za ziada ili kujua sababu.

Sasa hebu tusakinishe linstor-satellite ΠΈ matumizi ya drbd:

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

Unda nguzo

Mabwawa ya kuhifadhi na nodi

Kama backend tutachukua ThinLVM, kwa sababu ni rahisi zaidi na inasaidia snapshots.
Weka lvm2, ikiwa bado hujafanya hivyo, wacha tuunde kidimbwi cha ThinLVM kwenye nodi zetu zote za uhifadhi:

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

Vitendo vyote zaidi vinaweza kufanywa moja kwa moja kwenye kidhibiti:

Wacha tuongeze nodi zetu:

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

Wacha tuunda mabwawa ya kuhifadhi:

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

Sasa hebu tuangalie mabwawa yaliyoundwa:

linstor storage-pool list

Ikiwa kila kitu kimefanywa kwa usahihi, basi tunapaswa kuona kitu kama:

+----------------------------------------------- ----------------------------------------------- ----+ | Dimbwi la Kuhifadhi | Nodi | Dereva | Jina la Dimbwi | Uwezo Huru | Jumla ya Uwezo | InasaidiaPicha | |--------------------------------------------- - ---------------------------------------------- - ---| | data | nodi1 | LVM_THIN | drbdpool/thinpool | GiB 64 | GiB 64 | kweli | | data | nodi 2 | LVM_THIN | drbdpool/thinpool | GiB 64 | GiB 64 | kweli | | data | nodi 3 | LVM_THIN | drbdpool/thinpool | GiB 64 | GiB 64 | kweli | +----------------------------------------------- ----------------------------------------------- ----+

Rasilimali za DRBD

Sasa hebu tujaribu kuunda rasilimali yetu mpya ya DRBD:

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

Wacha tuangalie rasilimali iliyoundwa:

linstor resource list 

+----------------------------------------------- ----------------------------------------------- ---+ | Nodi | Nyenzo | Dimbwi la Kuhifadhi | KiasiNr | NdogoNr | Jina la Kifaa | Imetengwa | Tumia | Jimbo | |--------------------------------------------- - ---------------------------------------------- - --| | nodi1 | yangu | data | 0 | 1084 | /dev/drbd1084 | 52KiB | Isiyotumika | Sasisho | | nodi 2 | yangu | data | 0 | 1084 | /dev/drbd1084 | 52KiB | Isiyotumika | Sasisha | +----------------------------------------------- ----------------------------------------------- ---+

Kubwa! - tunaona kwamba rasilimali iliundwa kwenye nodi mbili za kwanza, tunaweza pia kujaribu kuunda rasilimali isiyo na diski kwenye ya tatu:

linstor resource create --diskless node3 myres

Kwenye nodi kila wakati utapata kifaa hiki kama /dev/drbd1084 au /dev/drbd/by-res/myres/0

Hivi ndivyo Linstor inavyofanya kazi, unaweza kupata habari zaidi kutoka nyaraka rasmi.

Sasa nitakuambia jinsi ya kuiunganisha na OpenNebula

Kuanzisha OpenNebula

Sitaingia sana katika mchakato wa usanidi wa OpenNebula, kwa sababu ... hatua zote zimeelezewa kwa kina nyaraka rasmi, ambayo ninapendekeza uwasiliane nayo, nitakuambia tu kuhusu ushirikiano wa OpenNebula na Linstor.

linstor_un

Ili kutatua shida hii, niliandika dereva wangu mwenyewe - linstor_un, kwa sasa inapatikana kama programu-jalizi na lazima isakinishwe kando.

Ufungaji mzima unafanywa kwenye sehemu za mbele za OpenNebula na hauhitaji vitendo vya ziada kwenye nodi za kukokotoa.

Kwanza kabisa, tunahitaji kuhakikisha kwamba tuna jq ΠΈ linstor-mteja:

apt-get install jq linstor-client

Timu linstor node list inapaswa kuonyesha orodha ya nodi. Nodi zote za kokotoo za OpenNebula lazima ziongezwe kwenye nguzo ya Linstor.

Pakua na usakinishe programu-jalizi:

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

Sasa tunahitaji kuiongeza kwenye usanidi wa OpenNebula, ili kufanya hivyo tunafuata hatua rahisi zilizoelezwa hapa.

Kisha anza tena OpenNebula:

systemctl restart opennebula

Na ongeza hifadhi zetu za data, mfumo:

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

Na duka la picha:

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

  • Parameter AUTO_PLACE huonyesha idadi ya nakala za data ambazo zitaundwa kwa kila picha mpya katika OpenNebula.
  • Parameter CLONE_MODE inaonyesha jinsi picha zitakavyoundwa wakati wa kuunda mashine mpya za mtandaoni, snapshot - itaunda picha ya picha na kupeleka mashine ya kawaida kutoka kwa picha ndogo, copy - itafanya nakala kamili ya picha kwa kila mashine pepe.
  • Π’ BRIDGE_LIST Inashauriwa kutaja nodes zote ambazo zitatumika kufanya shughuli za cloning picha.

Kwa orodha kamili ya vigezo vinavyotumika, ona README mradi.

Hii inakamilisha usanidi, sasa unaweza kupakua kifaa kutoka kwa afisa Soko la OpenNebula na uunda mashine pepe kutoka kwayo.

Kiungo cha mradi:
https://github.com/OpenNebula/addon-linstor_un

Chanzo: mapenzi.com

Kuongeza maoni