Ոչ վաղ անցյալում 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-ի տեղադրման գործընթացում, քանի որ... բոլոր քայլերը մանրամասն նկարագրված են
linstor_un
Այս խնդիրը լուծելու համար ես գրել եմ իմ սեփական վարորդը.
Ամբողջ տեղադրումն իրականացվում է 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
Խորհուրդ է տրվում նշել բոլոր հանգույցները, որոնք կօգտագործվեն պատկերների կլոնավորման գործողություններ կատարելու համար:
Աջակցվող պարամետրերի ամբողջական ցանկի համար տե՛ս
Սա ավարտում է կարգավորումը, այժմ դուք կարող եք ներբեռնել որոշ սարքավորում պաշտոնականից
Ծրագրի հղում.
Source: www.habr.com