LINSTOR depolama alanı ve OpenNebula ile entegrasyonu

LINSTOR depolama alanı ve OpenNebula ile entegrasyonu

Kısa bir süre önce LINBIT ekibi yeni SDS çözümü Linstor'u sundu. Bu, kanıtlanmış teknolojilere dayanan tamamen ücretsiz bir depolamadır: DRBD, LVM, ZFS. Linstor, sadeliği ve iyi tasarlanmış mimariyi birleştirerek kararlılık ve oldukça etkileyici sonuçlar elde etmenizi sağlar.

Bugün biraz daha detaylı olarak bundan bahsetmek ve bu amaç için özel olarak geliştirdiğim yeni sürücü olan linstor_un kullanarak OpenNebula'ya ne kadar kolay entegre edilebileceğini göstermek istiyorum.

Linstor, OpenNebula ile birlikte kendi altyapınıza kolayca dağıtılabilen hızlı ve güvenilir bir bulut oluşturmanıza olanak tanır.

Linstor mimarisi

Linstor, ne bir dosya sistemi ne de blok depolamadır; Linstor, LVM veya ZFS'de birimlerin oluşturulmasını otomatikleştirmenize ve bunları DRBD9 kullanarak çoğaltmanıza olanak tanıyan bir soyutlama katmanı sağlayan bir orkestratördür.

Basmakalıp kırarız

Ama durun, DRBD? — Bunu neden otomatikleştirelim ve nasıl çalışabilir?

DRBD8'in çok popüler olduğu geçmişi hatırlayalım. Standart kullanımı, aynı LVM'yi kullanarak büyük bir blok cihaz oluşturmayı ve onu birçok küçük parçaya ayırmayı içeriyordu. Bir tür mdadm RAID-1 ancak ağ üzerinden çoğaltma ile.

Bu yaklaşımın dezavantajları yok değil ve bu nedenle DRBD9'un ortaya çıkışıyla birlikte depolama tasarımının ilkeleri değişti; artık her sanal makine için ayrı bir DRBD cihazı oluşturuldu.

Bağımsız blok cihazlarıyla yaklaşım, kümedeki alanın daha iyi kullanılmasına olanak tanır ve ayrıca bir dizi ek özellik ekler. Örneğin, bu tür her cihaz için kopya sayısını, konumlarını ve bireysel ayarları belirleyebilirsiniz. Bunları oluşturmak/silmek, anlık görüntüler almak, yeniden boyutlandırmak, şifrelemeyi etkinleştirmek ve çok daha fazlası kolaydır. DRBD9'un aynı zamanda bölünmüş beyin durumlarından kaçınmanıza olanak tanıyan yeter sayıyı da desteklediğini belirtmekte fayda var.

Kaynaklar ve arka uçlar

Linstor, yeni bir blok cihazı oluştururken gerekli sayıda kopyayı kümedeki farklı düğümlere yerleştirir. Bu tür kopyaların her birine DRBD kaynağı adını vereceğiz.

İki tür kaynak vardır:

  • Veri kaynağı — LVM veya ZFS havuzundaki bir düğümde bulunan bir DRBD cihazıdır.
    Şu anda birkaç arka uç için destek mevcut ve sayıları sürekli artıyor. LVM, ThinLVM ve ZFS desteği mevcuttur. Son ikisi anlık görüntüler oluşturmanıza ve kullanmanıza olanak tanır.
  • Disksiz kaynak — arka ucu olmayan bir düğüme yerleştirilen ancak normal bir blok cihazı olarak değerlendirilmesine izin veren bir DRBD cihazıdır; tüm okuma/yazma işlemleri veri kaynaklarına yönlendirilecektir. Disksiz kaynaklara en yakın analog iSCSI LUN'dur.

Her DRBD kaynağının en fazla 8 kopyası olabilir ve bunlardan yalnızca biri varsayılan olarak etkin olabilir - Birincil, diğer herkes olacak ikincil ve en az bir Birincil olduğu sürece bunların kullanımı imkansız olacaktır, yani verileri kendi aralarında kopyalayacaklardır.

Sisteme DRBD cihazı takıldığında otomatik olarak BirincilDRBD terminolojisinde Disksiz bir kaynak bile Birincil olabilir.

Peki neden Linstor'a ihtiyacınız var?

Kaynak yoğun tüm görevleri çekirdeğe emanet eden Linstor, esasen DRBD kaynaklarının oluşturulmasını kolayca otomatikleştirmenize olanak tanıyan normal bir Java uygulamasıdır.
Üstelik kendisi tarafından oluşturulan her kaynak, kontrol düzleminin ve diğer DRBD kaynaklarının durumuna bakılmaksızın bağımsız olarak çalışan bağımsız bir DRBD kümesi olacaktır.

Linstor yalnızca iki bileşenden oluşur:

  • Linstor-kontrolör - Kaynakları oluşturmak ve yönetmek için bir API sağlayan ana denetleyici. Ayrıca uydularla iletişim kurarak üzerlerindeki boş alanı kontrol ediyor ve yeni kaynaklar oluşturmak ve silmek için görevler gönderiyor. Tek bir örnekte çalışır ve dahili (H2) veya harici (PostgreSQL, MySQL, MariaDB) olabilen bir veritabanı kullanır.
  • Linstor uydusu — Tüm depolama düğümlerine kurulur ve denetleyiciye boş alan hakkında bilgi sağlar ve ayrıca yeni birimler ve bunların üzerine DRBD aygıtları oluşturmak ve silmek için denetleyiciden alınan görevleri gerçekleştirir.

Linstor aşağıdaki temel kavramlarla çalışır:

  • Düğüm — DRBD kaynaklarının oluşturulacağı ve kullanılacağı fiziksel bir sunucu.
  • Depolama havuzu — DRBD kaynaklarının yer alacağı düğümde oluşturulan LVM veya ZFS havuzu. Disksiz bir havuz da mümkündür - bu, yalnızca disksiz kaynakların bulunacağı bir havuzdur.
  • Kaynak Tanımı — Bir kaynağın tanımı esasen adını ve tüm özelliklerini açıklayan bir prototiptir.
  • Hacim Tanımı — Hacim tanımı. Her kaynak birden fazla birimden oluşabilir; her birimin bir boyutu olmalıdır.
  • Kaynak — Bir blok cihazın oluşturulmuş bir örneği, her kaynağın belirli bir düğüme ve bir depolama havuzuna yerleştirilmesi gerekir.

Linstor kurulumu

Ubuntu'yu bir sistem olarak kullanmanızı öneririm çünkü ... onun için var hazır PPA:

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

Veya Linstor'un Proxmox'un resmi deposundan kurulabileceği Debian:

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

kontrolör

Burada her şey basit:

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

Depolama düğümleri

Linux çekirdeği şu anda ağaç içi bir çekirdek modülüyle birlikte geliyor DRBD8maalesef bize uymuyor ve kurmamız gerekiyor DRBD9:

apt-get install drbd-dkms

Uygulamada görüldüğü gibi, çoğu zorluk tam olarak DRBD8'a değil DRBD9 modülünün sisteme yüklenmesinden kaynaklanmaktadır. Neyse ki, şunu çalıştırarak bunu kontrol etmek kolaydır:

modprobe drbd
cat /proc/drbd

Eğer görürsen versiyon: 9 - eğer öyleyse her şey yolunda demektir versiyon: 8 - bu, bir şeylerin ters gittiği ve nedenlerini bulmak için ek adımlar atmanız gerektiği anlamına gelir.

Şimdi kurulumu yapalım linstor uydusu и drbd-utils:

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

Bir küme oluşturun

Depolama havuzları ve düğümler

Arka uç olarak alacağız İnceLVM, Çünkü en basitidir ve anlık görüntüleri destekler.
Ayarlamak lvm2Henüz yapmadıysanız tüm depolama düğümlerimizde bir ThinLVM havuzu oluşturalım:

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

Diğer tüm eylemler doğrudan denetleyici üzerinde gerçekleştirilebilir:

Düğümlerimizi ekleyelim:

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

Depolama havuzları oluşturalım:

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

Şimdi oluşturulan havuzları kontrol edelim:

linstor storage-pool list

Her şey doğru yapılırsa şöyle bir şey görmeliyiz:

+------------------------------------------------ -------------------------------------------------- ----+ | DepolamaHavuzu | Düğüm | Sürücü | HavuzAdı | Ücretsiz Kapasite | Toplam Kapasite | Anlık Görüntüleri Destekler | |------------------------------------------------ - -------------------------------------------------- - ---| | veriler | düğüm1 | LVM_THIN | drbdpool/incehavuz | 64 GiB | 64 GiB | doğru | | veriler | düğüm2 | LVM_THIN | drbdpool/incehavuz | 64 GiB | 64 GiB | doğru | | veriler | düğüm3 | LVM_THIN | drbdpool/incehavuz | 64 GiB | 64 GiB | doğru | +------------------------------------------------ -------------------------------------------------- ----+

DRBD kaynakları

Şimdi yeni DRBD kaynağımızı oluşturmaya çalışalım:

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

Oluşturulan kaynakları kontrol edelim:

linstor resource list 

+------------------------------------------------ -------------------------------------------------- ---+ | Düğüm | Kaynak | DepolamaHavuzu | Cilt No | Küçük No | CihazAdı | Tahsis Edilen | Kullanımda | Devlet | |------------------------------------------------ - -------------------------------------------------- - --| | düğüm1 | myres | veriler | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kullanılmıyor | Güncel | | düğüm2 | myres | veriler | 0 | 1084 | /dev/drbd1084 | 52 KiB | Kullanılmıyor | Güncel | +------------------------------------------------ -------------------------------------------------- ---+

Harika! — kaynağın ilk iki düğümde oluşturulduğunu görüyoruz, üçüncüde de disksiz bir kaynak oluşturmayı deneyebiliriz:

linstor resource create --diskless node3 myres

Düğümlerde bu cihazı her zaman şu şekilde bulacaksınız: /dev/drbd1084 veya /dev/drbd/by-res/myres/0

Linstor bu şekilde çalışır, daha fazla bilgiyi şuradan alabilirsiniz: resmi belgeler.

Şimdi size OpenNebula ile nasıl entegre edeceğinizi anlatacağım.

OpenNebula'yı kurma

OpenNebula kurulum sürecine çok fazla girmeyeceğim çünkü... tüm adımlar ayrıntılı olarak açıklanmaktadır resmi belgelerİletişime geçmenizi önerdiğim firmada sadece OpenNebula'nın Linstor ile entegrasyonunu anlatacağım.

linstor_un

Bu sorunu çözmek için kendi sürücümü yazdım - linstor_unşu anda bir eklenti olarak mevcuttur ve ayrı olarak yüklenmesi gerekir.

Kurulumun tamamı ön uç OpenNebula düğümlerinde gerçekleştirilir ve hesaplama düğümlerinde ek eylemler gerektirmez.

Öncelikle sahip olduğumuzdan emin olmalıyız. jq и linstor-istemci:

apt-get install jq linstor-client

Ekip linstor node list düğümlerin bir listesini görüntülemelidir. Tüm OpenNebula hesaplama düğümleri Linstor kümesine eklenmelidir.

Eklentiyi indirin ve yükleyin:

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

Şimdi onu OpenNebula yapılandırmasına eklememiz gerekiyor, bunu yapmak için açıklanan basit adımları takip ediyoruz burada.

Ardından OpenNebula'yı yeniden başlatın:

systemctl restart opennebula

Ve veri depolarımızı, sistemimizi ekleyin:

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

Ve resim 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

  • Parametre AUTO_PLACE OpenNebula'daki her yeni görüntü için oluşturulacak veri kopyalarının sayısını görüntüler.
  • Parametre CLONE_MODE yeni sanal makineler oluşturulurken görüntülerin tam olarak nasıl kopyalanacağını belirtir, snapshot — görüntünün anlık görüntüsünü oluşturacak ve anlık görüntüden bir sanal makine dağıtacak, copy — her sanal makine için görüntünün tam bir kopyasını oluşturacaktır.
  • В BRIDGE_LIST Görüntü klonlama işlemlerini gerçekleştirmek için kullanılacak tüm düğümlerin belirtilmesi önerilir.

Desteklenen parametrelerin tam listesi için bkz. README proje.

Bu, kurulumu tamamlar, artık bazı cihazları resmi siteden indirebilirsiniz. OpenNebula Pazaryeri ve ondan sanal makineler oluşturun.

Arama yöntemi:
https://github.com/OpenNebula/addon-linstor_un

Kaynak: habr.com

Yorum ekle