
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