Menyebarkan Penyimpanan LINSTOR untuk Proxmox

gambar


LINBIT baru-baru ini merilis solusi baru mereka untuk mengatur dan mengelola beberapa array DRBD.


Sebagai contoh, Anda dapat memiliki beberapa node dan masing-masing akan memiliki kumpulan LVM atau ZFS sendiri di mana LINSTOR akan secara otomatis membuat volume baru dan mereplikasi mereka di antara node menggunakan protokol DRBD.


LINSTOR mendukung provisi tipis, snapshot, dan banyak hal menarik lainnya.
Solusi ini sangat cocok untuk mesin dan wadah virtual.


Satelit LINSTOR


Saya percaya bahwa Anda sudah memiliki cluster Proxmox, saya punya tiga node pve1 , pve2 dan pve3 .


Jadi langkah pertama adalah menginstal drbd-utils dan membangun modul kernel pada setiap node.


Tambahkan repositori linstor dan instal kernel-header , serta semua paket yang diperlukan darinya:


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update apt-get -y install pve-headers apt-get -y install drbd-dkms drbdtop 

Setelah instalasi, mari kita periksa versi modul kernel Anda:


 modprobe drbd cat /proc/drbd 

Jika Anda melihat versi 8, maka ada yang tidak beres dan modul kernel-in kernel telah dimuat, periksa dkms status untuk mempelajari lebih lanjut tentang membangun modul dkms secara langsung.
Untuk LINSTOR Anda harus menggunakan DRBD versi 9.


Selanjutnya, pada setiap node, instal paket linstor-proxmox dan linstor-satelit :


 apt-get -y install linstor-proxmox linstor-satellite systemctl start linstor-satellite.service systemctl enable linstor-satellite.service 

Kontroler LINSTOR


Kami akan menyebarkan controller di dalam wadah LXC.


Unduh templat debian:


 wget http://download.proxmox.com/images/system/debian-9.0-standard_9.3-1_amd64.tar.gz -P /var/lib/vz/template/cache/ 

Sekarang buat wadah untuk pengontrol:


 pct create 100 local:vztmpl/debian-9.0-standard_9.3-1_amd64.tar.gz \ --hostname=linstor-controller \ --net0=name=eth0,bridge=vmbr0,gw=10.1.0.1,ip=10.1.0.123/16 

Jalankan wadah dan masukkan:


 pct start 100 pct exec 100 bash 

Instal pembaruan:


 apt-get update apt-get -y upgrade 

Tambahkan repositori linstor dan instal linstor-controller dan linstor-client :


 wget -O- https://packages.linbit.com/package-signing-pubkey.asc | apt-key add - echo "deb http://packages.linbit.com/proxmox/ proxmox-5 drbd-9.0" \ > /etc/apt/sources.list.d/linbit.list apt-get update && apt-get install -y linstor-controller linstor-client systemctl start linstor-controller.service systemctl enable linstor-controller.service 

Linstor membutuhkan lokal yang dikonfigurasi. Konfigurasikan lokal:


 sed -i '/en_US.UTF-8 UTF-8/ s/^# //' /etc/locale.gen locale-gen 

Mari segera siapkan zona waktu:


 dpkg-reconfigure tzdata 

Konfigurasi kubah


Buat simpul:


 linstor node create pve1 10.1.0.11 linstor node create pve2 10.1.0.12 linstor node create pve3 10.1.0.13 

Untuk setiap node, kami menjelaskan antarmuka tambahan yang akan digunakan untuk replikasi DRBD:


 linstor node interface create pve1 data 10.2.0.11 linstor node interface create pve2 data 10.2.0.12 linstor node interface create pve3 data 10.2.0.13 

Contoh output dari perintah linstor node list :


 ╭──────────────────────────────────────────────────────────────╮ ┊ Node ┊ NodeType ┊ Addresses ┊ State ┊ ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╡ ┊ pve1 ┊ SATELLITE ┊ 10.0.1.11,10.0.2.11:3366 (PLAIN) ┊ Online ┊ ┊ pve2 ┊ SATELLITE ┊ 10.0.1.12,10.0.2.12:3366 (PLAIN) ┊ Online ┊ ┊ pve3 ┊ SATELLITE ┊ 10.0.1.13,10.0.2.13:3366 (PLAIN) ┊ Online ┊ ╰──────────────────────────────────────────────────────────────╯ 

Buat kumpulan:


Pada setiap node, Anda harus menyiapkan lvm thin-pool untuk drbd:


 lvcreate -L 800G --thinpool drbdpool pve 

Sekarang Anda dapat menambahkannya ke linstor:


 linstor storage-pool create lvmthin pve1 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve2 drbdpool pve/drbdpool linstor storage-pool create lvmthin pve3 drbdpool pve/drbdpool 

Mari konfigurasikan kumpulan untuk menggunakan antarmuka data :


 linstor storage-pool set-property pve1 drbdpool PrefNic data linstor storage-pool set-property pve2 drbdpool PrefNic data linstor storage-pool set-property pve3 drbdpool PrefNic data 

Contoh output dari perintah linstor storage-pool list :


 ╭─────────────────────────────────────────────────────────────────────────────────────────── ┊ StoragePool ┊ Node ┊ Driver ┊ PoolName ┊ FreeCapacity ┊ TotalCapacity ┊ Support ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ ┊ drbdpool ┊ pve1 ┊ LvmThinDriver ┊ hv1/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ┊ drbdpool ┊ pve1 ┊ LvmThinDriver ┊ hv1/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ┊ drbdpool ┊ pve3 ┊ LvmThinDriver ┊ hv3/drbdpool ┊ 800 GiB ┊ 800 GiB ┊ true ╰─────────────────────────────────────────────────────────────────────────────────────────── 

Sekarang kita dapat menambahkan penyimpanan baru ke konfigurasi Proxmox:


 cat >> /etc/pve/storage.cfg <<EOF drbd: drbdpool content rootdir,images controller 10.1.0.123 controllervm 100 redundancy 3 EOF 

Pengaturan HA untuk controller


Sekarang kami akan mentransfer wadah linstor kami ke penyimpanan linstor.


Pertama-tama kita perlu membuat disk virtual untuk itu:


 pct exec 100 bash linstor resource-definition create vm-100-disk-0 linstor volume-definition create vm-100-disk-0 4G linstor resource create vm-100-disk-0 --auto-place 3 -s drbdpool 

Contoh output dari perintah linstor resource list :


 ╭──────────────────────────────────────────╮ ┊ ResourceName ┊ Node ┊ Port ┊ State ┊ ╞┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄╡ ┊ vm-100-disk-0 ┊ pve1 ┊ 7000 ┊ UpToDate ┊ ┊ vm-100-disk-0 ┊ pve2 ┊ 7000 ┊ UpToDate ┊ ┊ vm-100-disk-0 ┊ pve3 ┊ 7000 ┊ UpToDate ┊ ╰──────────────────────────────────────────╯ 

Secara default, linstor-satelit menghapus konfigurasi semua sumber daya pada saat layanan dimulai, maka ia mengharapkan konfigurasi baru dari pengontrol-linstor , tetapi jika kita menyimpan pengontrol-linstor di tempat yang sama dengan data, kita harus membuat pengecualian untuk sumber dayanya dengan menambahkan opsi. --keep-res=vm-100 untuk linstor-satelit pada semua node:


 echo -e "[Service]\nExecStart=\nExecStart=/usr/share/linstor-server/bin/Satellite --logs=/var/log/linstor-satellite --config-directory=/etc/linstor --keep-res=vm-100" | SYSTEMD_EDITOR=tee systemctl edit linstor-satellite.service 

Tindakan ini harus mencegah sumber daya vm-100-disk-0 dihapus setiap kali dimulai.


Sekarang kita menghentikan wadah linstor-controller dan mentransfer semua data dari disk lokal ke disk drbd.


 pct shutdown 100 dd if=/var/lib/vz/images/100/vm-100-disk-0.raw of=/dev/drbd/by-res/vm-100-disk-0/0 bs=8M status=progress e2fsck -f /dev/drbd/by-res/vm-100-disk-0/0 resize2fs /dev/drbd/by-res/vm-100-disk-0/0 

Perbarui konfigurasi wadah:


 sed -i '/^rootfs:/d' /etc/pve/lxc/100.conf echo 'rootfs: drbdpool:vm-100-disk-0,size=4G' >> /etc/pve/lxc/100.conf 

Jalankan wadah, dan jika semuanya baik-baik saja, hapus disk lama:


 pct start 100 rm -f /var/lib/vz/images/100/vm-100-disk-0.raw 

Sekarang kita hanya perlu menambahkan kontainer kita ke proxmox ha-manager :


 ha-manager add ct:100 --max_relocate=3 --max_restart=3 

KEUNTUNGAN


Performa dan penyetelan


Saat ini, untuk mengubah pengaturan global controller, Anda harus menonaktifkan otentikasi pada controller:



Untuk secara otomatis menyelesaikan situasi otak terpecah, tambahkan opsi berikut untuk pengontrol:


 linstor controller drbd-options \ --after-sb-0pri=discard-zero-changes \ --after-sb-1pri=discard-secondary \ --after-sb-2pri=disconnect 

Untuk jaringan 10G saya, saya menemukan pengaturan berikut paling optimal untuk sinkronisasi cepat:


 linstor controller drbd-options \ --max-buffers=36864 \ --rcvbuf-size=2097152 \ --sndbuf-size=1048576 linstor controller drbd-options \ --c-fill-target=10240 \ --c-max-rate=737280 \ --c-min-rate=20480 \ --c-plan-ahead=10 

Source: https://habr.com/ru/post/id423101/


All Articles