Storan LINSTOR dan penyepaduannya dengan OpenNebula

Storan LINSTOR dan penyepaduannya dengan OpenNebula

Tidak lama dahulu, lelaki dari LINBIT membentangkan penyelesaian SDS baharu mereka - Linstor. Ini adalah storan percuma sepenuhnya berdasarkan teknologi terbukti: DRBD, LVM, ZFS. Linstor menggabungkan kesederhanaan dan seni bina yang direka dengan baik, yang membolehkan anda mencapai kestabilan dan hasil yang cukup mengagumkan.

Hari ini saya ingin membincangkannya dengan lebih terperinci dan menunjukkan betapa mudahnya ia boleh disepadukan dengan OpenNebula menggunakan linstor_un - pemacu baharu yang saya bangunkan khusus untuk tujuan ini.

Linstor dalam kombinasi dengan OpenNebula membolehkan anda membina awan yang pantas dan boleh dipercayai yang boleh digunakan dengan mudah pada infrastruktur anda sendiri.

Seni bina Linstor

Linstor bukanlah sistem fail mahupun storan blok per se, Linstor ialah orkestra yang menyediakan lapisan abstraksi yang membolehkan anda mengautomasikan penciptaan volum dalam LVM atau ZFS dan menirunya menggunakan DRBD9.

Memecahkan stereotaip

Tetapi tunggu, DRBD? β€” Mengapa mengautomasikannya dan bagaimana ia boleh berfungsi?

Mari kita ingat masa lalu, ketika DRBD8 sangat popular. Penggunaan standardnya melibatkan mencipta satu peranti blok besar dan memotongnya kepada banyak kepingan kecil, menggunakan LVM yang sama. Sejenis mdadm RAID-1 tetapi dengan replikasi melalui rangkaian.

Pendekatan ini bukan tanpa kelemahannya, dan oleh itu, dengan kemunculan DRBD9, prinsip reka bentuk storan telah berubah; kini peranti DRBD yang berasingan dicipta untuk setiap mesin maya.

Pendekatan dengan peranti blok bebas membolehkan penggunaan ruang yang lebih baik dalam kelompok, dan juga menambah beberapa ciri tambahan. Sebagai contoh, untuk setiap peranti sedemikian anda boleh menentukan bilangan replika, lokasinya dan tetapan individu. Mereka mudah dibuat/padam, mengambil gambar, mengubah saiz, mendayakan penyulitan dan banyak lagi. Perlu diingat bahawa DRBD9 juga menyokong kuorum, yang membolehkan anda mengelakkan situasi otak berpecah.

Sumber dan hujung belakang

Apabila mencipta peranti blok baharu, Linstor meletakkan bilangan replika yang diperlukan pada nod berbeza dalam kelompok. Kami akan memanggil setiap replika tersebut sebagai sumber DRBD.

Terdapat dua jenis sumber:

  • Sumber data β€” ialah peranti DRBD yang terletak pada nod dalam kolam LVM atau ZFS.
    Pada masa ini terdapat sokongan untuk beberapa bahagian belakang dan bilangan mereka sentiasa berkembang. Terdapat sokongan untuk LVM, ThinLVM dan ZFS. Dua yang terakhir membolehkan anda membuat dan menggunakan syot kilat.
  • Sumber tanpa cakera β€” ialah peranti DRBD yang diletakkan pada nod tanpa hujung belakang, tetapi membenarkan ia dianggap sebagai peranti blok biasa; semua operasi baca/tulis akan diubah hala ke sumber data. Analog terdekat kepada sumber tanpa cakera ialah iSCSI LUN.

Setiap sumber DRBD boleh mempunyai sehingga 8 replika, dan hanya satu daripadanya boleh aktif secara lalai - Utama, orang lain akan jadi Menengah dan penggunaannya akan menjadi mustahil selagi terdapat sekurang-kurangnya satu Primer, iaitu, mereka hanya akan mereplikasi data antara mereka sendiri.

Dengan memasang peranti DRBD ke dalam sistem, ia secara automatik menjadi Utama, oleh itu walaupun sumber Tanpa Cakera, dalam terminologi DRBD, boleh menjadi Utama.

Jadi mengapa anda memerlukan Linstor?

Dengan mempercayakan semua tugas intensif sumber kepada kernel, Linstor pada dasarnya adalah aplikasi Java biasa yang membolehkan anda mengautomasikan penciptaan sumber DRBD dengan mudah.
Selain itu, setiap sumber yang dicipta olehnya akan menjadi kluster DRBD bebas yang beroperasi secara bebas, tanpa mengira keadaan pesawat kawalan dan sumber DRBD lain.

Linstor hanya terdiri daripada dua komponen:

  • Pengawal Linstor - Pengawal utama, yang menyediakan API untuk mencipta dan mengurus sumber. Ia juga berkomunikasi dengan satelit, memeriksa ruang kosong padanya, dan menghantar tugas untuk mencipta dan memadam sumber baharu. Ia berjalan dalam satu contoh dan menggunakan pangkalan data, yang boleh sama ada dalaman (H2) atau luaran (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelit β€” Dipasang pada semua nod storan dan menyediakan pengawal dengan maklumat tentang ruang kosong, dan juga melaksanakan tugas yang diterima daripada pengawal untuk mencipta dan memadam volum baharu dan peranti DRBD di atasnya.

Linstor beroperasi dengan konsep utama berikut:

  • nod β€” pelayan fizikal di mana sumber DRBD akan dibuat dan digunakan.
  • Kolam Storan β€” Kumpulan LVM atau ZFS dibuat pada nod di mana sumber DRBD akan ditempatkan. Kolam tanpa cakera juga mungkin - ini ialah kolam di mana hanya sumber tanpa cakera akan ditempatkan.
  • Definisi Sumber β€” Takrifan sumber pada asasnya ialah prototaip yang menerangkan nama dan semua sifatnya.
  • Definisi Jilid β€” Definisi volum. Setiap sumber boleh terdiri daripada berbilang jilid, setiap jilid mesti mempunyai saiz.
  • Sumber β€” Contoh peranti blok yang dicipta, setiap sumber mesti diletakkan pada nod tertentu dan dalam beberapa kumpulan storan.

Pemasangan Linstor

Saya mengesyorkan menggunakan Ubuntu sebagai sistem, kerana... wujud untuknya sedia PPA:

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

Atau Debian, di mana Linstor boleh dipasang dari repositori rasmi untuk 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

Pengawal

Semuanya mudah di sini:

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

Nod storan

Inti Linux kini dihantar dengan modul kernel dalam pokok DRBD8, malangnya ia tidak sesuai dengan kami dan kami perlu memasang DRBD9:

apt-get install drbd-dkms

Seperti yang ditunjukkan oleh amalan, kebanyakan kesukaran timbul dengan tepat kerana modul DRBD8 dimuatkan ke dalam sistem, dan bukan DRBD9. Nasib baik, ini mudah untuk diperiksa dengan menjalankan:

modprobe drbd
cat /proc/drbd

kalau nampak versi: 9 - ia bermakna semuanya baik-baik saja jika versi: 8 - ini bermakna sesuatu telah berlaku dan anda perlu mengambil langkah tambahan untuk mengetahui sebabnya.

Sekarang mari pasang linstor-satelit ΠΈ drbd-utils:

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

Buat gugusan

Kolam storan dan nod

Sebagai backend kami akan ambil ThinLVM, kerana ia adalah yang paling mudah dan menyokong syot kilat.
Tetapkan lvm2, jika anda belum berbuat demikian, mari buat kumpulan ThinLVM pada semua nod storan kami:

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

Semua tindakan selanjutnya boleh dilakukan secara langsung pada pengawal:

Mari tambah nod kami:

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

Mari buat kolam storan:

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

Sekarang mari kita semak kumpulan yang dibuat:

linstor storage-pool list

Jika semuanya dilakukan dengan betul, maka kita akan melihat sesuatu seperti:

+------------------------------------------------ ------------------------------------------------- ----+ | StoragePool | Nod | Pemandu | PoolName | Kapasiti Percuma | JumlahKapasiti | MenyokongSnapshot | |------------------------------------------------ - ------------------------------------------------- - ---| | data | nod1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | | data | nod2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | | data | nod3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | +------------------------------------------------ ------------------------------------------------- ----+

sumber DRBD

Sekarang mari cuba buat sumber DRBD baharu kami:

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

Mari kita semak sumber yang dibuat:

linstor resource list 

+------------------------------------------------ ------------------------------------------------- ---+ | Nod | Sumber | StoragePool | JilidNr | MinorNr | Nama Peranti | Diperuntukkan | InUse | Negeri | |------------------------------------------------ - ------------------------------------------------- - --| | nod1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Tidak digunakan | UpToDate | | nod2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Tidak digunakan | UpToDate | +------------------------------------------------ ------------------------------------------------- ---+

Hebat! β€” kita melihat bahawa sumber itu dicipta pada dua nod pertama, kita juga boleh cuba mencipta sumber tanpa cakera pada yang ketiga:

linstor resource create --diskless node3 myres

Pada nod anda akan sentiasa menemui peranti ini sebagai /dev/drbd1084 atau /dev/drbd/by-res/myres/0

Beginilah cara Linstor berfungsi, anda boleh mendapatkan maklumat lanjut daripada dokumentasi rasmi.

Sekarang saya akan memberitahu anda bagaimana untuk mengintegrasikannya dengan OpenNebula

Menyediakan OpenNebula

Saya tidak akan pergi terlalu jauh ke dalam proses persediaan OpenNebula, kerana... semua langkah diterangkan secara terperinci dalam dokumentasi rasmi, yang saya syorkan anda hubungi, saya hanya akan memberitahu anda tentang penyepaduan OpenNebula dengan Linstor.

linstor_un

Untuk menyelesaikan masalah ini, saya menulis pemandu saya sendiri - linstor_un, ia kini tersedia sebagai pemalam dan mesti dipasang secara berasingan.

Keseluruhan pemasangan dijalankan pada nod OpenNebula bahagian hadapan dan tidak memerlukan tindakan tambahan pada nod pengiraan.

Pertama sekali, kita perlu memastikan bahawa kita mempunyai jq ΠΈ linstor-klien:

apt-get install jq linstor-client

Pasukan linstor node list harus memaparkan senarai nod. Semua nod pengiraan OpenNebula mesti ditambahkan pada kelompok Linstor.

Muat turun dan pasang pemalam:

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

Sekarang kita perlu menambahkannya pada konfigurasi OpenNebula, untuk melakukan ini kita ikuti langkah mudah yang diterangkan di sini.

Kemudian mulakan semula OpenNebula:

systemctl restart opennebula

Dan tambahkan stor data kami, sistem:

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

Dan kedai imej:

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 memaparkan bilangan replika data yang akan dibuat untuk setiap imej baharu dalam OpenNebula.
  • Parameter CLONE_MODE menunjukkan dengan tepat bagaimana imej akan diklonkan apabila mencipta mesin maya baharu, snapshot β€” akan mencipta syot kilat imej dan menggunakan mesin maya daripada syot kilat, copy β€” akan membuat salinan lengkap imej untuk setiap mesin maya.
  • Π’ BRIDGE_LIST Adalah disyorkan untuk menentukan semua nod yang akan digunakan untuk melaksanakan operasi pengklonan imej.

Untuk senarai lengkap parameter yang disokong, lihat README projek.

Ini melengkapkan persediaan, kini anda boleh memuat turun beberapa perkakas daripada rasmi Pasaran OpenNebula dan cipta mesin maya daripadanya.

Pautan projek:
https://github.com/OpenNebula/addon-linstor_un

Sumber: www.habr.com

Tambah komen