Penyimpanan LINSTOR dan integrasinya dengan OpenNebula

Penyimpanan LINSTOR dan integrasinya dengan OpenNebula

Belum lama ini, orang-orang dari LINBIT mempresentasikan solusi SDS baru mereka - Linstor. Ini adalah penyimpanan gratis berdasarkan teknologi yang telah terbukti: DRBD, LVM, ZFS. Linstor menggabungkan kesederhanaan dan arsitektur yang dirancang dengan baik, yang memungkinkan Anda mencapai stabilitas dan hasil yang cukup mengesankan.

Hari ini saya ingin membicarakannya lebih detail dan menunjukkan betapa mudahnya terintegrasi dengan OpenNebula menggunakan linstor_un - driver baru yang saya kembangkan khusus untuk tujuan ini.

Linstor yang dikombinasikan dengan OpenNebula memungkinkan Anda membangun cloud yang cepat dan andal yang dapat dengan mudah diterapkan pada infrastruktur Anda sendiri.

Arsitektur Linstor

Linstor bukanlah sistem file atau penyimpanan blok, Linstor adalah orkestrator yang menyediakan lapisan abstraksi yang memungkinkan Anda mengotomatiskan pembuatan volume di LVM atau ZFS dan mereplikasinya menggunakan DRBD9.

Melanggar stereotip

Tapi tunggu, DRBD? — Mengapa mengotomatiskannya dan bagaimana cara kerjanya?

Mari kita mengingat masa lalu, ketika DRBD8 sangat populer. Penggunaan standarnya melibatkan pembuatan satu perangkat blok besar dan memotongnya menjadi beberapa bagian kecil, menggunakan LVM yang sama. Semacam mdadm RAID-1 tetapi dengan replikasi melalui jaringan.

Pendekatan ini bukannya tanpa kekurangan, dan oleh karena itu, dengan munculnya DRBD9, prinsip desain penyimpanan telah berubah; sekarang perangkat DRBD terpisah dibuat untuk setiap mesin virtual.

Pendekatan dengan perangkat blok independen memungkinkan pemanfaatan ruang dalam cluster dengan lebih baik, dan juga menambahkan sejumlah fitur tambahan. Misalnya, untuk setiap perangkat tersebut Anda dapat menentukan jumlah replika, lokasinya, dan pengaturan individual. Mereka mudah untuk membuat/menghapus, mengambil snapshot, mengubah ukuran, mengaktifkan enkripsi dan banyak lagi. Perlu dicatat bahwa DRBD9 juga mendukung kuorum, yang memungkinkan Anda menghindari situasi perpecahan otak.

Sumber daya dan backend

Saat membuat perangkat blok baru, Linstor menempatkan jumlah replika yang diperlukan pada node berbeda di cluster. Kami akan menyebut setiap replika tersebut sebagai sumber daya DRBD.

Ada dua jenis sumber daya:

  • Sumber daya data — adalah perangkat DRBD yang terletak pada node di kumpulan LVM atau ZFS.
    Saat ini terdapat dukungan untuk beberapa backend dan jumlahnya terus bertambah. Ada dukungan untuk LVM, ThinLVM dan ZFS. Dua yang terakhir memungkinkan Anda membuat dan menggunakan snapshot.
  • Sumber daya tanpa disk — adalah perangkat DRBD yang ditempatkan pada node tanpa backend, namun memungkinkannya diperlakukan sebagai perangkat blok biasa; semua operasi baca/tulis akan dialihkan ke sumber daya data. Analog terdekat dengan sumber daya tanpa disk adalah iSCSI LUN.

Setiap sumber daya DRBD dapat memiliki hingga 8 replika, dan hanya satu yang dapat aktif secara default - primer, semua orang akan begitu Sekunder dan penggunaannya tidak mungkin dilakukan selama setidaknya ada satu Primer, yaitu, mereka hanya akan mereplikasi data di antara mereka sendiri.

Dengan menginstal perangkat DRBD ke dalam sistem, secara otomatis menjadi primer, bahkan sumber daya Tanpa Disk, dalam terminologi DRBD, dapat menjadi Primer.

Jadi mengapa Anda membutuhkan Linstor?

Dengan mempercayakan semua tugas intensif sumber daya ke kernel, Linstor pada dasarnya adalah aplikasi Java biasa yang memungkinkan Anda mengotomatiskan pembuatan sumber daya DRBD dengan mudah.
Selain itu, setiap sumber daya yang dibuat olehnya akan menjadi cluster DRBD independen yang beroperasi secara independen, terlepas dari status bidang kontrol dan sumber daya DRBD lainnya.

Linstor hanya terdiri dari dua komponen:

  • Pengontrol Linstor - Pengontrol utama, yang menyediakan API untuk membuat dan mengelola sumber daya. Ia juga berkomunikasi dengan satelit, memeriksa ruang kosong di dalamnya, dan mengirimkan tugas untuk membuat dan menghapus sumber daya baru. Ini berjalan dalam satu contoh dan menggunakan database, yang dapat berupa internal (H2) atau eksternal (PostgreSQL, MySQL, MariaDB)
  • Linstor-satelit — Dipasang di semua node penyimpanan dan memberi pengontrol informasi tentang ruang kosong, dan juga melakukan tugas yang diterima dari pengontrol untuk membuat dan menghapus volume baru dan perangkat DRBD di atasnya.

Linstor beroperasi dengan konsep utama berikut:

  • Node — server fisik tempat sumber daya DRBD akan dibuat dan digunakan.
  • Kolam Penyimpanan — Kumpulan LVM atau ZFS dibuat pada node tempat sumber daya DRBD akan ditempatkan. Kumpulan tanpa disk juga dimungkinkan - ini adalah kumpulan di mana hanya sumber daya tanpa disk yang akan ditempatkan.
  • Definisi Sumber Daya — Definisi sumber daya pada dasarnya adalah prototipe yang menggambarkan nama dan semua propertinya.
  • Definisi Volume — Definisi volume. Setiap sumber daya dapat terdiri dari beberapa volume, setiap volume harus memiliki ukuran.
  • Sumber — Sebuah instance perangkat blok yang dibuat, setiap sumber daya harus ditempatkan pada node tertentu dan di beberapa kumpulan penyimpanan.

Instalasi Linstor

Saya merekomendasikan menggunakan Ubuntu sebagai sistem, karena... ada untuknya siap PPA:

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

Atau Debian, di mana Linstor dapat diinstal dari repositori resmi 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

pengawas

Semuanya sederhana di sini:

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

Node penyimpanan

Kernel Linux saat ini dikirimkan dengan modul kernel in-tree DRBD8, sayangnya itu tidak cocok untuk kami dan kami perlu menginstalnya DRBD9:

apt-get install drbd-dkms

Seperti yang diperlihatkan oleh praktik, sebagian besar kesulitan muncul justru karena modul DRBD8 dimuat ke dalam sistem, dan bukan DRBD9. Untungnya, ini mudah untuk diperiksa dengan menjalankan:

modprobe drbd
cat /proc/drbd

Jika kamu melihat Versi: 9 - itu berarti semuanya baik-baik saja jika Versi: 8 - itu berarti ada yang tidak beres dan Anda perlu mengambil langkah tambahan untuk mengetahui alasannya.

Sekarang mari kita instal linstor-satelit и drbd-utils:

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

Buat sebuah cluster

Kumpulan dan node penyimpanan

Sebagai backend yang akan kami ambil LVM Tipis, Karena ini adalah yang paling sederhana dan mendukung snapshot.
Mengatur lvm2, jika Anda belum melakukannya, mari buat kumpulan ThinLVM di semua node penyimpanan kami:

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

Semua tindakan lebih lanjut dapat dilakukan langsung di pengontrol:

Mari tambahkan node kita:

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 kumpulan penyimpanan:

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 periksa kumpulan yang dibuat:

linstor storage-pool list

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

+------------------------------------------------- --------------------------------------------------- ----+ | Kolam Penyimpanan | simpul | Sopir | Nama Kolam | Kapasitas Gratis | Kapasitas Total | MendukungSnapshots | |------------------------------------------------ - ---------------------------------- - - ---| | data | simpul1 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | | data | simpul2 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | | data | simpul3 | LVM_THIN | drbdpool/thinpool | 64 GiB | 64 GiB | benar | +------------------------------------------------- --------------------------------------------------- ----+

sumber daya DRBD

Sekarang mari kita coba membuat sumber DRBD baru kita:

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

Mari kita periksa sumber daya yang dibuat:

linstor resource list 

+------------------------------------------------- --------------------------------------------------- ---+ | simpul | Sumber Daya | Kolam Penyimpanan | VolumeNr | KecilNr | Nama Perangkat | Dialokasikan | Sedang Digunakan | Negara | |------------------------------------------------ - ---------------------------------- - - --| | simpul1 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Tidak terpakai | Terkini | | simpul2 | myres | data | 0 | 1084 | /dev/drbd1084 | 52 KiB | Tidak terpakai | Terkini | +------------------------------------------------- --------------------------------------------------- ---+

Besar! — kita melihat bahwa sumber daya dibuat pada dua node pertama, kita juga dapat mencoba membuat sumber daya tanpa disk pada node ketiga:

linstor resource create --diskless node3 myres

Di node Anda akan selalu menemukan perangkat ini sebagai /dev/drbd1084 или /dev/drbd/by-res/myres/0

Beginilah cara kerja Linstor, Anda dapat memperoleh informasi lebih lanjut dari dokumentasi resmi.

Sekarang saya akan memberi tahu Anda cara mengintegrasikannya dengan OpenNebula

Menyiapkan OpenNebula

Saya tidak akan membahas terlalu jauh proses setup OpenNebula, karena... semua langkah dijelaskan secara rinci di dokumentasi resmi, yang saya sarankan Anda hubungi, saya hanya akan memberi tahu Anda tentang integrasi OpenNebula dengan Linstor.

linstor_un

Untuk mengatasi masalah ini, saya menulis driver saya sendiri - linstor_un, saat ini tersedia sebagai plugin dan harus diinstal secara terpisah.

Seluruh instalasi dilakukan pada node OpenNebula frontend dan tidak memerlukan tindakan tambahan pada node komputasi.

Pertama-tama, kita perlu memastikan bahwa kita memilikinya jq и linstor-klien:

apt-get install jq linstor-client

Tim linstor node list harus menampilkan daftar node. Semua node komputasi OpenNebula harus ditambahkan ke kluster Linstor.

Unduh dan instal plugin:

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 ke konfigurasi OpenNebula, untuk melakukan ini kita ikuti langkah-langkah sederhana yang dijelaskan di sini.

Kemudian mulai ulang OpenNebula:

systemctl restart opennebula

Dan tambahkan penyimpanan 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 penyimpanan gambar:

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 menampilkan jumlah replika data yang akan dibuat untuk setiap gambar baru di OpenNebula.
  • Parameter CLONE_MODE menunjukkan dengan tepat bagaimana gambar akan dikloning saat membuat mesin virtual baru, snapshot — akan membuat snapshot gambar dan menyebarkan mesin virtual dari snapshot tersebut, copy — akan membuat salinan lengkap gambar untuk setiap mesin virtual.
  • В BRIDGE_LIST Disarankan untuk menentukan semua node yang akan digunakan untuk melakukan operasi kloning gambar.

Untuk daftar lengkap parameter yang didukung, lihat README proyek.

Ini menyelesaikan pengaturan, sekarang Anda dapat mengunduh beberapa alat dari yang resmi Pasar OpenNebula dan membuat mesin virtual darinya.

а а оект:
https://github.com/OpenNebula/addon-linstor_un

Sumber: www.habr.com

Tambah komentar