Proxmox के लिए LINSTOR स्टोरेज की तैनाती

छवि


LINBIT ने हाल ही में कई DRBD सरणियों को ऑर्केस्ट्रेट करने और प्रबंधित करने के लिए अपना नया समाधान जारी किया।


उदाहरण के लिए, आपके पास कई नोड्स हो सकते हैं और प्रत्येक का अपना LVM या ZFS पूल होगा जिसमें LINSTOR स्वचालित रूप से नए वॉल्यूम बनाएगा और DRBD प्रोटोकॉल का उपयोग करते हुए नोड्स के बीच उनकी प्रतिकृति बनाएगा।


LINSTOR पतली-प्रावधान, स्नैपशॉट और कई अन्य दिलचस्प चीजों का समर्थन करता है।
यह समाधान आभासी मशीनों और कंटेनरों के लिए अच्छी तरह से अनुकूल है।


LINSTOR उपग्रह


मेरा मानना ​​है कि आपके पास पहले से ही एक Proxmox क्लस्टर है, मेरे पास तीन नोड्स pve1 , pve2 और pve3


इसलिए पहला कदम है कि प्रत्येक नोड पर कर्ब- मॉड्यूल स्थापित करना और कर्नेल मॉड्यूल का निर्माण करना


लाइनर रिपॉजिटरी को जोड़ें और कर्नेल-हेडर , साथ ही साथ सभी आवश्यक पैकेजों को स्थापित करें:


 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 

स्थापना के बाद, कर्नेल मॉड्यूल के अपने संस्करण की जाँच करें:


 modprobe drbd cat /proc/drbd 

यदि आप संस्करण 8 देखते हैं, तो कुछ गलत हो गया है और कर्नेल इन-ट्री मॉड्यूल लोड हो गया है, सीधे dkms मॉड्यूल के निर्माण के बारे में अधिक जानने के लिए dkms status जांचें।
LINSTOR के लिए आपको DRBD संस्करण 9 का उपयोग करना चाहिए।


अगला, प्रत्येक नोड पर, linstor-proxmox और linstor-satellite संकुल स्थापित करें:


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

LINSTOR नियंत्रक


हम एलएक्ससी कंटेनर के अंदर नियंत्रक को तैनात करेंगे।


डेबियन टेम्पलेट डाउनलोड करें:


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

अब नियंत्रक के लिए एक कंटेनर बनाएँ:


 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 

कंटेनर चलाएँ और उसे दर्ज करें:


 pct start 100 pct exec 100 bash 

अद्यतन स्थापित करें:


 apt-get update apt-get -y upgrade 

Linstor रिपॉजिटरी जोड़ें और linstor- कंट्रोलर और 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 को एक कॉन्फ़िगर लोकेल की आवश्यकता होती है। स्थानीय कॉन्फ़िगर करें:


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

चलो समय क्षेत्र अभी सेट करें:


 dpkg-reconfigure tzdata 

तिजोरी का विन्यास


नोड बनाएँ:


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

प्रत्येक नोड के लिए, हम एक अतिरिक्त इंटरफ़ेस का वर्णन करते हैं जिसका उपयोग 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 

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 ┊ ╰──────────────────────────────────────────────────────────────╯ 

पूल बनाएँ:


प्रत्येक नोड पर, आपको ड्रम के लिए lvm थिन-पूल तैयार करना होगा:


 lvcreate -L 800G --thinpool drbdpool pve 

अब आप उन्हें लिन्स्टर में जोड़ सकते हैं:


 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 

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 

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 ╰─────────────────────────────────────────────────────────────────────────────────────────── 

अब हम अपने नए स्टोरेज को Proxmox config में जोड़ सकते हैं:


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

नियंत्रक के लिए हा सेटअप


अब हम अपने linstor कंटेनर को linstor storage में transfer करेंगे।


पहले हमें इसके लिए एक वर्चुअल डिस्क बनाने की आवश्यकता है:


 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 

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 ┊ ╰──────────────────────────────────────────╯ 

डिफ़ॉल्ट रूप से, लिनस्टोर-सैटेलाइट सेवा शुरू होने के समय सभी संसाधनों के कॉन्फ़िगरेशन को हटा देता है, फिर यह लाइनस्टर-नियंत्रक से एक नए कॉन्फ़िगरेशन की उम्मीद करता है, लेकिन अगर हम डेटा के रूप में उसी स्थान पर लिनस्टर-नियंत्रक रखते हैं , तो हमें एक विकल्प जोड़कर इसके संसाधन के लिए एक अपवाद बनाना होगा --keep-res=vm-100 सभी नोड्स पर लिन्स्टर-सैटेलाइट के लिए --keep-res=vm-100 :


 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 

यह क्रिया vm-100-disk-0 संसाधन को हर बार शुरू होने से हटाने से रोकती है।


अब हम लिन्स्टर-नियंत्रक कंटेनर को रोकते हैं और स्थानीय डिस्क से सभी डेटा को ड्रब डिस्क में स्थानांतरित करते हैं।


 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 

कंटेनर कॉन्फ़िगर अपडेट करें:


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

कंटेनर चलाएँ, और यदि सब कुछ ठीक है, तो पुरानी डिस्क को हटा दें:


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

अब हमें केवल प्रॉक्समॉक्स हा-मैनेजर में अपना कंटेनर जोड़ने की आवश्यकता है:


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

लाभ


प्रदर्शन और ट्यूनिंग


फिलहाल, नियंत्रक की वैश्विक सेटिंग्स को बदलने के लिए, आपको नियंत्रक पर प्रमाणीकरण को अक्षम करना होगा:



विभाजित मस्तिष्क स्थितियों को स्वचालित रूप से हल करने के लिए, नियंत्रक के लिए निम्नलिखित विकल्प जोड़ें:


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

मेरे 10G नेटवर्क के लिए, मैंने निम्नलिखित सेटिंग्स को त्वरित सिंक्रनाइज़ेशन के लिए सबसे इष्टतम पाया:


 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/hi423101/


All Articles