LINSTOR yaddaşı və onun OpenNebula ilə inteqrasiyası

LINSTOR yaddaşı və onun OpenNebula ilə inteqrasiyası

Bir müddət əvvəl LINBIT-dən olan uşaqlar yeni SDS həllini təqdim etdilər - Linstor. Bu sübut edilmiş texnologiyalara əsaslanan tamamilə pulsuz yaddaşdır: DRBD, LVM, ZFS. Linstor sadəliyi və yaxşı işlənmiş arxitekturanı özündə birləşdirir ki, bu da sabitlik və kifayət qədər təsir edici nəticələr əldə etməyə imkan verir.

Bu gün mən bu barədə bir az daha danışmaq və bunun üçün xüsusi olaraq hazırladığım yeni sürücü olan linstor_un-dan istifadə edərək OpenNebula ilə nə qədər asan inteqrasiya oluna biləcəyini göstərmək istərdim.

Linstor OpenNebula ilə birlikdə öz infrastrukturunuzda asanlıqla yerləşdirilə bilən sürətli və etibarlı bulud yaratmağa imkan verir.

Linstor memarlığı

Linstor özü nə fayl sistemi, nə də blok yaddaşı deyil, Linstor LVM və ya ZFS-də həcmlərin yaradılmasını avtomatlaşdırmaq və DRBD9-dan istifadə edərək onları təkrarlamaq üçün abstraksiya qatını təmin edən orkestratordur.

Stereotipləri qırmaq

Amma gözləyin, DRBD? - Niyə onu avtomatlaşdırın və ümumiyyətlə necə işləyə bilər?

DRBD8-in çox məşhur olduğu keçmişi xatırlayaq. Onun standart istifadəsi bir böyük blok cihazı yaratmaq və eyni LVM-dən istifadə edərək bir çox kiçik hissələrə kəsmək demək idi. Bir növ mdadm RAID-1, lakin şəbəkə replikasiyası ilə.

Bu yanaşmanın çatışmazlıqları yoxdur və buna görə də DRBD9-un meydana gəlməsi ilə saxlama quruluşunun prinsipləri dəyişdi, indi hər bir virtual maşın üçün ayrıca DRBD cihazı yaradılır.

Müstəqil blok cihaz yanaşması klasterdə yerdən daha yaxşı istifadə etməyə imkan verir, həmçinin bir sıra əlavə funksiyalar əlavə edir. Məsələn, hər bir belə cihaz üçün replikaların sayını, onların yerini və fərdi parametrlərini təyin edə bilərsiniz. Onları yaratmaq/silmək, şəkil çəkmək, ölçüsünü dəyişmək, şifrələməni aktivləşdirmək və s. asandır. Qeyd etmək lazımdır ki, DRBD9 eyni zamanda bölünmüş beyin vəziyyətlərinin qarşısını alan kvorumu saxlayır.

Resurslar və arxa uçlar

Yeni blok cihazı yaradarkən Linstor lazımi sayda replikaları klasterdəki müxtəlif qovşaqlara yerləşdirir. Biz hər bir belə replikanı DRBD resursu adlandıracağıq.

Resurslar iki növdür:

  • Məlumat resursu - LVM və ya ZFS hovuzunda qovşaqda yerləşən DRBD cihazını təmsil edir.
    Hal-hazırda bir neçə backend üçün dəstək var və onların sayı durmadan artır. LVM, ThinLVM və ZFS üçün dəstək var. Son ikisi sizə anlıq görüntülər yaratmağa və istifadə etməyə imkan verir.
  • Disksiz resurs - arxa ucu olmayan qovşaqda yerləşdirilən DRBD cihazıdır, lakin ona adi blok cihazı kimi baxmağa imkan verir, bütün oxuma/yazma əməliyyatları məlumat resurslarına yönləndiriləcək. Disksiz resurslara ən yaxın analoq iSCSI LUN-dur.

Hər bir DRBD resursunda 8-ə qədər replika ola bilər və onlardan yalnız biri standart olaraq aktiv ola bilər - Primary, qalan hər şey olacaq Orta və ən azı bir Primary olduğu müddətcə onların istifadəsi qeyri-mümkün olacaq, yəni onlar sadəcə olaraq məlumatları öz aralarında təkrarlayacaqlar.

DRBD cihazını sistemə quraşdırmaqla o, avtomatik olaraq olur Primary, beləliklə, hətta DRBD terminologiyasında Disksiz resurs İlkin ola bilər.

Bəs bizə Linstor nə üçün lazımdır?

Bütün resurs tələb edən tapşırıqları nüvəyə həvalə etməklə, Linstor mahiyyətcə DRBD resurslarının yaradılmasını asanlıqla avtomatlaşdırmağa imkan verən müntəzəm Java proqramıdır.
Üstəlik, onun yaratdığı hər bir resurs idarəetmə müstəvisinin və digər DRBD resurslarının vəziyyətindən asılı olmayaraq müstəqil işləyən müstəqil DRBD klasteri olacaqdır.

Linstor yalnız iki komponentdən ibarətdir:

  • linstor-nəzarətçi - Resursların yaradılması və idarə edilməsi üçün API təmin edən əsas nəzarətçi. O, həmçinin peyklərlə əlaqə qurur, onlarda boş yeri yoxlayır və yeni resurslar yaratmaq və silmək üçün iş yerləri göndərir. Tək instansiyada işləyir və daxili (H2) və ya xarici ola bilən verilənlər bazasından istifadə edir (PostgreSQL, MySQL, MariaDB)
  • linstor-peyk - Bütün saxlama qovşaqlarında quraşdırılıb və nəzarətçini boş yer haqqında məlumatla təmin edir, həmçinin onların üzərində yeni həcmlər və DRBD cihazları yaratmaq və silmək üçün nəzarətçidən alınan tapşırıqları yerinə yetirir.

Linstor aşağıdakı əsas anlayışlarla işləyir:

  • Düyün — DRBD resurslarının yaradılacağı və istifadə olunacağı fiziki server.
  • Saxlama Hovuzu - DRBD resurslarının yerləşdiriləcəyi qovşaqda yaradılmış LVM və ya ZFS hovuzu. Disksiz bir hovuz da mümkündür - bu, yalnız disksiz resursların yerləşdiriləcəyi bir hovuzdur.
  • resurs tərifi - Resursun tərifi, əslində o, adı və onun bütün xüsusiyyətlərini təsvir edən prototipdir.
  • həcm tərifi - Həcm tərifi. Hər bir resurs bir neçə cilddən ibarət ola bilər, hər bir cildin ölçüsü olmalıdır.
  • Vəsait - Blok cihazının nümunəsi yaradıldı, hər bir resurs müəyyən bir node və bəzi saxlama hovuzunda yerləşdirilməlidir.

Linstor-un quraşdırılması

Ubuntu-dan sistem kimi istifadə etməyi məsləhət görürəm, çünki. onun üçün mövcuddur hazır PPA:

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

Və ya Debian, burada Linstor rəsmi Proxmox deposundan quraşdırıla bilər:

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

Nəzarətçi

Burada hər şey sadədir:

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

Saxlama qovşaqları

Linux nüvəsi hazırda ağacdaxili nüvə modulu ilə göndərilir DRBD8, təəssüf ki, bizə uyğun deyil və quraşdırmaq lazımdır DRBD9:

apt-get install drbd-dkms

Təcrübədən göründüyü kimi, çətinliklərin əksəriyyəti məhz DRBD8-a deyil, DRBD9 modulunun sistemə yüklənməsi ilə yaranır. Xoşbəxtlikdən, bunu qaçmaqla yoxlamaq asandır:

modprobe drbd
cat /proc/drbd

Əgər görürsənsə versiya: 9 -hər şey yaxşıdırsa versiya: 8 - bu o deməkdir ki, nəsə səhv olub və səbəbləri tapmaq üçün əlavə addımlar atmalısınız.

İndi quraşdıraq linstor-peyk и drbd-utils:

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

Klaster yaradın

Saxlama hovuzları və qovşaqları

Backend olaraq alacağıq ThinLVM, çünki ən sadədir və anlıq görüntüləri dəstəkləyir.
Təyin etmək lvm2, əgər bunu etməmisinizsə və gəlin bütün saxlama qovşaqlarımızda ThinLVM hovuzu yaradaq:

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

Bütün sonrakı hərəkətlər birbaşa nəzarətçidə edilə bilər:

Gəlin qovşaqlarımızı əlavə edək:

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

Saxlama hovuzları yaradaq:

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

İndi yaradılmış hovuzları yoxlayaq:

linstor storage-pool list

Hər şey düzgün aparılırsa, onda belə bir şey görməliyik:

+------------------------------------------------ ------------------------------------------------- ----+ | StoragePool | node | sürücü | hovuz adı | sərbəst tutum | ümumi tutum | Snapshots dəstəkləyir | |------------------------------------------------ ------------------------------------------------- ----| | data | node1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | doğru | | data | node2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | doğru | | data | node3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | doğru | +------------------------------------------------ ------------------------------------------------- ----+

DRBD resursları

İndi yeni DRBD resursumuzu yaratmağa çalışaq:

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

Yaradılmış resursları yoxlayaq:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+ | node | resurs | StoragePool | HəcmiNr | MinorNr | Cihaz Adı ​​| Ayrılmış | istifadədə | dövlət | |------------------------------------------------ ------------------------------------------------- ---| | node1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | İstifadə olunmamış | UpToDate | | node2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | İstifadə olunmamış | UpToDate | +------------------------------------------------ ------------------------------------------------- ---+

Əla! - resursun ilk iki qovşaqda yaradıldığını görürük, üçüncüdə də disksiz resurs yaratmağa cəhd edə bilərik:

linstor resource create --diskless node3 myres

Düyünlərdə siz həmişə bu cihazı tapa bilərsiniz /dev/drbd1084 və ya /dev/drbd/by-res/myres/0

Linstor belə işləyir, daha çox məlumat əldə edə bilərsiniz rəsmi sənədlər.

İndi onu OpenNebula ilə necə inteqrasiya etmək barədə danışacağam

OpenNebula qurulur

OpenNebula quraşdırma prosesinə çox da dərin getməyəcəyəm, çünki Bütün addımlar ətraflı təsvir edilmişdir rəsmi sənədlər, sizə istinad etməyi tövsiyə edirəm, mən yalnız OpenNebula-nın Linstor ilə inteqrasiyasından danışacağam.

linstor_un

Bu problemi həll etmək üçün öz sürücümü yazdım - linstor_un, hazırda plagin kimi mövcuddur və ayrıca quraşdırılmalıdır.

Bütün quraşdırma frontend OpenNebula qovşaqlarında həyata keçirilir və hesablama qovşaqlarında əlavə tədbirlər tələb etmir.

İlk növbədə, bizdə olduğundan əmin olmalıyıq jq и linstor-müştəri:

apt-get install jq linstor-client

Komanda linstor node list qovşaqların siyahısını göstərməlidir. Bütün OpenNebula hesablama qovşaqları Linstor klasterinə əlavə edilməlidir.

Plugini yükləyin və quraşdırın:

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

İndi onu OpenNebula konfiqurasiyasına əlavə etməliyik, bunun üçün təsvir olunan sadə addımları izləyirik burada.

Sonra OpenNebula-nı yenidən başladın:

systemctl restart opennebula

Və məlumat anbarlarımızı, sistemimizi əlavə edin:

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

Və şəkil mağazası:

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

  • Parametr AUTO_PLACE OpenNebula-da hər yeni təsvir üçün yaradılacaq məlumat replikalarının sayını göstərir.
  • Parametr CLONE_MODE yeni virtual maşınlar yaratarkən şəkillərin necə klonlanacağını dəqiq göstərir, snapshot - şəklin snapshotını yaradacaq və snapshotdan virtual maşın yerləşdirəcək, copy - hər bir virtual maşın üçün təsvirin tam surətini çıxaracaq.
  • В BRIDGE_LIST təsvirin klonlaşdırılması əməliyyatlarını yerinə yetirmək üçün istifadə olunacaq bütün qovşaqların müəyyən edilməsi tövsiyə olunur.

Dəstəklənən seçimlərin tam siyahısı üçün baxın README layihəsi.

Bu quraşdırmanı tamamlayır, indi siz rəsmi şəxsdən bəzi cihazları endirə bilərsiniz OpenNebula Marketplace və ondan virtual maşınlar yaradın.

Layihə linki:
https://github.com/OpenNebula/addon-linstor_un

Mənbə: www.habr.com

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