Pirms neilga laika puiÅ”i no LINBIT prezentÄja savu jauno SDS risinÄjumu - Linstor. Å Ä« ir pilnÄ«gi bezmaksas krÄtuve, kuras pamatÄ ir pÄrbaudÄ«tas tehnoloÄ£ijas: DRBD, LVM, ZFS. Linstor apvieno vienkÄrŔību un labi izstrÄdÄtu arhitektÅ«ru, kas ļauj sasniegt stabilitÄti un diezgan iespaidÄ«gus rezultÄtus.
Å odien es vÄlÄtos par to runÄt nedaudz sÄ«kÄk un parÄdÄ«t, cik viegli to var integrÄt ar OpenNebula, izmantojot linstor_un - jaunu draiveri, kuru es izstrÄdÄju Ä«paÅ”i Å”im nolÅ«kam.
Linstor apvienojumÄ ar OpenNebula ļauj izveidot Ätru un uzticamu mÄkoni, ko var viegli izvietot savÄ infrastruktÅ«rÄ.
Linstor arhitektūra
Linstor pati par sevi nav ne failu sistÄma, ne bloku krÄtuve, Linstor ir orÄ·estrÄtÄjs, kas nodroÅ”ina abstrakcijas slÄni, kas ļauj automatizÄt sÄjumu izveidi LVM vai ZFS un replicÄt tos, izmantojot DRBD9.
Stereotipu lauŔana
Bet pagaidi, DRBD? ā KÄpÄc to automatizÄt un kÄ tas vispÄr var darboties?
AtcerÄsimies pagÄtni, kad DRBD8 bija ļoti populÄrs. TÄs standarta izmantoÅ”ana ietvÄra vienas lielas bloka ierÄ«ces izveidi un sagrieÅ”anu daudzos mazos gabalos, izmantojot to paÅ”u LVM. Sava veida mdadm RAID-1, bet ar replikÄciju tÄ«klÄ.
Å Ä« pieeja nav bez trÅ«kumiem, un tÄpÄc lÄ«dz ar DRBD9 parÄdÄ«Å”anos ir mainÄ«juÅ”ies krÄtuves dizaina principi, tagad katrai virtuÄlajai maŔīnai tiek izveidota atseviŔķa DRBD ierÄ«ce.
Pieeja ar neatkarÄ«gÄm bloku ierÄ«cÄm ļauj labÄk izmantot vietu klasterÄ«, kÄ arÄ« pievieno vairÄkas papildu funkcijas. PiemÄram, katrai Å”Ädai ierÄ«cei varat noteikt kopiju skaitu, to atraÅ”anÄs vietu un individuÄlos iestatÄ«jumus. Tos ir viegli izveidot/dzÄst, uzÅemt momentuzÅÄmumus, mainÄ«t izmÄrus, iespÄjot Å”ifrÄÅ”anu un daudz ko citu. Ir vÄrts atzÄ«mÄt, ka DRBD9 atbalsta arÄ« kvorumu, kas ļauj izvairÄ«ties no situÄcijÄm, kad smadzenes ir sadalÄ«tas.
Resursi un aizmugursistÄmas
Izveidojot jaunu blokierÄ«ci, Linstor izvieto nepiecieÅ”amo kopiju skaitu dažÄdos klastera mezglos. Katru Å”Ädu kopiju mÄs sauksim par DRBD resursu.
Ir divu veidu resursi:
- Datu resurss ā ir DRBD ierÄ«ce, kas atrodas LVM vai ZFS pÅ«la mezglÄ.
Å obrÄ«d atbalsts tiek nodroÅ”inÄts vairÄkiem backendiem, un to skaits nepÄrtraukti pieaug. Ir atbalsts LVM, ThinLVM un ZFS. PÄdÄjie divi ļauj izveidot un izmantot momentuzÅÄmumus. - Bezdiska resurss ā ir DRBD ierÄ«ce, kas novietota mezglÄ bez aizmugursistÄmas, bet ļauj to uzskatÄ«t par parastu blokierÄ«ci; visas lasÄ«Å”anas/rakstÄ«Å”anas darbÄ«bas tiks novirzÄ«tas uz datu resursiem. TuvÄkais analogs bezdiska resursiem ir iSCSI LUN.
Katram DRBD resursam var bÅ«t lÄ«dz 8 replikÄm, un tikai viena no tÄm var bÅ«t aktÄ«va pÄc noklusÄjuma - Galvenais, visi pÄrÄjie bÅ«s SekundÄrs un to izmantoÅ”ana nebÅ«s iespÄjama, ja vien bÅ«s vismaz viens primÄrais, tas ir, viÅi vienkÄrÅ”i replicÄs datus savÄ starpÄ.
InstalÄjot DRBD ierÄ«ci sistÄmÄ, tÄ automÄtiski kļūst Galvenais, tÄdÄjÄdi pat bezdiska resurss DRBD terminoloÄ£ijÄ var bÅ«t primÄrais.
TÄtad, kÄpÄc jums ir nepiecieÅ”ams Linstor?
Uzticot kodolam visus resursietilpÄ«gos uzdevumus, Linstor bÅ«tÄ«bÄ ir parasta Java lietojumprogramma, kas ļauj viegli automatizÄt DRBD resursu izveidi.
TurklÄt katrs viÅa radÄ«tais resurss bÅ«s neatkarÄ«gs DRBD klasteris, kas darbojas neatkarÄ«gi, neatkarÄ«gi no vadÄ«bas plaknes un citu DRBD resursu stÄvokļa.
Linstor sastÄv tikai no divÄm sastÄvdaļÄm:
- Linstor-kontrolieris - Galvenais kontrolieris, kas nodroÅ”ina API resursu izveidei un pÄrvaldÄ«bai. Tas arÄ« sazinÄs ar satelÄ«tiem, pÄrbaudot tajos esoÅ”o brÄ«vo vietu un nosÅ«ta uzdevumus jaunu resursu izveidei un dzÄÅ”anai. Tas darbojas vienÄ instancÄ un izmanto datu bÄzi, kas var bÅ«t iekÅ”Äja (H2) vai ÄrÄja (PostgreSQL, MySQL, MariaDB).
- Linstor-satelÄ«ts ā InstalÄts visos krÄtuves mezglos un nodroÅ”ina kontrolierim informÄciju par brÄ«vo vietu, kÄ arÄ« veic no kontrollera saÅemtos uzdevumus, lai izveidotu un dzÄstu jaunus sÄjumus un DRBD ierÄ«ces virs tiem.
Linstor darbojas ar Å”Ädiem galvenajiem jÄdzieniem:
- mezgls ā fizisks serveris, kurÄ tiks izveidoti un izmantoti DRBD resursi.
- UzglabÄÅ”anas baseins ā LVM vai ZFS pÅ«ls, kas izveidots mezglÄ, kurÄ atradÄ«sies DRBD resursi. Ir iespÄjams arÄ« bezdisku pÅ«ls - tas ir pÅ«ls, kurÄ atradÄ«sies tikai bezdiska resursi.
- Resursa definÄ«cija ā Resursa definÄ«cija bÅ«tÄ«bÄ ir prototips, kas apraksta nosaukumu un visas tÄ Ä«paŔības.
- Skaļuma definÄ«cija ā apjoma definÄ«cija. Katrs resurss var sastÄvÄt no vairÄkiem sÄjumiem, katram sÄjumam ir jÄbÅ«t noteiktam izmÄram.
- Resursi ā Izveidots blokierÄ«ces gadÄ«jums, katrs resurss ir jÄnovieto noteiktÄ mezglÄ un kÄdÄ krÄtuves pÅ«lÄ.
Linstor uzstÄdÄ«Å”ana
Iesaku izmantot Ubuntu kÄ sistÄmu, jo... viÅai pastÄv
add-apt-repository ppa:linbit/linbit-drbd9-stack
apt-get update
Vai Debian, kur Linstor var instalÄt no oficiÄlÄs Proxmox repozitorija:
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
kontrolieris
Viss Å”eit ir vienkÄrÅ”s:
apt-get install linstor-controller linstor-client
systemctl enable linstor-controller
systemctl start linstor-controller
UzglabÄÅ”anas mezgli
Linux kodols paÅ”laik tiek piegÄdÄts ar kokÄ iebÅ«vÄtu kodola moduli DRBD8, diemžÄl tas mums neder un mums ir jÄinstalÄ DRBD9:
apt-get install drbd-dkms
KÄ liecina prakse, lielÄkÄ daļa grÅ«tÄ«bu rodas tieÅ”i tÄpÄc, ka sistÄmÄ tiek ielÄdÄts DRBD8 modulis, nevis DRBD9. Par laimi to ir viegli pÄrbaudÄ«t, palaižot:
modprobe drbd
cat /proc/drbd
Ja redzat versija: 9 - tas nozÄ«mÄ, ka viss ir kÄrtÄ«bÄ, ja versija: 8 - tas nozÄ«mÄ, ka kaut kas nogÄja greizi, un jums ir jÄveic papildu darbÄ«bas, lai noskaidrotu iemeslus.
Tagad instalÄsim linstor-satelÄ«ts Šø drbd-utils:
apt-get install linstor-satellite drbd-utils
systemctl enable linstor-satellite
systemctl start linstor-satellite
Izveidojiet kopu
UzglabÄÅ”anas baseini un mezgli
KÄ aizmuguri mÄs Åemsim ThinLVM, jo tas ir vienkÄrÅ”Äkais un atbalsta momentuzÅÄmumus.
Komplekts lvm2, ja vÄl neesat to izdarÄ«jis, izveidosim ThinLVM pÅ«lu visos mÅ«su krÄtuves mezglos:
sudo vgcreate drbdpool /dev/sdb
sudo lvcreate -L 800G -T drbdpool/thinpool
Visas turpmÄkÄs darbÄ«bas var veikt tieÅ”i uz kontroliera:
Pievienosim savus mezglus:
linstor node create node1 127.0.0.11
linstor node create node2 127.0.0.12
linstor node create node3 127.0.0.13
Izveidosim krÄtuves baseinus:
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
Tagad pÄrbaudÄ«sim izveidotos baseinus:
linstor storage-pool list
Ja viss ir izdarÄ«ts pareizi, mums vajadzÄtu redzÄt kaut ko lÄ«dzÄ«gu:
+-------------------------------------------------- -------------------------------------------------- ----+ | StoragePool | Mezgls | Å oferis | PoolName | FreeCapacity | KopÄjÄ jauda | Atbalsta momentuzÅÄmumus | |------------------------------------------------- - -------------------------------------------------- ---| | dati | mezgls1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | taisnÄ«ba | | dati | mezgls2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | taisnÄ«ba | | dati | mezgls3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | taisnÄ«ba | +-------------------------------------------------- -------------------------------------------------- ----+
DRBD resursi
Tagad mÄÄ£inÄsim izveidot mÅ«su jauno DRBD resursu:
linstor resource-definition create myres
linstor volume-definition create myres 1G
linstor resource create myres --auto-place 2
PÄrbaudÄ«sim izveidotos resursus:
linstor resource list
+-------------------------------------------------- -------------------------------------------------- ---+ | Mezgls | Resurss | StoragePool | TilpumsNr | MinorNr | IerÄ«ces nosaukums | PieŔķirts | InUse | valsts | |------------------------------------------------- - -------------------------------------------------- --| | mezgls1 | miras | dati | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nelietots | AtjauninÄts | | mezgls2 | miras | dati | 0 | 1084 | /dev/drbd1084 | 52 KiB | Nelietots | AtjauninÄts | +-------------------------------------------------- -------------------------------------------------- ---+
Lieliski! ā mÄs redzam, ka resurss tika izveidots pirmajos divos mezglos, mÄs varam arÄ« mÄÄ£inÄt izveidot bezdiska resursu treÅ”ajÄ:
linstor resource create --diskless node3 myres
Uz mezgliem jÅ«s vienmÄr atradÄ«sit Å”o ierÄ«ci kÄ /dev/drbd1084
vai /dev/drbd/by-res/myres/0
Linstor darbojas Å”Ädi, vairÄk informÄcijas varat iegÅ«t no
Tagad es jums pastÄstÄ«Å”u, kÄ to integrÄt ar OpenNebula
OpenNebula iestatīŔana
Es pÄrÄk neiedziļinÄÅ”os OpenNebula iestatÄ«Å”anas procesÄ, jo... Visas darbÄ«bas ir sÄ«ki aprakstÄ«tas
linstor_un
Lai atrisinÄtu Å”o problÄmu, es uzrakstÄ«ju savu draiveri -
Visa instalÄÅ”ana tiek veikta priekÅ”gala OpenNebula mezglos, un tai nav nepiecieÅ”amas papildu darbÄ«bas skaitļoÅ”anas mezglos.
PirmkÄrt, mums ir jÄpÄrliecinÄs, ka mums ir jq Šø linstor-klients:
apt-get install jq linstor-client
Komanda linstor node list
jÄparÄda mezglu saraksts. Visi OpenNebula skaitļoÅ”anas mezgli ir jÄpievieno Linstor klasterim.
LejupielÄdÄjiet un instalÄjiet spraudni:
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
Tagad mums tas jÄpievieno OpenNebula konfigurÄcijai, lai to izdarÄ«tu, izpildÄm aprakstÄ«tÄs vienkÄrÅ”Äs darbÄ«bas
PÄc tam restartÄjiet OpenNebula:
systemctl restart opennebula
Un pievienojiet mÅ«su datu krÄtuves, sistÄmu:
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
Un attÄlu veikals:
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
- Parametrs
AUTO_PLACE
parÄda datu repliku skaitu, kas tiks izveidots katram jaunam attÄlam programmÄ OpenNebula. - Parametrs
CLONE_MODE
precÄ«zi norÄda, kÄ attÄli tiks klonÄti, veidojot jaunas virtuÄlÄs maŔīnas,snapshot
ā izveidos attÄla momentuzÅÄmumu un izvietos virtuÄlo maŔīnu no momentuzÅÄmuma,copy
ā izveidos pilnu attÄla kopiju katrai virtuÄlajai maŔīnai. - Š
BRIDGE_LIST
Ieteicams norÄdÄ«t visus mezglus, kas tiks izmantoti attÄlu klonÄÅ”anas darbÄ«bu veikÅ”anai.
Pilnu atbalstÄ«to parametru sarakstu skatiet sadaļÄ
Tas pabeidz iestatÄ«Å”anu, tagad varat lejupielÄdÄt kÄdu ierÄ«ci no oficiÄlÄ
Projekta saite:
Avots: www.habr.com