LINSTOR պահեստավորումը և դրա ինտեգրումը OpenNebula-ի հետ

LINSTOR պահեստավորումը և դրա ինտեգրումը OpenNebula-ի հետ

Ոչ վաղ անցյալում LINBIT-ի տղաները ներկայացրեցին իրենց նոր SDS լուծումը՝ Linstor-ը։ Սա լիովին անվճար պահեստ է, որը հիմնված է ապացուցված տեխնոլոգիաների վրա՝ DRBD, LVM, ZFS: Linstor-ը համատեղում է պարզությունն ու լավ մշակված ճարտարապետությունը, ինչը թույլ է տալիս հասնել կայունության և բավականին տպավորիչ արդյունքների։

Այսօր ես կցանկանայի մի փոքր ավելի մանրամասն խոսել դրա մասին և ցույց տալ, թե որքան հեշտությամբ այն կարող է ինտեգրվել OpenNebula-ի հետ՝ օգտագործելով linstor_un-ը՝ նոր դրայվեր, որը ես մշակել եմ հատուկ այս նպատակով:

Linstor-ը OpenNebula-ի հետ համատեղ թույլ է տալիս ստեղծել արագ և հուսալի ամպ, որը հեշտությամբ կարող է տեղակայվել ձեր սեփական ենթակառուցվածքում:

Լինստոր ճարտարապետություն

Linstor-ը ինքնին ոչ ֆայլային համակարգ է, ոչ էլ բլոկ պահեստավորում, Linstor-ը նվագախումբ է, որն ապահովում է աբստրակցիոն շերտ, որը թույլ է տալիս ավտոմատացնել ծավալների ստեղծումը LVM-ում կամ ZFS-ում և կրկնօրինակել դրանք՝ օգտագործելով DRBD9:

Կոտրել կարծրատիպերը

Բայց սպասիր, DRBD? - Ինչու՞ այն ավտոմատացնել և ինչպե՞ս կարող է այն նույնիսկ աշխատել:

Հիշենք անցյալը, երբ DRBD8-ը շատ տարածված էր: Դրա ստանդարտ օգտագործումը ներառում էր մեկ մեծ բլոկային սարքի ստեղծում և այն շատ փոքր կտորների կտրում, օգտագործելով նույն LVM-ը: Մի տեսակ mdadm RAID-1, բայց ցանցի միջոցով կրկնօրինակմամբ:

Այս մոտեցումը զերծ չէ իր թերություններից, և, հետևաբար, DRBD9-ի գալուստով փոխվել են պահեստավորման ձևավորման սկզբունքները, այժմ յուրաքանչյուր վիրտուալ մեքենայի համար ստեղծվում է առանձին DRBD սարք:

Անկախ բլոկ սարքերի հետ մոտեցումը թույլ է տալիս ավելի լավ օգտագործել տարածությունը կլաստերում, ինչպես նաև ավելացնում է մի շարք լրացուցիչ հնարավորություններ: Օրինակ, յուրաքանչյուր նման սարքի համար կարող եք որոշել կրկնօրինակների քանակը, դրանց գտնվելու վայրը և անհատական ​​կարգավորումները: Դրանք հեշտ է ստեղծել/ջնջել, լուսանկարել, չափափոխել, միացնել գաղտնագրումը և շատ ավելին: Հարկ է նշել, որ DRBD9-ն աջակցում է նաև քվորումին, ինչը թույլ է տալիս խուսափել ուղեղի պառակտման իրավիճակներից:

Ռեսուրսներ և հետին պլաններ

Նոր բլոկ սարք ստեղծելիս Linstor-ը տեղադրում է անհրաժեշտ թվով կրկնօրինակներ կլաստերի տարբեր հանգույցների վրա։ Մենք յուրաքանչյուր նման կրկնօրինակ կկոչենք DRBD ռեսուրս:

Կան երկու տեսակի ռեսուրսներ.

  • Տվյալների ռեսուրս — DRBD սարք են, որը տեղակայված է LVM կամ ZFS լողավազանի հանգույցի վրա:
    Այս պահին աջակցություն կա մի քանի backend-ների համար, և նրանց թիվը անընդհատ աճում է: Աջակցություն կա LVM-ի, ThinLVM-ի և ZFS-ի համար: Վերջին երկուսը թույլ են տալիս ստեղծել և օգտագործել snapshots:
  • Առանց սկավառակի ռեսուրս — DRBD սարք է, որը տեղադրված է առանց հետնամասի հանգույցի վրա, սակայն թույլ է տալիս այն դիտարկել որպես սովորական բլոկ սարք; կարդալու/գրելու բոլոր գործողությունները կվերահղվեն դեպի տվյալների ռեսուրսներ: Առանց սկավառակի ռեսուրսների ամենամոտ անալոգը iSCSI LUN-ն է:

Յուրաքանչյուր DRBD ռեսուրս կարող է ունենալ մինչև 8 կրկնօրինակ, և դրանցից միայն մեկը կարող է ակտիվ լինել լռելյայն. Հիմնական, մնացած բոլորը կլինեն Երկրորդական և դրանց օգտագործումը անհնար կլինի այնքան ժամանակ, քանի դեռ կա առնվազն մեկ Հիմնական, այսինքն՝ նրանք պարզապես կկրկնօրինակեն տվյալները իրենց միջև:

Տեղադրելով DRBD սարքը համակարգում, այն ավտոմատ կերպով դառնում է Հիմնական, հետևաբար նույնիսկ առանց սկավառակի ռեսուրսը, DRBD տերմինաբանությամբ, կարող է առաջնային լինել:

Այսպիսով, ինչո՞ւ է ձեզ անհրաժեշտ Linstor-ը:

Միջուկին վստահելով ռեսուրսներ ինտենսիվ բոլոր առաջադրանքները՝ Linstor-ը, ըստ էության, սովորական Java հավելված է, որը թույլ է տալիս հեշտությամբ ավտոմատացնել DRBD ռեսուրսների ստեղծումը:
Ավելին, նրա ստեղծած յուրաքանչյուր ռեսուրս կլինի անկախ DRBD կլաստեր, որը կգործի ինքնուրույն՝ անկախ կառավարման հարթության և այլ DRBD ռեսուրսների վիճակից։

Linstor-ը բաղկացած է ընդամենը երկու բաղադրիչից.

  • Linstor-վերահսկիչ - Հիմնական վերահսկիչ, որն ապահովում է API ռեսուրսների ստեղծման և կառավարման համար: Այն նաև շփվում է արբանյակների հետ՝ ստուգելով դրանց վրա ազատ տարածությունը և նոր ռեսուրսներ ստեղծելու և ջնջելու առաջադրանքներ է ուղարկում: Այն աշխատում է մեկ օրինակով և օգտագործում է տվյալների բազա, որը կարող է լինել ներքին (H2) կամ արտաքին (PostgreSQL, MySQL, MariaDB)
  • Լինսթոր-արբանյակ — Տեղադրված է բոլոր պահեստավորման հանգույցներում և վերահսկիչին տրամադրում է տեղեկատվություն ազատ տարածության մասին, ինչպես նաև կատարում է վերահսկիչից ստացված առաջադրանքներ՝ դրանց վերևում նոր ծավալներ և DRBD սարքեր ստեղծելու և ջնջելու համար:

Linstor-ը գործում է հետևյալ հիմնական հասկացություններով.

  • Հանգույց — ֆիզիկական սերվեր, որի վրա կստեղծվեն և կօգտագործվեն DRBD ռեսուրսները:
  • Պահեստային լողավազան — LVM կամ ZFS լողավազան, որը ստեղծվել է այն հանգույցի վրա, որտեղ կտեղակայվեն DRBD ռեսուրսները: Հնարավոր է նաև առանց սկավառակի լողավազան. սա լողավազան է, որտեղ կտեղակայվեն միայն առանց սկավառակի ռեսուրսները:
  • Ռեսուրսների սահմանում — Ռեսուրսի սահմանումը, ըստ էության, նախատիպ է, որը նկարագրում է անունը և դրա բոլոր հատկությունները:
  • Ծավալի սահմանում - Ծավալի սահմանում: Յուրաքանչյուր ռեսուրս կարող է բաղկացած լինել մի քանի հատորներից, յուրաքանչյուր հատոր պետք է ունենա չափ:
  • Ռեսուրսների — Բլոկային սարքի ստեղծված օրինակ, յուրաքանչյուր ռեսուրս պետք է տեղադրվի որոշակի հանգույցի վրա և պահեստավորման որոշ լողավազանում:

Linstor տեղադրում

Խորհուրդ եմ տալիս օգտագործել Ubuntu-ն որպես համակարգ, քանի որ... գոյություն ունի նրա համար պատրաստ ՀԺԿ:

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

Կամ Debian, որտեղ Linstor-ը կարող է տեղադրվել 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

Հատուկ արարիչ սարք

Ամեն ինչ պարզ է այստեղ:

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

Պահպանման հանգույցներ

Linux միջուկը ներկայումս առաքվում է ծառի միջուկի մոդուլով DRBD8, ցավոք դա մեզ չի սազում և պետք է տեղադրել DRBD9:

apt-get install drbd-dkms

Ինչպես ցույց է տալիս պրակտիկան, դժվարությունների մեծ մասն առաջանում է հենց այն պատճառով, որ DRBD8 մոդուլը բեռնված է համակարգում, և ոչ թե DRBD9: Բարեբախտաբար, դա հեշտ է ստուգել՝ վազելով.

modprobe drbd
cat /proc/drbd

Եթե ​​տեսնեք վարկած ՝ 9 - դա նշանակում է, որ ամեն ինչ լավ է, եթե վարկած ՝ 8 - դա նշանակում է, որ ինչ-որ բան սխալ է տեղի ունեցել, և դուք պետք է լրացուցիչ քայլեր ձեռնարկեք՝ պատճառները պարզելու համար:

Հիմա եկեք տեղադրենք linstor-արբանյակ и drbd-utils:

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

Ստեղծեք կլաստեր

Պահպանման լողավազաններ և հանգույցներ

Որպես backend մենք կվերցնենք ThinLVM, որովհետեւ դա ամենապարզն է և աջակցում է snapshots:
Տեղադրեք lvm2, եթե դեռ չեք արել, եկեք ստեղծենք ThinLVM լողավազան մեր բոլոր պահեստավորման հանգույցների վրա.

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

Բոլոր հետագա գործողությունները կարող են կատարվել անմիջապես վերահսկիչի վրա.

Եկեք ավելացնենք մեր հանգույցները.

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

Եկեք ստեղծենք պահեստային լողավազաններ.

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

Հիմա եկեք ստուգենք ստեղծված լողավազանները.

linstor storage-pool list

Եթե ​​ամեն ինչ ճիշտ է արված, ապա մենք պետք է տեսնենք նման բան.

+------------------------------------------------ -------------------------------------------------- ----+ | StoragePool | Հանգույց | Վարորդ | Լողավազանի անվանումը | Ազատ հզորություն | Ընդհանուր հզորություն | Աջակցում է Լուսանկարներ | |------------------------------------------------ ------------------------------------------------- ---| | տվյալներ | հանգույց1 | LVM_THIN | drbdpool/thinpool | 64 ԳԲ | 64 ԳԲ | ճշմարիտ | | տվյալներ | հանգույց2 | LVM_THIN | drbdpool/thinpool | 64 ԳԲ | 64 ԳԲ | ճշմարիտ | | տվյալներ | հանգույց3 | LVM_THIN | drbdpool/thinpool | 64 ԳԲ | 64 ԳԲ | ճշմարիտ | +------------------------------------------------ -------------------------------------------------- ----+

DRBD ռեսուրսներ

Հիմա եկեք փորձենք ստեղծել մեր նոր DRBD ռեսուրսը.

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

Եկեք ստուգենք ստեղծված ռեսուրսները.

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Հանգույց | Ռեսուրս | StoragePool | VolumeNr | Փոքր Nr | Սարքի անունը | Հատկացված | InUse | Պետական ​​| |------------------------------------------------ ------------------------------------------------- --| | հանգույց1 | միրես | տվյալներ | 0 | 1084 | /dev/drbd1084 | 52 ԿԲ | Չօգտագործված | UpToDate | | հանգույց2 | միրես | տվյալներ | 0 | 1084 | /dev/drbd1084 | 52 ԿԲ | Չօգտագործված | UpToDate | +------------------------------------------------ -------------------------------------------------- ---+

Հիանալի — մենք տեսնում ենք, որ ռեսուրսը ստեղծվել է առաջին երկու հանգույցների վրա, մենք կարող ենք նաև փորձել ստեղծել առանց սկավառակի ռեսուրս երրորդում.

linstor resource create --diskless node3 myres

Հանգույցներում դուք միշտ կգտնեք այս սարքը որպես /dev/drbd1084 կամ /dev/drbd/by-res/myres/0

Այսպես է աշխատում Linstor-ը, որից կարող եք լրացուցիչ տեղեկություններ ստանալ պաշտոնական փաստաթղթեր.

Այժմ ես ձեզ կասեմ, թե ինչպես այն ինտեգրել OpenNebula-ի հետ

OpenNebula-ի կարգավորում

Ես շատ չեմ խորանա OpenNebula-ի տեղադրման գործընթացում, քանի որ... բոլոր քայլերը մանրամասն նկարագրված են պաշտոնական փաստաթղթեր, որի հետ ես խորհուրդ եմ տալիս կապ հաստատել, ես ձեզ միայն կպատմեմ OpenNebula-ի Linstor-ի հետ ինտեգրման մասին:

linstor_un

Այս խնդիրը լուծելու համար ես գրել եմ իմ սեփական վարորդը. linstor_un, այն ներկայումս հասանելի է որպես plugin և պետք է տեղադրվի առանձին:

Ամբողջ տեղադրումն իրականացվում է Frontend OpenNebula հանգույցներում և չի պահանջում լրացուցիչ գործողություններ հաշվողական հանգույցների վրա:

Առաջին հերթին մենք պետք է համոզվենք, որ ունենք jq и linstor-հաճախորդ:

apt-get install jq linstor-client

Թիմ linstor node list պետք է ցուցադրի հանգույցների ցանկը: OpenNebula-ի բոլոր հաշվողական հանգույցները պետք է ավելացվեն Linstor կլաստերին:

Ներբեռնեք և տեղադրեք հավելվածը.

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

Այժմ մենք պետք է այն ավելացնենք OpenNebula կազմաձևում, դա անելու համար մենք հետևում ենք նկարագրված պարզ քայլերին այստեղ.

Այնուհետև վերագործարկեք OpenNebula-ն.

systemctl restart opennebula

Եվ ավելացրեք մեր տվյալների պահեստները, համակարգը.

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

Եվ պատկերների խանութը.

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 ցուցադրում է տվյալների կրկնօրինակների քանակը, որոնք կստեղծվեն OpenNebula-ում յուրաքանչյուր նոր պատկերի համար:
  • Parameter CLONE_MODE ցույց է տալիս, թե ինչպես են պատկերները կլոնավորվելու նոր վիրտուալ մեքենաներ ստեղծելիս, snapshot — կստեղծի պատկերի պատկերը և կտեղադրի վիրտուալ մեքենա այդ պատկերից, copy — յուրաքանչյուր վիրտուալ մեքենայի համար կպատրաստի պատկերի ամբողջական պատճենը:
  • В BRIDGE_LIST Խորհուրդ է տրվում նշել բոլոր հանգույցները, որոնք կօգտագործվեն պատկերների կլոնավորման գործողություններ կատարելու համար:

Աջակցվող պարամետրերի ամբողջական ցանկի համար տե՛ս առաջնային նախագիծը:

Սա ավարտում է կարգավորումը, այժմ դուք կարող եք ներբեռնել որոշ սարքավորում պաշտոնականից OpenNebula շուկա և դրանից ստեղծել վիրտուալ մեքենաներ:

Ծրագրի հղում.
https://github.com/OpenNebula/addon-linstor_un

Source: www.habr.com

Добавить комментарий